Verification checks (P4, 2026-10-30)
- Clean re-run (deleted results.json, analytic.csv, exclusions.csv; re-ran analysis.py): SHA-256 of all three outputs IDENTICAL
- analytic rows == n_analysed: PASS
- n_valid==n_analysed: PASS
- valid+unreadable==control: PASS
- input lines - removed == analysed: PASS
- ledger rows arithmetic: PASS
- ledger chained: PASS
- sum_valid recomputed: PASS
- implied sum identity: PASS
- mean recomputed: PASS
- median ppm2 recomputed: PASS
- unique ids: PASS
- muni shortfall sums to unreadable: PASS
- implied unread sum positive & mean plausible (within valid price range): PASS
- feasibility partial since unreadable>0: PASS
- price integers positive: PASS
- Note: no standard errors/CIs are produced (descriptive census of a file; see report Uncertainty).