Verification checks (P4) — 2026-10-30
All checks executed with ~/wp29/venv/bin/python on the regenerated out/results.json.
| check | outcome |
|---|---|
| Clean re-run (results.json deleted, script re-run) byte-identical to previous output | PASS |
| Derived 5 km CI [-0.843, -0.019] contains ATT -0.431 and is symmetric (±0.001 rounding) | PASS |
| Wage CI [166, 2141] contains 1153; weeks CI [-2.24, -1.75] ordered and contains -1.99 | PASS |
| All SEs (printed and derived) positive | PASS |
| Derived wage SE 503.83 implies two-sided normal p = 0.022, equal to printed p=0.022 (supports z=1.96 convention) | PASS |
| Star consistency with printed SEs (normal approx.): 5 km ATT ** (p≈0.040); HIV 5 km unstarred (p≈0.25); narcotics 3 km ***; fatal 1 km *** | PASS |
| Derived 95% CI excludes 0, consistent with ** (p<0.05) | PASS |
| Every non-boolean extracted/derived key has a locator | PASS |
| n_input_rows equals wc -l (README 10, DCR 134, RESEA 58) | PASS |
| Exclusion ledger: 22 − 0 = 22 = n_analysed | PASS |
| Table 3 col 1 Wage = Table 2 ATE Wage (cross-check) | PASS |
| Cross-table: Table 6 SE 0.210 vs Table A19 SE 0.218 for same estimate | SOURCE INCONSISTENCY — reported in data_issues, Table 6 used per key definition |
| Cross-table: control regions 608 vs 640; Obs = (640+treated)×25 | SOURCE INCONSISTENCY — reported in data_issues |
| Note: JSON serialises 0.210 as 0.21 and -0.340 as -0.34 (trailing zeros cannot be represented in a JSON number); numeric values are identical to the printed ones. |