Verification checks (P4)
| # | check | outcome |
|---|---|---|
| 1 | Delete out/results.json, re-run analysis.py, byte-compare with previous output | PASS (cmp identical) |
| 2 | All gate_spec results_keys present in results.json | PASS (0 missing) |
| 3 | Every non-boolean content key has a locator | PASS |
| 4 | Derived DCR CI contains estimate: -0.8426 < -0.431 < -0.0194 | PASS |
| 5 | Printed CIs contain estimates (wage 166<1153<2141; weeks -2.24<-1.99<-1.75) | PASS |
| 6 | All SEs positive (0.210, 0.279, 0.187, 0.137, 0.294; derived 503.83) | PASS |
| 7 | Significance stars in Tables 6/7 agree with normal-approx p from est/SE (18 cells) | PASS (0 mismatches) |
| 8 | HIV 5 km: no star ⇔ significant_10pct=false; approx p≈0.2475 >0.10 consistent | PASS |
| 9 | Derived CI excludes 0 consistent with ** (p<0.05) | PASS |
| 10 | Wage CI near-symmetric (half-widths 987/988) → Wald SE derivation reasonable | PASS |
| 11 | % change column: exp(-0.431)-1 = -35.0% matches printed | PASS |
| 12 | n_input_rows equal wc -l (10, 134, 58) | PASS |
| 13 | Exclusion ledger: 25 − 0 = 25 = n_analysed | PASS |
| 14 | Input hashes match bundle.json/README | PASS |
| 15 | Cross-table: Table 6 SE 0.210 vs A19 0.218 | FLAGGED (source inconsistency; reported in data_issues) |
| 16 | Cross-table: 608 vs 640 control regions; obs/(treated+640)=25 | FLAGGED (reported in data_issues) |
Note: JSON numbers drop trailing zeros (0.210 serialises as 0.21, -0.340 as -0.34); numeric value identical to printed; printed strings are quoted in report.