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