Spaces:
Running
Running
File size: 1,700 Bytes
16ff49b | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | """Read-only check: project every prebaked case to its public view and report which
rich payload each clue gets. Fails (exit 1) if any case ends up all-paper."""
from __future__ import annotations
import sys
from collections import Counter
from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parents[1] / "src"))
from case_zero.api.case_adapter import casefile_to_public # noqa: E402
from case_zero.persistence.case_store import load_case # noqa: E402
from case_zero.persistence.paths import prebaked_cases_dir # noqa: E402
def payload_kind(ev) -> str:
if ev.thread:
return "thread"
if ev.transcript:
return "voicemail"
if ev.rows:
return "keycard"
if ev.type == "IMAGE":
return "cctv" if ev.icon == "cctv" else "photo"
return "paper"
def main() -> int:
hist: Counter[str] = Counter()
all_paper: list[str] = []
for path in sorted(prebaked_cases_dir().glob("*.json")):
case = load_case(path)
public = casefile_to_public(case)
kinds = []
for ev in public.evidence:
kind = payload_kind(ev)
kinds.append(kind)
hist[kind] += 1
print(f"{case.case_id} | {ev.id:10s} | {ev.icon:12s} | {kind:9s} | {ev.name[:52]}")
if all(k == "paper" for k in kinds):
all_paper.append(case.case_id)
print("\n--- payload histogram:")
for kind, n in hist.most_common():
print(f"{kind:9s} {n}")
if all_paper:
print(f"\nFAIL: all-paper cases: {all_paper}")
return 1
print("\nOK: every case has at least one rich exhibit")
return 0
if __name__ == "__main__":
raise SystemExit(main())
|