Verification checks (P4)
- Rerun from clean state (deleted out/results.json, reran analysis.py twice): byte-identical output (cmp) — PASS
- dcr_att_5km_se > 0 — PASS
- dcr_att_3km_se > 0 — PASS
- dcr_narcotics_att_3km_se > 0 — PASS
- dcr_fatal_att_1km_se > 0 — PASS
- dcr_hiv_att_5km_se > 0 — PASS
- ri_wage_ate_se_derived > 0 — PASS
- derived DCR CI contains estimate — PASS
- derived DCR CI excludes 0 (consistent with ** p<0.05) — PASS
- wage CI contains ATE — PASS
- weeks CI contains ATE and low<high — PASS
- dcr_obs_5km is int — PASS
- HIV 5km: |b/se|<1.645 consistent with no star — PASS
- narcotics 3km |b/se|>2.576 consistent with *** — PASS
- fatal 1km |b/se|>2.576 consistent with *** — PASS
- DCR 5km 1.96<|b/se|<2.576 consistent with ** — PASS
- locators: one per non-boolean key (23) — PASS
- p_value null and locator says not reported — PASS
- printed tokens decimals: 0.210, 0.279, -0.340 preserved in printed_tokens — PASS
- n_input_rows matches wc -l (10/134/58) — PASS
- control mean wage relative ATE ~3.5% as text states — PASS
- Exclusion ledger: 25 items requested, 0 removed, 25 analysed (= n_analysed) — PASS
- Note: JSON numbers cannot carry trailing zeros (0.210 is serialised as 0.21, -0.340 as -0.34); the printed strings are preserved verbatim in results.json["printed_tokens"]. Not a failure.