Verification checks (P4)
- clean re-run of out/analysis.py: results.json byte-identical: PASS
- analytic rows == n_analysed: PASS
- n_valid==n_analysed: PASS
- n_valid+n_unreadable==control: PASS
- sum recompute: PASS
- implied sum identity: PASS
- mean recompute: PASS
- median recompute: PASS
- ledger rows consistent: PASS
- ledger start==n_input_rows: PASS
- ledger end==n_analysed: PASS
- ids unique: PASS
- municipality gaps sum == n_unreadable: PASS
- implied unreadable mean plausible vs valid mean (within valid price range): PASS
- feasibility partial since n_unreadable>0: PASS