Files
troupe-standup/wizard-work/sol/_build_triage_seed_manifest.py
T

66 lines
1.8 KiB
Python

#!/usr/bin/env python3
import json, re, hashlib, datetime
SEED = "/root/troupe-standup/inbox/seed-2026-09-26.json"
OUT = "/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 = ev.strip()
s = re.sub(r'\s+', ' ', s)
return hashlib.sha256(s.encode('utf-8')).hexdigest()
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
out = {
"artifact": "triage-seed-2026-09-26.json",
"source": "inbox/seed-2026-09-26.json",
"generated_at": datetime.datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ"),
"lane": "Triage - everyday Q&A and classification",
"aggregate": {
"total": len(items),
"decided": len(d["decided"]),
"pending": len(d["pending"]),
"tiers": tally,
},
"items": items,
}
with open(OUT, "w") as f:
json.dump(out, f, indent=2)
print("id | escalated_by | tier | grade | sha256prefix")
for it in items:
print(f"{it['id']} | {it['escalated_by']} | {it['tier']} | {it['grade']!r} | {it['sha256_evidence'][:12]}")
print("tally:", tally)
print("wrote", OUT)