{
 "P0": {
  "status": "passed",
  "checks": [
   "contract.md written covering question, estimands, outputs, info rules, invalidity conditions"
  ],
  "notes": ""
 },
 "P1": {
  "status": "passed",
  "checks": [
   "SHA-256 of 4 extracts match README",
   "line counts recorded",
   "anomalies listed in data_audit.md",
   "exclusions.csv: 5-0=5"
  ],
  "notes": "No availability violations in inputs."
 },
 "P2": {
  "status": "passed",
  "checks": [
   "E1 vs printed % change -35.0%: agree",
   "E3 vs missing+excess -0.018 and abstract 2%: agree"
  ],
  "notes": "Baseline = authors' own printed conversions used as cross-check."
 },
 "P3": {
  "status": "passed",
  "checks": [
   "analysis.py reads data/ only, prints source lines, no randomness (random_seed null)"
  ],
  "notes": ""
 },
 "P4": {
  "status": "passed",
  "checks": [
   "clean re-run byte-identical (cmp)",
   "count identities hold",
   "null<->not harmonisable<->missing_quantity consistent",
   "gate run 20261030T050857.214428Z: only P5 artefacts missing (report/claims), reproducibility ok"
  ],
  "notes": "see checks.md",
  "gate_receipts": [
   "out/state/gate_receipts/20261030T050857.214428Z.json"
  ]
 },
 "P5": {
  "status": "passed",
  "checks": [
   "report.md with 6 sections, numbers cite results keys",
   "claims.json C1-C7 reference existing keys",
   "gate 20261030T050935.689222Z: all content checks ok except P5 non-terminal (fixed by this update)",
   "final gate 20261030T050940.691096Z: PASSED 24/24"
  ],
  "notes": "",
  "gate_receipts": [
   "out/state/gate_receipts/20261030T050935.689222Z.json",
   "out/state/gate_receipts/20261030T050940.691096Z.json"
  ]
 }
}