1# Checks (P4)2- Re-run analysis.py twice: results.json byte-identical (cmp) — PASS3- len(analytic.csv)=308=n_analysed — PASS4- n_months_growth+n_months_missing_growth=309 window months — PASS5- exclusion ledger: n_before-n_removed=n_after each row, chained, final=308 — PASS6- mean of analytic growth equals mean_growth_12m; weighted sub-period means (156,152) reproduce overall mean (diff 5e-11, rounding) — PASS7- vintage_used: 156 months 2016 vintage (2001-2013), 152 months 2026 vintage — consistent with rule — PASS8- no NaN growth in analytic.csv; dates 2001-01..2026-09 — PASS9- magnitudes: max 8.98% 2022-06, min -1.96% 2009-07 consistent with known CPI history; mean 2.57% plausible — PASS10- Date grids of both vintages contiguous, no duplicates (asserted in script) — PASS11