1# Verification checks (P4) — 2026-10-302Reproducibility: deleted results.json/table1.csv/figure1.png/exclusions.csv, ran `out/analysis.py` twice; results.json byte-identical (cmp), table1.csv and figure1.png identical SHA-1. PASS.34Internal consistency (all executed by a separate script, all PASS):5- n_sub1 (96) + n_sub2 (144) = n_analysed = 240.6- Exclusion ledger: 314 merged quarters − 26 (post-2019Q4) − 48 (pre-1960Q1) = 240; chain n_after→n_before consistent. (The merged panel of 314 already excludes 2025Q4, which has only 2 non-missing months; GDPC1 1947Q1–Q4 has no UNRATE overlap.)7- 1960Q1 values recomputed by hand from raw CSV: Δu = −0.4667 pp, g = 2.2237 % — match pipeline.8- Independent numpy lstsq OLS reproduces α, β to 1e-12.9- SEs positive; 95% CI contains β; conclusion `negative_effect` ⇔ CI upper < 0; `unstable` ⇔ Chow p < 0.05.10- R² = 1 − (model_metric/baseline_metric)² holds; model_metric < baseline_metric.11- table1.csv matches results.json; n column = 240/96/144.12- Last quarter used is 2019Q4 (information rule); sample_start/end strings correct.13- Magnitude: β = −0.256 within the usual quarterly Okun range (roughly −0.2 to −0.4); classical OLS SE 0.020 < HAC SE 0.036 (positive autocorrelation, as expected); HAC SE stable across lags 2–12 (0.034–0.037).14No failed checks.15