# 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.