Gate 010 — does a structural relational key over the graph substrate retrieve a better warm start than the attribute-level BC?
Status: NOT-TESTABLE — 2026-08-04. The pre-fit decidability clause fired at 9 of 9 gating
cells on the CAT-PROJ null; no arm was ever fit and nothing below the NOT-TESTABLE line was
scored. Registered 2026-08-03 and frozen before any arm code, any key code, or any number existed.
See Result at the foot of this file.
Road: Graph substrate (OPEN).
Licensed by Gate 007's GO, whose registered Consequence reads verbatim: "M4's relational key is
built over GraphDomain rather than hand-typed sandbox relations" — carrying Gate 007's A_eff = 2
and t = 2 caveats, which this gate inherits and does not re-establish. Gate 009's consequence
list names the same follow-up under GO(M-C); 009 returned M-B, so the licence here is 007's
alone, and no part of this gate may cite 009 as its authorization.
Baseline to beat: B-POC-4's published EliteMap.nearest result — BC-nearest seeding reaches the
goal 7.3× closer than cold-start and 29.6× closer than a random-elite seed (docs/HISTORY.md
~L266, gated in tests/test_transfer.mojo).
docs/RESEARCH-NOTES.md §2 proposes "a systematicity-scored BC key built from typed transition
relations (blocked-by-wall, pushed-into-wall, gravity-pulled-onto, painted-over)". That parenthesis
is a hand-installed primitive vocabulary — the exact thing the no-DSL value refuses, and the exact
reason Gate 007 licensed the key over GraphDomain instead. Three consequences, all frozen here:
- No relation is named. The key is the full class-adjacency matrix over the state's own sign
classes, computed at two hop counts. Every entry of the matrix is present; not one was
selected. Whether
M[occupied][wall]means "resting against a wall" is a fact about the world, not an input to the descriptor. - The treatment augments, it does not replace.
policy_score(src/transfer.mojo:313) scores post-fit BC-MSE against a BC goal, so the incumbent key is the score's own coordinate system. A replacement key is penalized for departing from the metric regardless of whether relations help. The gated treatment is therefore[BC ‖ REL], and "REL alone" is registered as a non-gating diagnostic with a no-promotion clause. - Nothing about the goal, the demos, the fitness, or the budget moves. The relational key changes only which stored elite is retrieved as the ES seed. All arms are scored by the identical, unmodified number. That is what makes the arms comparable at all, and it is what keeps this gate off Gate 008's forbidden-metric-knob list.
H. On the sandbox cross-world transfer family, augmenting the retrieval key with a structural
relational descriptor — class-adjacency counts over the graph substrate's own CSR adjacency,
computed as a start→terminal delta — makes EliteMap.nearest's argmin select an elite whose
few-shot fit lands strictly closer to the held-out goal than the argmin over the attribute-level BC
alone, and it does so because of the relational wiring, not because of the added dimensions, the
added scale, or the re-weighting of the BC.
Refuted if the structure-free rewired control matches the treatment, or the z-scaled-BC control matches it, or the treatment does not beat the incumbent at all.
Consumer: EliteMap.nearest's argmin (src/map_elites.mojo:260), read by run_family_select
(src/transfer.mojo:628) and run_family (src/transfer.mojo:380), which memcpy the returned
slot's POLICY_DIM weights into pol_fast and pass them to fit_operator as the ES seed. The gate
is on the argmin's downstream product, not on any ordering, ranking, or distance quality —
T-POC-2 STOPped on exactly that substitution.
Per goal g, per arm X, the scored number is the one B-POC-4 published:
d_X[g] = −policy_score(pol_fast_X, task, tgt, key, …)[0]— post-fit BC-MSE distance to the held-out goal, withtgtandkeyidentical across arms andpolicy_scorebyte-unchanged.
Gated statistics, per (target world, seed) cell:
| stat | definition |
|---|---|
N_eff |
#{g : slot_X(g) ≠ slot_Y(g) and cellkey(replay(slot_X)) ≠ cellkey(replay(slot_Y))} — goals where the two arms are not the same arm, behaviourally |
WIN(X vs Y) |
strict wins d_X[g] < d_Y[g] divided by N_eff(X vs Y). Ties count against the treatment. |
RATIO(X vs Y) |
median_g d_Y[g] / max(d_X[g], EPS) over all NUM_GOALS goals — the family-level effect the headline reports. Median of per-goal ratios, never a mean of ratios (T-POC-2's "68×" came off one tiny denominator) |
TIE_post |
fraction of the N_eff goals with d_X[g] == d_Y[g] bitwise after the fit |
PICK_DIV |
#{g : slot_X(g) ≠ slot_BC(g)} / NUM_GOALS — reported, so RATIO's dilution by tied goals is visible |
RATIO_cold(BC) |
median_g d_cold[g]/d_BC[g] — reported, no bar, no promotion |
REL_ACTIVE |
count of REL coordinates with across-elite std ≥ 1e-6 |
REL_SHARE |
median over goals of ‖Δz(REL)‖² / (‖Δz(BC)‖² + ‖Δz(REL)‖²) to the BC-nearest elite — reported diagnostic, no bar, no promotion in either direction (Gate 007's RECOV precedent) |
New module src/relkey.mojo. Imports Graph and D_MAX from src/graph_domain.mojo and
nothing from any learning module. Consumes zero draws from the global RNG stream (local LCGs
only), asserted by a stream-integrity probe.
Nodes. One node per grid cell, n_nodes = SB_CELLS = 256 (SB_ROWS = SB_COLS = 16, verified at
registration). No cell is selected, filtered, or segmented — there is no object-detection step in
which a prior could be smuggled.
Node classes, A0 = 4. Read straight off the state array's sign, plus the avatar's own cell:
0 = empty (v == 0), 1 = movable (v > 0), 2 = wall (v < 0), 3 = avatar cell (overrides). These
are the three sign classes sandbox_bc and sandbox_cell_key already distinguish, plus the pose the
BC already carries in its two pose dims. No new vocabulary is introduced.
Edges. The 4-adjacency lattice on the 16×16 grid in CSR Graph form (n_nodes = 256,
n_edges = 480 = 2·16·15), both directions stored, ascending col_idx, degree ≤ 4 ≤ D_MAX = 8 —
graph_domain.Graph's own invariants, asserted. The topology is identical for every state; every
bit of structure in the key comes from where the labels sit relative to each other.
Descriptor, one definition evaluated at two hop counts (HOPS = 2). For hop h, let E_h be
the set of unordered node pairs at graph distance exactly h in the lattice (E_2 is built as the
CSR square minus self-pairs minus E_1):
M_h[a][b] = |{ {u,v} ∈ E_h : {class(u), class(v)} = {a,b} }| / |E_h|, over the 10 unordered class pairs ofA0 = 4.
The key is a transition delta, not a state statistic:
REL(state, world) = [ M_1(state) − M_1(start_grid(world)) ‖ M_2(state) − M_2(start_grid(world)) ],REL_DIM = 2 × 10 = 20.
Subtracting the world's own start state is what makes this a transition descriptor (the hypothesis's own word) and what removes the static wall-layout component that would otherwise dominate the L2 with a world-identity signal — elites are keyed in a source world, goals in a target world. Zero free parameters; forced, not chosen.
Every coordinate counts a pair of cells standing in an adjacency relation — Gentner's relational level, reached by counting rather than by naming. It is exactly the information the BC cannot hold: a block occupancy of 4/16 is 4/16 whether it is a 2×2 clump or four scattered cells.
Commensuration (one rule, all arms, zero free parameters). Each coordinate of BC and of REL is
z-scaled by its across-elite standard deviation, measured on the union of that seed's two source
repertoires, and the identical scale vector is applied to goal keys. Any coordinate with std < 1e-6
is zeroed, not rescaled. This removes "the win was scale" as an explanation by construction
rather than by tuning — and it is why BC-Z must be a gated control rather than a footnote (Gate
009 E2: the tie basin lives entirely in the 2 pose dims, never the 16 occupancy dims, so re-weighting
alone could produce a win with no relational content whatsoever).
Elite keys are obtained by replay, not by storage: each stored elite's policy is re-rolled in its
source world (deterministic, zero RNG — B-POC-4's replay path) and REL is read off the terminal
grid. A replay-fidelity assert (sandbox_cell_key(terminal) == emap.keys[slot]) gates the whole run.
Retrieval transcription. src/map_elites.mojo is on this gate's zero-diff list, so
EliteMap.nearest cannot be generalized. relkey.mojo therefore holds a KeyIndex whose
key_nearest(target) is a line-for-line transcription of EliteMap.nearest's argmin loop — same
iteration order over filled, same strict < tie-break, same bc_dist2 SIMD/FMA shape. Contract
clause XCHK asserts that KeyIndex built from the raw BC vectors returns the bit-identical slot
to emap.nearest at every goal × world × seed. Without that clause this gate would be measuring an
adjacent retrieval, not the consumer's.
Every arm calls the same make_demos, the same fit_operator[SandboxPolicyMemory] at the same
FEW_N = 32 / FEW_ALPHA0/1 / FEW_SIGMA0/1 / FEW_ITERS = 30, and the same policy_score. The only
difference anywhere is which key array is handed to the retrieval argmin.
| arm | key handed to the argmin | dims | gating | what it isolates |
|---|---|---|---|---|
| COLD | (none — zero seed) | — | yes (anchor) | the no-retrieval floor |
| BC | raw emap.bc |
18 | yes (incumbent baseline) | B-POC-4's published mechanism, XCHK-verified |
| BC-Z | z(BC) |
18 | yes (control) | the z-scaling alone — Gate 009 E2's pose-dim story |
| CAT | [z(BC) ‖ z(REL)] |
38 | yes (treatment) | relational structure, added |
| CAT-REWIRE | [z(BC) ‖ z(RELʳ)] |
38 | yes (refuter) | everything CAT has except the wiring |
| CAT-PROJ | [z(BC) ‖ z(P·BC)] |
38 | yes (refuter) | 38 dims and matched scale carrying zero new information |
| REL-ONLY | [z(REL)] |
20 | no — diagnostic | replace-vs-augment; confounded by the BC-MSE score |
RELʳ — the load-bearing refuting control. REL recomputed on a degree-preserving rewiring
of the 256-node lattice: double-edge swaps, SWAPS_PER_EDGE = 20 attempted (4 draws each, rejections
still consume theirs), from a local LCG. E_2 is rebuilt as the square of the rewired graph. The
rewiring is drawn once per seed and shared by every world, every elite and every goal — otherwise
the delta subtraction and the L2 mix two different graphs.
RELʳ is matched on: dimension, scale (same z-rule), node-label marginals, degree sequence, and
delta-ness (it is a start→terminal delta too). It is unmatched on exactly one thing: spatial
adjacency. Under a random rewiring M_h[a][b] collapses toward the product of the class marginals —
i.e. toward an attribute-level statistic. That is the point: RELʳ is Gentner's attribute
descriptor wearing the relational descriptor's clothes. If CAT-REWIRE matches CAT, the hypothesis
is refuted and the win was attributes, dimension or scale.
P — the dimension-and-scale-matched null. A fixed 18→20 random projection from a local LCG, its
columns rescaled so each output coordinate's across-elite std equals the corresponding REL
coordinate's. Deterministic per elite and per goal; adds zero information beyond the BC. If
CAT-PROJ matches CAT, the win was L2 geometry re-weighting, not relations.
Recorded explicitly, what would not have been an adequate control: a shuffle/mispair arm — documented in the journal (2026-07-31 13:54) as not strong enough, because it cannot distinguish a genuine factor from an entangled fit that happens to work; and a shared coordinate permutation, which is an L2 isometry and would have changed nothing at all.
REL-ONLY is a diagnostic and stays one. It appears in no GO / STOP / PARTIAL condition and may
not be promoted to a bar once its number is known, in either direction (Gate 007 had to hold this
line on MEAN+DEG). It runs last, after the six gated arms.
True CRN. Before each of the seven fits for goal g, the fit RNG is re-seeded:
seed(FIT_SEED_BASE + 1000003·s + 7919·world_idx + 31·g), FIT_SEED_BASE = 20260803. Every arm
therefore sees the identical ES perturbation sequence, and the only difference between arms is
the initial weight vector — the argmin's output. This is stronger than Gate 007's back-to-back
single-stream pairing, and it is what turns TIE_post into a clean statement about seed-erasure
rather than about fit noise. Equal draw counts per arm are asserted empirically.
- Worlds.
push_mode = SB_PUSH_OFF, seeded blocks= 0— the base family exactly as Gates 004/005 and B-POC-4 measured it. Gate 008's knobs are not inherited: Gate 008 returned NOT-TESTABLE and licensed nothing, and adopting a lever whose own premise its probe falsified would be borrowing an unearned constant. - Sources (repertoire).
SB_WALLS_SHELVES(variant = s)andSB_WALLS_COLUMNS(variant = s), each built at the lockedBUILD_BUDGET = 13205 / BUILD_RESEED = 25 / BUILD_N = 16 / BUILD_ALPHA = 0.8 / BUILD_SIGMA = 0.4 / INIT_SCALE = 0.5, merged into one index — the two-source map, built by a harness-local transcription oftests/test_cbr_retain.mojo:110'sbuild_repertoire(that helper is test-local, not asrc/symbol; transcribing it is what keepssrc/transfer.mojozero-diff). - Targets (held out).
SB_WALLS_ROOM(variant = s),SB_WALLS_SCATTER(variant = s),SB_WALLS_SCATTER(variant = s + 4)— three(kind, variant)worlds, honouring Gate 008's registered "≥3 held-out worlds" arithmetic. 9 gating cells. - Goals.
NUM_GOALS = 24per cell, from a harness-local sibling ofgen_family_s(src/transfer.mojo:1139), mechanism-identical to it: samesandbox_rollout_state, sameINIT_SCALE-scaled random policy, sameCellSetdedup, sameemap.contains(k)held-out filter — which, against the merged two-source map, is the both-sources filter. It additionally stores each goal'sRELfrom the same terminalgridbuffer — a store, not a change to the draw.GCHKasserts the resultinggoal_keyarray is bitwise identical to the generator without the store. - No goal-set escalation. Re-drawing a goal set after seeing a low
N_effis on the stone-soup list.
This is the clause that must be able to end the gate before any ES budget is spent. Five of nine
gates on the sibling Cross-world transfer Road came back STOP/NOT-TESTABLE because the few-shot
instrument saturates; Gate 008's SENS_occ paid for itself twice by firing first.
N_eff ≥ 12 at every gating cell, for the treatment and for every gated control against the
baseline.
Zero fits, zero global RNG draws: two deterministic 64-tick replays per goal per arm-pair, read
through the unmodified sandbox_cell_key. Total ≈ 3 seeds × 3 worlds × 24 goals × a handful of
replays — milliseconds.
Why 12, derived and not screened. On goals where two arms pick the same slot the fits are bitwise
identical under true CRN and contribute exactly 0 to any paired statistic; the effective sample is
N_eff. A two-sided sign test needs N = 6 for a unanimous result to reach p < 0.05 and N ≥ 12
for a 0.70–0.80 win rate to be reachable at all. N_eff ≥ 12 is the smallest floor under which
the registered WIN ≥ 0.70 bar is a measurement rather than a coin flip. No screening was used to
choose it.
Why the controls carry the same floor. A control that never diverges from the baseline cannot
refute anything — it is Gate 006's toothless-control failure, and it is cheaper to catch here than
after 25 minutes of unscoreable fits. RELʳ is the specific risk: if the rewired descriptor collapses
so far toward the label marginals that it duplicates the BC's occupancy sums, N_eff(CAT-REWIRE vs BC) will not reach 12 and the gate is honestly NOT-TESTABLE.
REL_ACTIVE ≥ 4. Fewer than 4 non-degenerate REL coordinates means the 20-dim block carries less
varying information than the BC's two pose dims — which Gate 009 E2 already showed dominate the L2 —
and a descriptor smaller than the known-dominant nuisance cannot be tested against it.
Seeds {0, 1, 2}, three required, AND-across-seeds for GO, ≥2/3 for a STOP trigger.
Every seed varies the actual structure, not only the stream. variant = s is passed to
gen_walls_layout for all five worlds — so each seed is an independent draw of wall layouts, two
repertoire builds, the goal sets, the rewiring, the projection, and every fit stream. This discharges
the debt Gate 008 disclosed (its three "seeds" varied the action stream only, variant hardcoded to
0) on the precedent Gate 009 set. Three independent world draws, not three reads of one.
Frozen draw order per seed — the B-POC-3 stream-position lesson:
seed(s) → build shelves(s) rep → build columns(s) rep → merge [BUILD_* verbatim]
→ replay all elites for REL / RELʳ / P keys [0 global draws]
→ for w in [room(s), scatter(s), scatter(s+4)]:
goal pool: 24 held-out goals, dedup, merged-map filter
N_eff / PICK_DIV pre-fit probe (deterministic replays) [0 global draws]
for goal g: seed(FIT_SEED_BASE + …) before EACH of:
cold → BC → BC-Z → CAT → CAT-REWIRE → CAT-PROJ → REL-ONLY
Stream warning. These numbers sit at a different stream position from Gates 004/005 and from
B-POC-4, and the per-fit re-seed makes the comparison structurally different besides. No number here
may be compared to the published NF = 0.0, n_dec = 11/14/10, or 7.3×. Reproduction of those is
guaranteed instead by contract clause 3.
- CAT-REWIRE — the one that could take the claim away. Same descriptor pipeline, same dimension, same z-scale, same node-label marginals, same degree sequence, same start-state delta; only the wiring is destroyed. If it matches CAT, relations added nothing and the hypothesis is dead. This is Gate 007's MEAN×D role, transplanted.
- CAT-PROJ — the nuisance-matched null on dimension and geometry. 38 dims, matched per-coordinate scale, zero information beyond the BC. If it matches CAT, the win was L2 re-weighting.
- BC-Z — the nuisance-matched null on commensuration. If
RATIO(BC-Z vs BC) ≥ 1.10whileRATIO(CAT vs BC-Z) < 1.0, the entire effect is the z-scaling up-weighting the BC's 16 occupancy dims against its 2 pose dims — Gate 009 E2's finding, and a result with no relational content at all. N_eff— reads ~nothing if the key is a relabelling of the BC, in seconds, before any fit.- COLD — if the BC arm does not beat cold, the retrieval mechanism itself is not live and nothing downstream means anything.
NOT-TESTABLE — checked in this order; nothing below it is scored if any trips:
- any reproduction-contract clause fails;
XCHKorGCHKfails;N_eff < 12at any gating cell, for CAT-vs-BC, CAT-vs-BC-Z, CAT-REWIRE-vs-BC, or CAT-PROJ-vs-BC;REL_ACTIVE < 4at any seed;TIE_post(CAT vs BC) > 0.50at ≥ 2 of 3 seeds. Registered before any number: two behaviourally distinct seeds converging to a bitwise-identical post-fit optimum is the instrument failing, not the hypothesis. Gates 004/005 measuredNF = 0.0at this exact budget on this exact family; if the fit erases the seed, aWIN ≈ 0.5would be mis-read as "relations don't help" when it means "nothing could have helped". This escape route exists so that mis-reading cannot happen after the fact.
GO — every condition, at all 9 gating cells:
WIN(CAT vs BC) ≥ 0.70andWIN(CAT vs BC-Z) ≥ 0.70RATIO(CAT vs BC) ≥ 1.10andRATIO(CAT vs BC-Z) ≥ 1.10WIN(CAT vs BC) − WIN(CAT-REWIRE vs BC) ≥ 0.15andWIN(CAT vs BC) − WIN(CAT-PROJ vs BC) ≥ 0.15- no per-cell overlap on the primary:
min_cells RATIO(CAT vs BC) > max_cells RATIO(CAT-REWIRE vs BC), and the same against CAT-PROJ.
Both bars are derived, not fished. RATIO ≥ 1.10 is 5× the instrument's own smallest callable
effect — Gate 008 froze MDE = median_g max(NF, DELTA_REL·d[g]) with DELTA_REL = 0.02, and Gate
009 measured MDE_rel = 0.02 binding in all nine of its cells, so a detectable median ratio floor is
1.02. WIN ≥ 0.70 AND-ed across 9 cells is ≥ 108 paired goals held at a consistent 70%; at
N_eff = 12 a single cell at 0.70 is 9/12 (p ≈ 0.15 two-sided) and proves nothing alone, which is
exactly why the condition is AND-across-cells and why the non-overlap clause is attached.
STOP — any one trigger at ≥ 2 of 3 seeds:
WIN(CAT vs BC) ≤ 0.55— the relational key does not retrieve better. The likeliest "no".|RATIO(CAT vs BC) − RATIO(CAT-REWIRE vs BC)| ≤ 0.03whileRATIO(CAT vs BC) ≥ 1.10— structure-free matches structured; the win was attributes/dimension, not relations.RATIO(CAT vs BC-Z) < 1.0whileRATIO(BC-Z vs BC) ≥ 1.10— the win is the commensuration, i.e. Gate 009 E2's pose-dim geometry.
PARTIAL:
- any GO condition holding at exactly 2 of 3 seeds, or 3/3 on two target worlds and not the third — seed and world splits are never rounded up;
- or
WINclears everywhere whileRATIO < 1.10— the argmin is genuinely better more often than not, but the family-level effect is under the roadmap-worthy floor. This is the informative middle and it is registered as such, not as a near-GO.
PARTIAL licenses the relational key only on the cells that individually cleared, and any switch of the consumer must re-register its cell list in its own gate.
- Zero learning-core change. Empty
git diffonsrc/esper_evolution.mojo,src/memory.mojo,src/map_elites.mojo,src/graph_domain.mojo, theDomaintrait insrc/arc_io.mojo, andExamplePair/Taskinsrc/hope.mojo. - Zero metric / world / budget change. Empty
git diffonsrc/sandbox.mojoandsrc/transfer.mojo. Runtime asserts:BC_DIM == 18,BC_BLOCKS == 16,POLICY_DIM == 294,SB_ACTIONS == 6,SB_CELLS == 256,FEW_ITERS == 30,FEW_N == 32,BUILD_BUDGET == 13205,push_mode == SB_PUSH_OFF, seeded blocks== 0. - Bitwise reproduction, before anything is scored.
./esper test transfer(the incumbent 7.3× / 29.6× gates),./esper test cbr_retain(Gate 004'sR1 = Rc = 1.0,NF = 0.0,n_dec = 11/14/10),./esper test anytime_metric,./esper test trial_select, and./esper test graph_lattice_repro(Gate 007's targets:before 0.74175346/after 1.0, bits1061020558/1065353216). XCHK— the transcription is the consumer's.KeyIndexover raw BC returns the bit-identical slot toemap.nearestat every goal × world × seed.GCHK— the goal set is unmoved. Goal keys bitwise identical to the store-free generator.- Key-builder blindness + stream integrity.
src/relkey.mojoimports no learning module and contains nofit_operatorcall (grep-checkable); the key/probe path draws 0 from the global RNG stream (draw-count probe).
Scope of new code at eval, nothing else may be added: src/relkey.mojo, and
tests/test_relational_key.mojo whose default path is pre-fit/ES-free (fast tier) with the fits
behind --arms (# suite-tier: full) — Gate 007's pattern, which also makes this registering commit
provably arm-free.
Fits are single COLD fits from a single retrieved seed at the frozen budget. All of the following are scaffolding, and a pass obtained with any of them is a documented negative regardless of the raw number:
- Any post-hoc move of a frozen value:
A0 = 4, the class definitions,HOPS = 2, the delta-vs-start rule,REL_DIM = 20, the z-scale rule and its1e-6floor,SWAPS_PER_EDGE = 20,REWIRE_LCG_BASE,PROJ_LCG_BASE,FIT_SEED_BASE,NUM_GOALS = 24, the world list, the seed set,N_eff ≥ 12,REL_ACTIVE ≥ 4,EPS = 1e-12, and every bar above. - No sweeping the descriptor. One
A0, oneHOPS, one delta rule, registered before any number. TryingHOPS = 3, a different class alphabet, a WL round, an edge-weighting, or a per-world descriptor after seeing a weak result is re-screening a family against a scored arm, which Gate 007 named explicitly. - No hand-selected matrix entries. Dropping, re-weighting, or naming any of the 10 class pairs — in either direction — converts the descriptor into the hand-typed relation vocabulary this gate exists to avoid, and voids the result.
- No re-drawing a goal set, world, or rewiring that produced a low
N_eff; no goal-set escalation; no raisingmax_triesto fish for goals. - No per-world, per-goal, or per-arm tuning of
FEW_*,BUILD_*,INIT_SCALE, or the anneal schedule. One schedule, every cell. - No BC re-weighting, re-scaling or dim-dropping outside the single registered z-rule applied identically to both blocks and all arms — including dropping the two pose dims, which would fix Gate 009 E2's basin in one line and is the forbidden metric knob.
REL-ONLY,REL_SHARE,PICK_DIVandRATIO_cold(BC)are diagnostics and may not be promoted to bars once their numbers are known, in either direction;REL-ONLYmay not be run before the six gated arms.- No best-of-seeds, no dropped seed, no dropped world, no mean-over-cells where a per-cell condition
fails; no reporting
WINover all goals instead of overN_eff(or vice versa) after seeing which is kinder; no counting post-fit ties as half-wins. - No relaxing
XCHK/GCHK/clause-3 bitwise checks to a tolerance.
Stated plainly, because each limits what a GO may claim.
- The score is BC-MSE, so the baseline key is the metric's own coordinate system. This structurally favours BC-shaped keys and is why the treatment augments rather than replaces. A GO supports "relational structure adds to the attribute key under a BC-MSE score" — not "a relational key beats an attribute key". The clean version of the latter question is not askable without changing the score, which is the forbidden knob.
RATIOis diluted by ties;WINis inflated by excluding them. Neither is the whole truth, both are gated, andPICK_DIVis published so the dilution is legible. ARATIO = 1.10atPICK_DIV = 0.5means the divergent half moved ≈1.2×.N_effis necessary, not sufficient. Two behaviourally distinct seeds can still converge to the same post-fit optimum — the Gate 004 washout. That is precisely whyTIE_post > 0.50routes to NOT-TESTABLE and not to STOP; but the routing is a detection, not a fix, and this gate has no lever against it.- Gate 007's licence is narrower than it sounds, and is inherited whole. It was measured at
A_eff = 2andt = 2fixed. Nothing here re-establishes it, and a GO here does not widen it. - This gate uses
GraphDomain's substrate, not its metric seam. It borrowsGraph(CSR container, degree/col_idxconventions,D_MAX) but the score stayspolicy_score;GraphDomain.distance/scoreare never called. "Built overGraphDomain" is honoured at the container level only, and that is a narrowing of Gate 007's Consequence, registered rather than glossed. - Cross-world key comparability is improved by the delta, not solved by it. Elite keys are source-world deltas; goal keys are target-world deltas. The delta removes the static wall component, but not the fact that the same behaviour produces different adjacency changes under different topologies. That residual is unquantified and cuts both ways (the BC's block occupancies are world-dependent too), so it is disclosed rather than claimed neutral.
- One descriptor was registered, and it may simply be a bad one. A STOP licenses "this descriptor did not", never "relational keys do not". The only defence against a post-hoc sweep is that the sweep is banned above.
- A
CAT-REWIREthat cannot diverge would make this gate unfalsifiable, which is the Gate 006 failure exactly. TheN_eff ≥ 12-on-controls precondition is the mitigation, and it is a plausible NOT-TESTABLE route rather than a formality — the rewired descriptor is designed to collapse toward the label marginals, and the label marginals are close to information the BC already carries. - The seven-arm design costs ~25 min of CPU and produces one number. If the precondition fires, it costs seconds — that asymmetry is the whole point of the pre-fit path, and it is the third time the house pattern is being relied on.
- GO ⇒ the Graph substrate Road gains a relational-retrieval-key rung on this evidence, carrying
Gate 007's
A_eff = 2/t = 2caveats and disclosure items 1, 5 and 6. Switching the live consumer (run_family_select/run_family) to the concatenated key requires touchingsrc/map_elites.mojo, which this gate's contract forbids — so it is a separate gate, not a licensed edit. Gate 007's registered Consequence is thereby discharged positively, and the Cross-world transfer Road gains a live lever it does not currently have. - STOP ⇒ the relational-key lever closes for a measured reason; Gate 007's licensed consequence is
discharged negatively and may not be re-opened by a descriptor tweak. The Graph substrate Road's
remaining open question becomes the third-substrate one (sequences/sets through
Domain), already named indocs/ROADMAP.md. The write-up gains a publishable negative with a clean mechanism. - PARTIAL ⇒ licenses the relational key only on the cells that cleared; a consumer switch must re-register its cell list.
- NOT-TESTABLE ⇒ exactly one re-roll, as a numbered successor, with the complete screening
table published (the Gate 006→007 route, and Gate 008's asymmetry rule: NOT-TESTABLE means the
instrument never ran; STOP means it ran and answered). Nudging
A0/HOPS/the class alphabet untilN_effclears is the forbidden move.
- C1 — every LCG base is registered here, not at build time.
REWIRE_LCG_BASE = 20260803,PROJ_LCG_BASE = 20260804,FIT_SEED_BASE = 20260803; the rewire stream isREWIRE_LCG_BASE + 1299709·s, the projectionPROJ_LCG_BASE + 1299709·s. Gate 008's erratum E6 had to disclose an unregistered constant that directly determined a scored number; that exposure is closed in advance here. Additionally, before the verdict is read,REWIRE_LCG_BASEandPROJ_LCG_BASEare screened over ≥3 alternatives each, scored on theN_effprecondition only (never on an arm number), with the complete table published — Gate 007's screening rule applied proactively. - C2 —
E_2must be built as the square of the rewired graph in the control arm, not as the true lattice's 2-hop set. Building it from the true lattice would leak spatial structure into the structure-free control and would silently defang the refuter. - C3 — the
--armsblock will never have executed at registration. Gate 008's closing note applies verbatim: a type-checked, never-run block should be expected to have first-run bugs no compile catches, and any fix to it must be a fix, not a tuning. - C4 —
EPS = 1e-12inRATIO's denominator, andRATIOis a median of per-goal ratios computed with the existing even-nmidpair rule of themedian_ofhelper the sibling gate tests already carry (tests/test_cbr_retain.mojo:289) — a test-local helper, transcribed, not imported. - C5 —
WIN's tie rule is asymmetric on purpose: post-fit ties count against the treatment. Under true CRN a tie means the seed was erased, and the treatment's whole claim is that the seed matters. - C6 — three symbol references in the design draft did not survive checking, and were corrected
before the freeze, not after: neither
gen_family_disjointnorbuild_repertoireis asrc/symbol — both are test-local helpers (tests/test_cbr_retain.mojo:239and:110, the first also duplicated attests/test_anytime_metric.mojo:240) and must be transcribed rather than imported, which is what keepssrc/transfer.mojozero-diff; andrun_family_selectis atsrc/transfer.mojo:628, not 580. Recorded because a gate that freezes a wrong constant is worse than no gate, and because the same habit — verify every reference before it lands — is the one the 2026-07-31 literature round set for citations. C6 itself was corrected on 2026-08-03 during the build, and the correction is printed rather than quietly applied: the registration text assertedgen_family_disjoint"does not exist", which is false — it exists as the test-local helper cited above, taking the five maps Gate 004's five arms needed. Gate 010 has one merged map, so its harness-local sibling is the one-map,gen_family_s-shaped variant described under Family, withmax_tries = 200000— the value both sibling harnesses already pass. No registered criterion (arms, bars, preconditions, controls, contract) is touched by this correction; only this factual annotation is.
Scored against the registered criteria, unchanged. tests/test_relational_key.mojo,
src/relkey.mojo, built at 89bbcc5; ES-free default path, 7 s wall clock,
./esper run tests/test_relational_key.mojo.
| # | clause | outcome |
|---|---|---|
| 1 | reproduction contract (6 clauses) | PASS — src/ zero-diff list clean; constants fold at compile time (BC_DIM 18, POLICY_DIM 294, SB_ACTIONS 6, SB_CELLS 256, FEW_ITERS 30, FEW_N 32, BUILD_BUDGET 13205, push OFF, blocks 0) |
| 2 | XCHK / GCHK |
PASS — XCHK bit-identical at 24/24 goals in all 9 cells; GCHK bitwise, n = 24 |
| 3 | N_eff ≥ 12 at every gating cell, for all four registered pairs |
FIRES — CAT-PROJ vs BC is 6–11 at 9 of 9 cells |
| 4 | REL_ACTIVE ≥ 4 |
PASS — 16 at every seed |
| 5 | TIE_post(CAT vs BC) > 0.50 |
not evaluable — requires fits, which sit below the line and were never run |
Clause 3 fires ⇒ NOT-TESTABLE. Per the registered ordering ("nothing below it is scored if any trips"), the seven-arm fit block was not executed. It is written and type-checked and has never run — exactly the state erratum C3 predicted.
N_eff out of NUM_GOALS = 24; bar ≥ 12.
| seed | cell | CAT vs BC | CAT vs BC-Z | CAT-RW vs BC | CAT-PROJ vs BC | PICK_DIV | REL_SHARE |
|---|---|---|---|---|---|---|---|
| 0 | room v0 | 23 | 23 | 22 | 7 | 0.958 | 0.928 |
| 0 | scatter v0 | 20 | 19 | 22 | 8 | 0.833 | 0.774 |
| 0 | scatter v4 | 19 | 17 | 20 | 6 | 0.833 | 0.834 |
| 1 | room v1 | 23 | 24 | 23 | 11 | 1.000 | 0.935 |
| 1 | scatter v1 | 19 | 23 | 16 | 9 | 0.833 | 0.944 |
| 1 | scatter v5 | 20 | 19 | 18 | 8 | 0.833 | 0.877 |
| 2 | room v2 | 16 | 16 | 20 | 6 | 0.875 | 0.949 |
| 2 | scatter v2 | 22 | 21 | 22 | 6 | 0.917 | 0.841 |
| 2 | scatter v6 | 19 | 17 | 19 | 11 | 0.917 | 0.913 |
Repertoires (merged, two sources): 3659 / 4749 / 3617 elites at seeds 0/1/2, 26410 build rollouts
each. Elite replay fidelity: 0 mismatches of 3659 / 4749 / 3617. Rewired graph |E_1| = 480
(degree sequence preserved), |E_2| = 1327 / 1319 / 1325 against the true lattice's 898.
It is not a finding about the hypothesis. No arm was fit, so the gate says nothing about whether a relational key retrieves better. What it establishes is that the registered instrument could not have answered, and it establishes that in 7 seconds for the price of zero ES budget — the third consecutive gate where the cheap pre-fit clause paid for itself (006, 008, 010).
Three of the four pairs cleared comfortably, including the load-bearing one. CAT-REWIRE vs BC
sits at 16–23 across all nine cells, so the degree-preserving rewiring — the control that could
actually take the claim away — is live and well above its floor. PICK_DIV(CAT vs BC) of
0.833–1.000 says the relational key genuinely retrieves different elites, and the descriptor's
discrimination was confirmed independently before any of this: a 2×2 clump and 4 scattered cells,
which the BC scores identically, separate under REL at squared gap 4.27e-4 versus 2.72e-5 under the
rewiring — a factor of 15.7.
The failure is localized to one control, and the mechanism is structural rather than incidental.
CAT-PROJ = [z(BC) ‖ z(P·BC)] with P a fixed linear map, so the whole key is a linear function of
the BC: an information-preserving re-weighting of the metric on the same 18-dim space. Such a
re-weighting moves the argmin sometimes (6–11 of 24 goals — it is not inert) but cannot move it as
often as a key carrying genuinely new coordinates (20–23 of 24). Requiring the two to diverge equally
is requiring the null to stop being a null.
Disclosure item 8 anticipated this failure shape and aimed it at the wrong arm. It named
CAT-REWIRE as the control that might be unable to diverge. CAT-REWIRE cleared; CAT-PROJ, which
carried no such disclosure, is what fired. The prediction was right in kind and wrong in target, and
that is recorded here rather than smoothed over.
The registered null was matched on dimension and scale. For the refutation to bite it needed to be
matched on perturbation magnitude — how much it moves the retrieval — because the GO clause
compares WIN(CAT vs BC) against WIN(CAT-PROJ vs BC), and two win rates measured over samples of
20–23 and 6–11 respectively are not an apples-to-apples comparison however the bar is set.
In fairness to the bar, it was protecting something real: the GO clause needs a 0.15 gap between two win rates, and a win rate estimated from 6 paired goals carries a standard error near 0.2, so that clause would have passed or failed on noise. The error was not having a power requirement — it was wiring it as a whole-gate trip-wire rather than scoping it to the one clause that needed it.
No bar was relaxed, and none may be. Lowering N_eff for the null after watching the null fail
it is the forbidden post-hoc knob, and the fact that the reasoning against the bar looks correct is
precisely why it may not be applied retroactively to unlock scoring — a correct-looking argument
discovered after seeing the number is indistinguishable from a motivated one.
NOT-TESTABLE ⇒ exactly one re-roll, as a numbered successor, conditional on publishing the complete screening table (the Gate 006→007 route, under Gate 008's asymmetry rule: NOT-TESTABLE means the instrument never ran; STOP means it ran and answered).
That re-roll is spent on Gate 011, and it is spent on the NULL's design, not on the descriptor.
The descriptor, the treatment arm, the rewired refuter and every contract clause are carried forward
unchanged and un-re-screened — re-tuning any of them here would be the forbidden move, and none of
them failed. A0, HOPS, the class alphabet, the delta rule and REL_DIM are not touched: the
anti-stone-soup clause's ban on sweeping the descriptor survives this verdict intact.
The Graph substrate Road stays OPEN. A NOT-TESTABLE verdict cannot close or park a Road — the instrument never ran, so nothing was answered.