# Verification checks (P4) 1. Clean re-run of out/analysis.py produces byte-identical results.json (cmp) — PASS. 2. Independent recomputation: per-replication loop with np.linalg.lstsq on (1, y_{t-1}) using the same seed/draw layout reproduces rho_hat_mean and rho_hat_sd_mc exactly (diff 0.0) — PASS. statsmodels OLS on first 200 reps agrees (mean 0.6805, consistent subsample) — PASS. 3. bias_mc = rho_hat_mean - rho: 0.677659 - 0.8 = -0.122341 — PASS. 4. bias_mc_se = rho_hat_sd_mc/sqrt(20000) = 0.14792/141.42 = 0.001046 > 0 — PASS; rho_hat_sd_mc>0, se_asymptotic>0 — PASS. 5. discrepancy_se_units = (-0.122341+0.113333)/0.001046 = -8.61 — PASS. 6. bias_analytical = -(1+2.4)/30 = -0.113333; se_asymptotic = sqrt(0.36/30) = 0.10954 — PASS. 7. Counts: n_replications 20000 - removed 0 = n_analysed 20000 — PASS. 8. 95% CI for bias_mc [-0.12439, -0.12029] contains bias_mc — PASS. 9. Magnitudes: bias is about 0.83 sd of rho_hat and comparable to se_asymptotic — plausible for n=30, rho=0.8 (known downward bias). Sign negative as theory predicts — PASS.