Add bounded contextual entity resolution before interpretation

This commit is contained in:
Nico committed 2026-10-15 00:21:16 +02:00
1 parent 87581e5cd2
commit 4fa7fb6e74
21 files changed
+1166 -14

No files matched your search

+16
View File
@@ -98,6 +98,22 @@ class CaseAssembler:
or any(doc[f] != manifest[f] for f in ("case_id", "package_id"))):
raise CaseBuildError("PREVIOUS_CASE", "Invalid correction artifact checkpoint")
excluded.add(ref)
if details.get("operation") == "entity-resolution":
from viano_bug_analysis.analysis.entity_resolution import digest
ref = details.get("artifact_ref")
prefix = f"analysis/interpretations/{checkpoint['analysis_revision']:04d}/entity-resolution/"
doc = load(ref, "entity-resolution")
if (ref != prefix + doc["stage"] + ".json" or digest(doc) != details.get("artifact_sha256")
or doc["analysis_revision"] != checkpoint["analysis_revision"]
or any(doc[k] != manifest[k] for k in ("case_id", "package_id"))):
raise CaseBuildError("PREVIOUS_CASE", "Invalid entity resolution checkpoint")
excluded.add(ref)
if doc["stage"] == "search":
for capture_ref in doc["payload"]["capture_refs"]:
capture = read_json(reader, capture_ref, "project-capture", self.limits.max_json_bytes)
if capture_ref != prefix + "captures/" + hashlib.sha256(reader.read_bytes(capture_ref)).hexdigest() + ".json":
raise CaseBuildError("PREVIOUS_CASE", "Invalid entity resolution capture")
excluded.add(capture_ref)
if details.get("operation") in {"change-request-start", "change-request-complete", "change-request-rejected", "output-validated"}:
fields = ("context_ref", "decision_ref", "change_request_ref", "summary_ref", "failure_ref", "error_ref", "validation_ref")
for field in fields: