fix(evidence): validate curated runtime corpus
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user