- 2026-10-30 P0 passed: contract written. Fresh workspace (no prior out/).
- 2026-10-30 P1: audit written; hashes match README; issues: publication delays, benchmark revision between 2026-08 and 2026-09 vintages.
- 2026-10-30 DECISION (pre-registered before computing any out-of-sample error): own model = "base-effect drift" (BED). At origin V: ln L̂_{last+h} = ln L_last + h·μ̂ with μ̂ = mean monthly log growth over the last 12 months of vintage V (= g_last/12); forecast g_T = 100·ln(L_last/L_{T−12}) + h·g_last/12, using L_{T−12} from vintage V. Rationale: YoY growth is a sum of 12 monthly growths, 12−h of which are already published at the origin; the naive forecast replaces the h unknown months by the h oldest months of the last window (base-effect noise), BED replaces them by their 12-month average. PAYEMS/UMCSENT not used (no pre-sample model selection budget; avoiding snooping over 10 origins). Single specification, no tuning. Supplementary: moving-block bootstrap of RMSE difference, seed 20261030.
- 2026-10-30 P1 passed (audit). P2 passed: baselines naive/snaive/AR(1) computed. P3 passed: analysis.py complete, deterministic.
- 2026-10-30 P4 passed: clean re-run identical; all checks in checks.md pass. Starting P5.
- 2026-10-30 P5 passed: report.md and claims.json written. Task complete.