1# Verification checks (P4)23- Clean re-run (deleted outputs, re-ran analysis.py): results.json byte-identical -> PASS4- Independent loop implementation of WCB (cell C2, first 50 reps) vs vectorised: max |diff| in q = 4.4e-15 -> PASS5- Exact N = sum(cluster sizes), G = len(sizes) asserted in analysis.py -> PASS6- 27 coverage keys / 27 mcse keys / 18 bias keys -> PASS7- table1 has 27 rows, wcb rel_bias blank -> PASS8- coverage in [0,1], MC SE >0 -> PASS9- MC SE = sqrt(p(1-p)/R) -> PASS10- table matches json -> PASS11- failure_cells == {cov<0.90}, n matches -> PASS12- nominal_cells rule -> PASS13- CR1 bias = G/(G-1) * CR0 bias -> PASS14- MC bias vs analytic within 2.5 MC SE -> PASS15- CR1 halfwidth >= CR0 halfwidth (t>z, G/(G-1)>1) -> PASS16- CR1 coverage >= CR0 coverage in every cell (nested intervals) -> PASS17- n_analysed = 9*2000 -> PASS18- exclusion ledger sums -> PASS19- best_procedure_small_G = argmax mean G=5 coverage -> PASS2021Note: 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).22