# Verification checks (P4) - [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. - [PASS] table1 has 27 rows - [PASS] 27 coverage/SE keys, 18 rel_bias keys - [PASS] coverage in [0,1] - [PASS] MC SE > 0 and equals sqrt(p(1-p)/R) - [PASS] failure_cells == {coverage<0.90}, n_failure_cells matches (n=11) - [PASS] nominal_cells rule (n=6) - [PASS] rel_bias CR1/CR0 = G/(G-1) - [PASS] n_analysed = 9*2000 - [PASS] exclusion ledger sums (9-0=9) - [PASS] table1 matches results.json - [PASS] rel_bias_var empty for wcb only - [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) - [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) - [PASS] bootstrap V* strictly positive - [PASS] halfwidths positive - [PASS] best_procedure_small_G is argmax of avg G=5 coverage {'cr0': 0.7456666666666667, 'cr1': 0.8933333333333332, 'wcb': 0.8574999999999999} - [PASS] magnitude vs baseline: naive iid coverage ≈0.95 at ICC=0 and collapses at ICC>0 (sanity) - Information rules: no dates/chronology involved; only data/design.csv read (verified by grep of analysis.py: single read_csv).