feat: P3 effective configuration, memory root, and revision-scoped records

This commit is contained in:
2026-08-12 16:01:25 +02:00
parent beaba548c1
commit e23e526966
21 changed files with 1108 additions and 44 deletions
+28 -19
View File
@@ -2,10 +2,10 @@
from __future__ import annotations
import atexit
import fcntl
import hashlib
import json
import fcntl
import atexit
import os
import re
import shutil
@@ -25,7 +25,6 @@ from tht.jobs.runner import (
seal_stage_artifacts,
)
DWH_STAGE_IDS = ("introspect", "lsh")
_RUN_ID = re.compile(r"^[0-9a-f]{32}$")
_SAFE_FILE = re.compile(r"^[A-Za-z0-9_-]+\.(?:pkl|json)$")
@@ -48,25 +47,35 @@ def config_dwh_binding(cfg) -> dict[str, str]:
config_source = getattr(cfg, "_config_source", None)
if not isinstance(workspace_id, str) or not isinstance(config_source, str):
raise CorruptCheckpointError("DWH workspace identity is unavailable; reload configuration")
model_dump = getattr(cfg, "model_dump", None)
if callable(model_dump):
payload = model_dump(mode="json")
if not isinstance(payload, dict):
raise CorruptCheckpointError("DWH workspace configuration is unavailable; reload configuration")
# Session persistence has no bearing on schema/LSH artifacts. Excluding it keeps an
# opt-in session-storage deployment from invalidating an otherwise identical DWH cache.
payload.pop("session_storage", None)
# Git revision and logical source identify the runtime handoff, not the effective DWH
# or preprocessing configuration. They must not invalidate reusable DWH generations.
payload.pop("runtime_identity", None)
config_fingerprint = fingerprint(json.dumps(payload, separators=(",", ":"), ensure_ascii=False))
else:
# Lightweight test doubles predating Pydantic's model_dump() retain the legacy seam.
config_fingerprint = fingerprint(cfg.model_dump_json())
try:
# P3: the versioned canonical effective configuration. Only DWH-affecting fields are
# included, so content-only/Evidence-only changes reuse the generation; a changed
# endpoint/transport/database/schema/identity fails closed via the OWNER.json compare.
from tht.config import (
effective_config_fingerprint,
effective_config_input_fingerprint,
)
config_fingerprint = effective_config_fingerprint(cfg)
input_fingerprint = effective_config_input_fingerprint(workspace_id, cfg)
except Exception: # noqa: BLE001
# Lightweight test doubles predating the canonical form retain the legacy seam: the
# model dump minus session persistence and runtime identity (unchanged behavior).
model_dump = getattr(cfg, "model_dump", None)
if callable(model_dump):
payload = model_dump(mode="json")
if not isinstance(payload, dict):
raise CorruptCheckpointError("DWH workspace configuration is unavailable; reload configuration")
payload.pop("session_storage", None)
payload.pop("runtime_identity", None)
config_fingerprint = fingerprint(json.dumps(payload, separators=(",", ":"), ensure_ascii=False))
input_fingerprint = fingerprint(config_source)
else:
config_fingerprint = fingerprint(cfg.model_dump_json())
input_fingerprint = fingerprint(config_source)
return {
"workspace_id": workspace_id,
"config_fingerprint": config_fingerprint,
"input_fingerprint": fingerprint(config_source),
"input_fingerprint": input_fingerprint,
}