feat: P3 effective configuration, memory root, and revision-scoped records
This commit is contained in:
@@ -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,
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user