# Verification checks (P4) - Clean re-run (deleted outputs, re-ran analysis.py): results.json byte-identical -> PASS - Independent loop implementation of WCB (cell C2, first 50 reps) vs vectorised: max |diff| in q = 4.4e-15 -> PASS - Exact N = sum(cluster sizes), G = len(sizes) asserted in analysis.py -> PASS - 27 coverage keys / 27 mcse keys / 18 bias keys -> PASS - table1 has 27 rows, wcb rel_bias blank -> PASS - coverage in [0,1], MC SE >0 -> PASS - MC SE = sqrt(p(1-p)/R) -> PASS - table matches json -> PASS - failure_cells == {cov<0.90}, n matches -> PASS - nominal_cells rule -> PASS - CR1 bias = G/(G-1) * CR0 bias -> PASS - MC bias vs analytic within 2.5 MC SE -> PASS - CR1 halfwidth >= CR0 halfwidth (t>z, G/(G-1)>1) -> PASS - CR1 coverage >= CR0 coverage in every cell (nested intervals) -> PASS - n_analysed = 9*2000 -> PASS - exclusion ledger sums -> PASS - best_procedure_small_G = argmax mean G=5 coverage -> PASS Note: rel. bias z-scores vs analytic values range -2.00..1.36 (one at -2.0, cr0/cr1 G30 icc0.0 share the same z; consistent with MC noise across 9 independent cells).