"""Justice Ledger + Verdict Card persistence (atomic JSON file).""" from __future__ import annotations import json import os from pathlib import Path from typing import Any LEDGER_PATH = Path(os.environ.get("LEDGER_PATH", "data/ledger.json")) def _load() -> dict[str, Any]: if not LEDGER_PATH.exists(): return {"verdicts": [], "totals": {"just": 0, "wrongful": 0, "cold": 0, "mistrial": 0}} return json.loads(LEDGER_PATH.read_text()) def record_verdict(case_id: str, suspect: str | None, method: str, outcome: str, suspicion: float) -> dict: LEDGER_PATH.parent.mkdir(parents=True, exist_ok=True) led = _load() led["verdicts"].append({ "case_id": case_id, "suspect": suspect, "method": method, "outcome": outcome, "suspicion": suspicion, }) led["totals"][outcome] = led["totals"].get(outcome, 0) + 1 LEDGER_PATH.write_text(json.dumps(led, indent=2)) return led def read_ledger() -> dict: return _load()