H1's verdict over the admitted organizations' test reads implemented¶
h1_test_gate in sphragis/experiment/decomposition.py reads H1 the way replication_gate reads
the GitHub family. It takes the organizations from ADMITTED_ORGANIZATIONS, never from its
caller, and refuses to run before they are frozen. It also refuses while H2 is confirmatory (Qt and
Chromium both admitted), because Holm cannot be read without H2 and H2's test read over partitions
is not built. It takes one partition_pilot.py test report and one simulation artifact per
admitted organization, exactly those. Each report is checked by require_readable at every
registered Holm level and by require_test_read against registered_read, and each bound is read
from the organization's own simulation (_registered_bounds, shared with replication_gate). H1
is the intersection-union over the cells at the registered levels through the existing
holm_steps, with below_sesoi and the pre-committed reading. With OpenStack and Wikimedia
admitted, H1 is read at 95% on two cells.
Beside the verdict, binding none, are four things. The first is the readings across organizations
(partial conjunction, random effects). The random-effects summary needs two organizations and
positive standard errors. With OpenStack alone admitted, or with a cell whose bootstrap standard
error is zero, it is reported as unavailable with its reason, and the verdict is still read. The
second is the design, the SESOI and the registered bounds, as decomposition_gate reports them. The third is
each cell's realised test size against its simulation's projected size. Both gates report it and
list the organizations whose window is smaller than projected in below_projection. Such a window
must be reported with the simulation's power at its realised size ("Fetch horizon"), which no
script computes yet (IMPL). The fourth is meaningful beside within_sesoi, with one
read_intervals building both for every gate and for h1_over_partitions. require_test_read
now refuses a K that is not a whole number. A report with K missing on both sides had passed it as
equal, and the gate then failed with a KeyError.