Verification checks (P4)
- Clean re-run: deleted outputs, re-ran analysis.py; SHA-256 of results.json, analytic.csv, exclusions.csv identical: PASS
- analytic rows == n_analysed: PASS
- n_valid == n_analysed: PASS
- n_valid+n_unreadable == control: PASS
- sum recomputed from analytic.csv: PASS
- sum_valid+implied == control: PASS
- mean recomputed: PASS
- median ppm2 recomputed: PASS
- ledger rows consistent: PASS
- ledger starts at n_input_rows and ends at n_analysed: PASS
- unique sale_id in analytic: PASS
- muni gaps sum == n_unreadable: PASS
- all muni gaps >= 0: PASS
- mean between min and max price: PASS
- implied mean of unreadable within valid price range: PASS
- price per m2 range in analytic data: 1320.6 to 6923.1 CAD/m2 (plausible, no anomalies)
- Magnitude vs baseline: valid count is 97.0% of control count; valid sum is 96.8% of control sum.