{
 "P0": {
  "status": "passed",
  "checks": [
   "TASK.md read fully",
   "contract.md written"
  ],
  "notes": ""
 },
 "P1": {
  "status": "passed",
  "checks": [
   "sha256 matches bundle.json",
   "4 rows x 3 cols, no missing/duplicates",
   "parameter ranges valid",
   "exclusions.csv 4->4"
  ],
  "notes": "see data_audit.md"
 },
 "P2": {
  "status": "passed",
  "checks": [
   "baseline = direct numerical maximisation on budget line (indirect_utility_numerical) computed without closed form"
  ],
  "notes": "task names the baseline key indirect_utility_numerical"
 },
 "P3": {
  "status": "passed",
  "checks": [
   "analysis.py reads only data/, writes results.json; no randomness (random_seed null)"
  ],
  "notes": ""
 },
 "P4": {
  "status": "passed",
  "checks": [
   "clean re-run byte-identical",
   "10 consistency checks PASS (checks.md)",
   "gate run receipt 20261030T035218.782594Z.json: results keys + reproducibility ok; failures only P5 deliverables (report/claims/terminal ledger)"
  ],
  "notes": ""
 },
 "P5": {
  "status": "passed",
  "checks": [
   "report.md with 6 sections, keys cited",
   "claims.json 4 claims referencing existing keys",
   "final gate PASSED 0/29 failed, receipt 20261030T035241.548272Z.json"
  ],
  "notes": ""
 }
}