fix(evidence): validate curated runtime corpus

This commit is contained in:
2026-08-25 01:59:27 +02:00
parent 9f0184388d
commit 0caa747914
11 changed files with 107 additions and 14 deletions
+13
View File
@@ -75,6 +75,18 @@ def _candidate_evaluator(cfg, *, vector_store, embedder):
return evaluate
def _validate_materialized_curated_corpus(cfg) -> None:
"""Fail closed on a v2 pinned filesystem corpus before any vector write is possible."""
if cfg.evidence is None or cfg.evidence.schema_version != 2:
return
if not any(source.type == "filesystem" for source in cfg.evidence.sources):
return
from tht.evidence import validate_workspace_evidence
if not validate_workspace_evidence(_evaluation_workspace_root(cfg)).publishable:
raise RuntimeError("curated Evidence corpus is invalid")
def _evidence_json_payload(cfg, payload: dict, *, code: str, error: str | None = None) -> dict:
value = {
**payload,
@@ -158,6 +170,7 @@ def run_from_config(config: Path, *, dry_run: bool = False, resume: str | None =
cfg = _load_config_or_exit(config)
if cfg.embeddings is None:
raise RuntimeError("embeddings are not configured")
_validate_materialized_curated_corpus(cfg)
corpus_root = cfg.paths.artifacts.parent / "corpus"
vector_store = build_vector_store(cfg, require_write=True)
embedder = make_embedder(cfg.embeddings)