| Clean re-run (results.json + exclusions.csv deleted, script re-run) gives byte-identical results.json |
PASS |
| tau_ci_low < tau_hat < tau_ci_high |
PASS |
| se_iid > 0, se_cluster > 0 |
PASS |
| CI symmetric around tau_hat (t(39) quantile × se_cluster) |
PASS |
| tau_hat equals difference in student-weighted arm means (51.282 − 50.321) |
PASS |
| effect_significant_5pct == (p_value < 0.05) == (CI excludes 0) |
PASS (all false) |
| n_analysed = n_schools × 25 = input rows = 1000; exclusion ledger removes 0 |
PASS |
| Magnitude vs baseline: se_cluster/se_iid = 2.584 vs Moulton sqrt(1+24·icc_hat) = 2.601 |
PASS (consistent) |
| Robustness: school-mean two-sample t-test SE 0.738, p 0.201 vs CR1 SE 0.729, p 0.195 |
PASS (same conclusion) |
| data/schools.csv SHA-256 unchanged |
PASS |