The replication gate implemented beside design()¶
replication() and replication_gate() in sphragis/experiment/decomposition.py read the
GitHub family as registered on 2026-10-04. The family takes only Apache, LLVM, .NET and Grafana,
in that order; a Gerrit organization is refused there, as design() refuses a GitHub one, and a
registered organization outside the members is reported as not collected.
The members are a constant, REPLICATION_MEMBERS, set by the commit that freezes them at Stage 1,
never an argument; until then the gate refuses to read the family, and afterwards it refuses a
cell or a bound for any organization outside them, so none joins later. Each member's bound comes
by level from its own partition simulation (sensitivity_bounds), must be a positive finite
number, and must equal the bound its cell was computed under, which h1_over_partitions now
records in the cell. The gate also refuses fewer than 1,000 resamples, a resample count that puts
the 0.0125 bound between draws, a missing field, and a p-value that disagrees with its interval
(below 0.0125 exactly when the lower bound is above zero). It reads each verdict from the cell's
two-sided 97.5% interval and r from the partial conjunction at one-sided 0.0125. The 97.5% level
is registered as fixed, not as a Holm step. An empty family has no r.
Each cell now records the organization it was computed for. The checks every reading of an H1
cell needs are one function, require_readable in across.py, run by both this gate and
across_organizations, now in cells.py beside the level-key helpers and the registered
test-read constants, so the confirmatory gate does not import its checks from the readings beside
it: filed under the organization it was computed for; its fields; a whole
resample count of at least 1,000, whole at the one-sided level; a p-value in [0, 1]; a finite
interval at the level, low at most high; and a p-value that agrees with the interval. Level keys in both gates, h1_over_partitions, sensitivity_bounds and
detectable_effects pass through one helper, so a cell or bound read back from JSON (string keys)
gives the same reading, and two keys naming one level are refused. The Gerrit gate now refuses a
bound that is not a positive finite number too.
scripts/partition_pilot.py takes --replication for a GitHub member, reading it at 97.5% alone
whatever the Gerrit Holm family's size, and refuses the flag for any other organization and its
absence for a member, and, once members are frozen, refuses an organization outside them. It
refuses --hypotheses beside it, and, before any run is loaded, a resample count the gate would
refuse; a bound the gate would refuse is refused before the cell is computed. Any test-window
read, on either platform, now needs --sensitivity, --sizing and the registered 10,000 resamples
at bootstrap seed 7, as it needed --planted, and a member's only after the freeze (registered
here as "Reading the test window"). Each run's window is read from every half's source with the
parser check 5 uses, so a run with one half on the test window is never taken for development.
pilot_sizing refuses a test-window reading or another organization's pilot as the source of K,
and on a test-window read a pilot that does not name its organization: the committed OpenStack and
Wikimedia pilots predate the field, so they are rerun before their test reads. The pilot refuses
another organization's simulation as the source of bounds. The report records the window, the
pilot K came from (k_from), the simulation and the K it ran at (sensitivity), and the
bootstrap seed; require_test_read in cells.py checks all of them, and that both sources are at
the read's K, on the report the pilot is about to write (before any verdict is printed) and again
in the gate, so the two hold one rule. The gate adds what is the family's own: a one-cell
simulation, 97.5% alone. Decided here: a member's bound comes from a simulation of one cell at 97.5%
(--h1-cells 1), since it is read alone, not as one of an intersection; registered-decisions.md
says so, and the gate checks the report's simulation is of one cell. Without --replication the
pilot takes only the four registered Gerrit organizations. The partition simulation reads its levels from the pilot, so the member's bound is at
the same level. The pilot's report no longer carries its own bounds, which the cell
now holds. A test runs the script on synthetic runs and reads its report through the gate, and
another writes a cell to JSON and reads it back for each of the three verdicts.
Still chosen when the test window is read, and so open until a committed read plan fixes them
(IMPL): the Holm family's size (--hypotheses), the spread target and cell count the bound is
read at, which development pilot calibrated the simulation, and the H2 reading's resamples and
seed. None can be used before in-principle acceptance, since the test window stays sealed until
then. Each run's halves must now all be built from its admissible partition, not only the first.