Skip to content

A test-window read takes its levels, cells and spread target from the registration

What a test-window read still took from the command line (the Holm family's size, the cell count its bound was simulated for, the spread target, and which development pilot calibrated the simulation) now comes from the registration. registered_read(org) in sphragis/experiment/decomposition.py gives a Gerrit organization the Holm levels of design(ADMITTED_ORGANIZATIONS) and its H1 cell count, a GitHub member 97.5% alone and one cell, and both the spread K was sized on (sizing_bound_90, as "Stated power" states the bounds). ADMITTED_ORGANIZATIONS is None until one commit freezes the admitted set before any test window, and a read is refused until its organization is frozen. partition_pilot.py derives these and refuses a flag that differs. The report records the spread targets recomputed from the --sizing pilot (spread_targets in partitions.py, shared with partition_sensitivity.py) and those the simulation was calibrated to, and require_test_read and the gate refuse a pair that differ beyond a relative 1e-9 (the chi-squared bounds pass through libm, whose last bits can differ between the cluster and the reading machine). That ties the two by content without rerunning the simulations. Once ADMITTED_ORGANIZATIONS is frozen, decomposition_gate refuses any other admitted set. require_test_read checks the report's levels, intervals, spread target and cell count against registered_read. replication_gate now takes each member's simulation artifact and reads the bound from it, where it took a bound from its caller and could only check that bound against the one the cell recorded. With OpenStack and Wikimedia admitted and no H2 cell, the family is H1 alone and a test read is at 95%; both levels stay in the simulations, so Qt and Chromium's admission changes nothing that is already computed. Decided here, and written into the Pass rule: the registration described only the two-hypothesis case ("both are read on a two-sided 97.5% interval"), and a review read that as requiring 97.5% even with no H2 hypothesis. Holm with one hypothesis gives it the whole family-wise level, one-sided 0.025, which is what decomposition_gate has computed since it was written (holm_levels(len(confirmatory))); reading H1 at 97.5% then would spend power on a hypothesis that does not exist. Stage 1's analysis section gets the same sentence.