60 lines
2.1 KiB
Python
60 lines
2.1 KiB
Python
#!/usr/bin/env python3
|
|
# CHECK -- re-derives the triage-seed-2026-09-26 classification from the
|
|
# raw seed and diffs it against the committed artifact. Exit 0 iff identical.
|
|
import json, re, sys
|
|
|
|
SEED = "/root/troupe-standup/inbox/seed-2026-09-26.json"
|
|
ART = "/root/troupe-standup/wizard-work/sol/triage-seed-2026-09-26.json"
|
|
|
|
def grade_of(ev):
|
|
m = re.search(r'Grade:\s*([A-Za-z0-9 ()+-]+)', ev)
|
|
return m.group(1).strip() if m else None
|
|
|
|
def has_flag(ev):
|
|
return bool(re.search(r'Flag\s+\d+\s+of\s+\d+', ev))
|
|
|
|
def tier_of(ev):
|
|
if grade_of(ev):
|
|
return "explicit_grade"
|
|
if has_flag(ev):
|
|
return "flag_only"
|
|
return "unannotated"
|
|
|
|
def sha256_norm(ev):
|
|
s = re.sub(r'\s+', ' ', ev.strip())
|
|
return __import__('hashlib').sha256(s.encode('utf-8')).hexdigest()
|
|
|
|
def derive():
|
|
d = json.load(open(SEED))
|
|
items = []
|
|
for it in d["decided"] + d["pending"]:
|
|
ev = it.get("evidence") or ""
|
|
items.append({
|
|
"id": it["id"], "escalated_by": it["escalated_by"],
|
|
"tier": tier_of(ev), "grade": grade_of(ev) or "",
|
|
"has_flag": has_flag(ev), "sha256_evidence": sha256_norm(ev),
|
|
"summary_head": (it.get("summary") or "")[:120],
|
|
})
|
|
tally = {}
|
|
for it in items:
|
|
tally[it["tier"]] = tally.get(it["tier"], 0) + 1
|
|
return {"aggregate": {"total": len(items), "decided": len(d["decided"]),
|
|
"pending": len(d["pending"]), "tiers": tally}, "items": items}
|
|
|
|
a = json.load(open(ART))
|
|
e = derive()
|
|
|
|
errors = []
|
|
if a.get("aggregate") != e["aggregate"]:
|
|
errors.append("aggregate mismatch\n actual: %r\n expected: %r" % (a.get("aggregate"), e["aggregate"]))
|
|
if len(a.get("items", [])) != len(e["items"]):
|
|
errors.append("item count mismatch %d vs %d" % (len(a.get("items", [])), len(e["items"])))
|
|
for x, y in zip(a.get("items", []), e["items"]):
|
|
if x != y:
|
|
errors.append("item %s mismatch\n actual: %r\n expected: %r" % (x.get("id"), x, y))
|
|
|
|
if errors:
|
|
print("CHECK FAIL\n" + "\n".join(errors))
|
|
sys.exit(1)
|
|
print("CHECK PASS: 13/13 items identical to a re-derive of %s" % SEED)
|