Verification checks (P4)
- Clean re-run (results.json and exclusions.csv deleted, script re-run): byte-identical results.json — PASS (run twice, incl. after adding supplementary keys; all original keys unchanged).
- OLS slope via demeaned cov/var cross-checked vs numpy lstsq on 5 replications (assert in script, tol 1e-10) — PASS.
- bias_analytical == -(1+3*0.8)/30 — PASS
- bias_mc == rho_hat_mean - rho — PASS
- bias_mc_se == rho_hat_sd_mc/sqrt(n_analysed) — PASS; se > 0 — PASS
- discrepancy_se_units identity — PASS
- 95% CI (supp_bias_mc_ci95) contains bias_mc — PASS
- se_asymptotic == sqrt((1-0.64)/30) — PASS
- Counts: n_replications 20000 − 0 removed (exclusions.csv) = n_analysed 20000 — PASS
- Magnitude vs baseline: bias_mc negative, same sign/order as analytical (ratio 1.09) — PASS; rho_hat_sd_mc same order as se_asymptotic baseline (ratio 1.36) — PASS
- Information rules: only data/design.csv read; seed from design used with default_rng; c=0; stationary y_1; fresh series per replication — PASS (code review).