# Verification checks (P4) — 2026-10-30 All checks were run with an inline Python script against out/results.json, out/forecasts.csv and data/. - PASS reproducibility: deleted outputs, ran analysis.py twice, and `cmp` showed results.json and forecasts.csv byte-identical. - PASS forecasts.csv has 32 rows; no missing actuals. - PASS target_date = train_last_date + h quarters for all rows. - PASS train_last_date < origin_date; the first-release vintage date of every actual is later than the origin (no look-ahead). - PASS actual = first_release_value of target quarter. - PASS naive forecast = train_last_value, and train_last_value = last value in the origin's vintage file (not the current vintage). - PASS RMSE ≥ MAE > 0 for every model/horizon. - PASS independent recomputation of naive RMSE h1/h2, relative improvements, and mean abs revision. - PASS exclusion ledger: 314 − (151+1+3) = 159 = n_analysed = n_train of ar1 at last origin. - PASS magnitudes: the model RMSEs (1.48, 1.40) are below the naive RMSEs (2.01, 2.27); every value is in plausible pp-SAAR units. The AR(1) coefficients are stable across origins (phi ≈ 0.335–0.343). - Note: the code does not import current_vintage.csv before the revision step, and the model never uses it (checked by reading the code).