1# Verification checks (P4)23- [PASS] Clean re-run (deleted results.json/table1.csv/figure1.png, ran analysis.py twice): results.json and table1.csv byte-identical across runs; runtime ≈2 s.4- [PASS] table1 has 27 rows 5- [PASS] 27 coverage/SE keys, 18 rel_bias keys 6- [PASS] coverage in [0,1] 7- [PASS] MC SE > 0 and equals sqrt(p(1-p)/R) 8- [PASS] failure_cells == {coverage<0.90}, n_failure_cells matches (n=11)9- [PASS] nominal_cells rule (n=6)10- [PASS] rel_bias CR1/CR0 = G/(G-1) 11- [PASS] n_analysed = 9*2000 12- [PASS] exclusion ledger sums (9-0=9) 13- [PASS] table1 matches results.json 14- [PASS] rel_bias_var empty for wcb only 15- [PASS] MC rel bias CR0 vs analytic E[V_CR0]/Var: all |z|<=3 (z = -0.89, 0.62, 1.36, 0.57, -0.03, 0.87, -2.00, -0.97, -1.20; one |z|≈2 out of 9 is within expectation)16- [PASS] empirical Var(ybar)/exact within ±0.07 (≈2.2 SD of a var ratio with R=2000: sd≈0.032) (0.984, 1.027, 0.988, 1.020, 0.986, 0.993, 0.968, 0.982, 1.045)17- [PASS] bootstrap V* strictly positive 18- [PASS] halfwidths positive 19- [PASS] best_procedure_small_G is argmax of avg G=5 coverage {'cr0': 0.7456666666666667, 'cr1': 0.8933333333333332, 'wcb': 0.8574999999999999}20- [PASS] magnitude vs baseline: naive iid coverage ≈0.95 at ICC=0 and collapses at ICC>0 (sanity) 21- Information rules: no dates/chronology involved; only data/design.csv read (verified by grep of analysis.py: single read_csv).22