{
 "P0": {
  "status": "passed",
  "checks": [
   "TASK.md read fully",
   "contract.md written with estimands, outputs, info rules, invalidating conditions"
  ],
  "notes": ""
 },
 "P1": {
  "status": "passed",
  "checks": [
   "SHA-256 of all 23 data files recomputed and match README",
   "row/col counts, date ranges, missing values, duplicates, gaps recorded in data_audit.md",
   "first_release.csv levels and yoy recomputed and matched shipped vintages",
   "last(V) per origin tabulated; all 20 targets present",
   "exclusions.csv written (0 removed, 80->80)"
  ],
  "notes": "RSAFS_current and first_release flagged as post-origin; used only for (d) / as actuals."
 },
 "P2": {
  "status": "passed",
  "checks": [
   "naive, snaive, AR(1) baselines computed from vintage V only; RMSE/MAE written to results.json (rmse_naive_h1=0.997, rmse_naive_h3=1.420)"
  ],
  "notes": "Baselines computed by out/analysis.py with the same evaluation rule as the model."
 },
 "P3": {
  "status": "passed",
  "checks": [
   "out/analysis.py reads only data/, writes results.json, forecasts.csv, table1.csv, figure1.png",
   "seed 20261030 fixed for bootstrap",
   "printed output consistent with results.json"
  ],
  "notes": "Model: base-effect drift, no estimated parameters, specification fixed before evaluation."
 },
 "P4": {
  "status": "blocked",
  "checks": [
   "clean re-run: results.json, forecasts.csv, table1.csv byte-identical: PASS",
   "independent recomputation of AR(1) (statsmodels), model, RMSE/MAE, DM, revision: PASS (see checks.md)",
   "first_release_vintage > origin for all 80 rows: PASS",
   "origin_date < target_date: FAIL for 40 h=1 rows by construction of TASK.md target definition (not leakage)",
   "gate run 1 receipt out/state/gate_receipts/20261030T060311.428944Z.json: failed (report/claims/phases missing at that time + forecasts_chronology)",
   "gate run 2 (end of P4/P5) receipt out/state/gate_receipts/20261030T060441.223227Z.json: 64/65 pass; only forecasts_chronology fails (task-definition conflict)",
   "gate run 3 (controller resume) receipt out/state/gate_receipts/20261030T060507.995429Z.json: only forecasts_chronology fails. Not fixable honestly: for every h=1 row the target month (last(V)+1, per TASK.md) lies entirely on or before the month-end origin (6 origins: whole target month before origin; 4 origins: target month = origin month). No date inside the target month satisfies origin_date < target_date, so passing would require writing a date outside the target month, which would falsify forecasts.csv.",
   "gate run 4 (second controller resume) receipt out/state/gate_receipts/20261030T060535.228254Z.json: only forecasts_chronology fails; unchanged conflict with TASK.md target definition; not relabelled (would falsify target_date).",
   "gate run 5 (third controller resume) receipt out/state/gate_receipts/20261030T060548.765750Z.json: only forecasts_chronology fails; same TASK.md/gate conflict; target_date not falsified."
  ],
  "notes": "Blocked solely by the gate's forecasts_chronology rule, which contradicts TASK.md's definition target=last(V)+h with target_date=YYYY-MM-01 for h=1. Not relabelled to avoid misrepresenting targets."
 },
 "P5": {
  "status": "blocked",
  "checks": [
   "report.md written with all six sections and results-key citations",
   "claims.json written (6 claims, all referencing existing keys)",
   "gate run 2 receipt out/state/gate_receipts/20261030T060441.223227Z.json: only forecasts_chronology fails",
   "gate run 3 (controller resume) receipt out/state/gate_receipts/20261030T060507.995429Z.json: only forecasts_chronology fails. Not fixable honestly: for every h=1 row the target month (last(V)+1, per TASK.md) lies entirely on or before the month-end origin (6 origins: whole target month before origin; 4 origins: target month = origin month). No date inside the target month satisfies origin_date < target_date, so passing would require writing a date outside the target month, which would falsify forecasts.csv.",
   "gate run 4 (second controller resume) receipt out/state/gate_receipts/20261030T060535.228254Z.json: only forecasts_chronology fails; unchanged conflict with TASK.md target definition; not relabelled (would falsify target_date).",
   "gate run 5 (third controller resume) receipt out/state/gate_receipts/20261030T060548.765750Z.json: only forecasts_chronology fails; same TASK.md/gate conflict; target_date not falsified."
  ],
  "notes": "All deliverables complete; blocked only because the latest gate receipt fails forecasts_chronology (see P4)."
 }
}