{
 "P0":{"status":"passed","checks":["TASK.md read fully","contract.md written with estimand, outputs, rules, invalidity conditions"],"notes":""},
 "P1":{"status":"passed","checks":["SHA-256 matches bundle.json","2000x3, 0 missing, 0 non-finite, 0 duplicates","50 firms x 40 obs balanced","only allowed input used","exclusions.csv sums: 2000-0=2000"],"notes":"No exclusions needed"},
 "P2":{"status":"passed","checks":["se_ols computed (homoskedastic baseline) and baseline_ci_* recorded"],"notes":""},
 "P3":{"status":"passed","checks":["analysis.py reads only data/, deterministic, no RNG","CR1 cluster SE with t(G-1) CI"],"notes":""},
 "P4":{"status":"passed","checks":["clean rerun byte-identical results.json","CI contains estimate","SEs positive","exclusion ledger sums","statsmodels cross-check agrees","data hash unchanged"],"notes":"see checks.md"},
 "P5":{"status":"passed","checks":["report.md has all 6 required sections citing results keys","claims.json keys all exist in results.json"],"notes":""}
}
