Skip to content

Latest commit

 

History

History
588 lines (484 loc) · 40.2 KB

File metadata and controls

588 lines (484 loc) · 40.2 KB

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).


Why the obvious version of this gate is not the one being registered

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:

  1. 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.
  2. 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.
  3. 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.

Hypothesis

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.

Metric + consumer (no proxy)

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, with tgt and key identical across arms and policy_score byte-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)

The relational key's exact construction (frozen)

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 = 8graph_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 of A0 = 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.

Arms (frozen) — exactly one line differs

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.

Family (frozen)

  • 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) and SB_WALLS_COLUMNS(variant = s), each built at the locked BUILD_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 of tests/test_cbr_retain.mojo:110's build_repertoire (that helper is test-local, not a src/ symbol; transcribing it is what keeps src/transfer.mojo zero-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 = 24 per cell, from a harness-local sibling of gen_family_s (src/transfer.mojo:1139), mechanism-identical to it: same sandbox_rollout_state, same INIT_SCALE-scaled random policy, same CellSet dedup, same emap.contains(k) held-out filter — which, against the merged two-source map, is the both-sources filter. It additionally stores each goal's REL from the same terminal grid buffer — a store, not a change to the draw. GCHK asserts the resulting goal_key array is bitwise identical to the generator without the store.
  • No goal-set escalation. Re-drawing a goal set after seeing a low N_eff is on the stone-soup list.

Decidability precondition (pre-fit, ES-free, seconds — the NOT-TESTABLE route)

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.

Seed / draw plan

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.

Refuting controls — and why each could produce a "no"

  • 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.10 while RATIO(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.

GO / STOP / PARTIAL / NOT-TESTABLE thresholds (committed now)

NOT-TESTABLE — checked in this order; nothing below it is scored if any trips:

  • any reproduction-contract clause fails;
  • XCHK or GCHK fails;
  • N_eff < 12 at any gating cell, for CAT-vs-BC, CAT-vs-BC-Z, CAT-REWIRE-vs-BC, or CAT-PROJ-vs-BC;
  • REL_ACTIVE < 4 at any seed;
  • TIE_post(CAT vs BC) > 0.50 at ≥ 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 measured NF = 0.0 at this exact budget on this exact family; if the fit erases the seed, a WIN ≈ 0.5 would 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.70 and WIN(CAT vs BC-Z) ≥ 0.70
  • RATIO(CAT vs BC) ≥ 1.10 and RATIO(CAT vs BC-Z) ≥ 1.10
  • WIN(CAT vs BC) − WIN(CAT-REWIRE vs BC) ≥ 0.15 and WIN(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.03 while RATIO(CAT vs BC) ≥ 1.10 — structure-free matches structured; the win was attributes/dimension, not relations.
  • RATIO(CAT vs BC-Z) < 1.0 while RATIO(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 WIN clears everywhere while RATIO < 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.

Reproduction contract (checked FIRST; failure ⇒ NOT-TESTABLE)

  1. Zero learning-core change. Empty git diff on src/esper_evolution.mojo, src/memory.mojo, src/map_elites.mojo, src/graph_domain.mojo, the Domain trait in src/arc_io.mojo, and ExamplePair/Task in src/hope.mojo.
  2. Zero metric / world / budget change. Empty git diff on src/sandbox.mojo and src/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.
  3. Bitwise reproduction, before anything is scored. ./esper test transfer (the incumbent 7.3× / 29.6× gates), ./esper test cbr_retain (Gate 004's R1 = 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, bits 1061020558 / 1065353216).
  4. XCHK — the transcription is the consumer's. KeyIndex over raw BC returns the bit-identical slot to emap.nearest at every goal × world × seed.
  5. GCHK — the goal set is unmoved. Goal keys bitwise identical to the store-free generator.
  6. Key-builder blindness + stream integrity. src/relkey.mojo imports no learning module and contains no fit_operator call (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.

Anti-stone-soup clause

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 its 1e-6 floor, 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, one HOPS, one delta rule, registered before any number. Trying HOPS = 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 raising max_tries to 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_DIV and RATIO_cold(BC) are diagnostics and may not be promoted to bars once their numbers are known, in either direction; REL-ONLY may 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 WIN over all goals instead of over N_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.

Disclosure — the ways this gate is weaker than it looks

Stated plainly, because each limits what a GO may claim.

  1. 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.
  2. RATIO is diluted by ties; WIN is inflated by excluding them. Neither is the whole truth, both are gated, and PICK_DIV is published so the dilution is legible. A RATIO = 1.10 at PICK_DIV = 0.5 means the divergent half moved ≈1.2×.
  3. N_eff is necessary, not sufficient. Two behaviourally distinct seeds can still converge to the same post-fit optimum — the Gate 004 washout. That is precisely why TIE_post > 0.50 routes to NOT-TESTABLE and not to STOP; but the routing is a detection, not a fix, and this gate has no lever against it.
  4. Gate 007's licence is narrower than it sounds, and is inherited whole. It was measured at A_eff = 2 and t = 2 fixed. Nothing here re-establishes it, and a GO here does not widen it.
  5. This gate uses GraphDomain's substrate, not its metric seam. It borrows Graph (CSR container, degree/col_idx conventions, D_MAX) but the score stays policy_score; GraphDomain.distance/score are never called. "Built over GraphDomain" is honoured at the container level only, and that is a narrowing of Gate 007's Consequence, registered rather than glossed.
  6. 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.
  7. 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.
  8. A CAT-REWIRE that cannot diverge would make this gate unfalsifiable, which is the Gate 006 failure exactly. The N_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.
  9. 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.

Consequence

  • GO ⇒ the Graph substrate Road gains a relational-retrieval-key rung on this evidence, carrying Gate 007's A_eff = 2 / t = 2 caveats and disclosure items 1, 5 and 6. Switching the live consumer (run_family_select / run_family) to the concatenated key requires touching src/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 in docs/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-TESTABLEexactly 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 until N_eff clears is the forbidden move.

Registration caveats, on the record before any number exists

  • 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 is REWIRE_LCG_BASE + 1299709·s, the projection PROJ_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_BASE and PROJ_LCG_BASE are screened over ≥3 alternatives each, scored on the N_eff precondition only (never on an arm number), with the complete table published — Gate 007's screening rule applied proactively.
  • C2 — E_2 must 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 --arms block 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-12 in RATIO's denominator, and RATIO is a median of per-goal ratios computed with the existing even-n midpair rule of the median_of helper 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_disjoint nor build_repertoire is a src/ symbol — both are test-local helpers (tests/test_cbr_retain.mojo:239 and :110, the first also duplicated at tests/test_anytime_metric.mojo:240) and must be transcribed rather than imported, which is what keeps src/transfer.mojo zero-diff; and run_family_select is at src/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 asserted gen_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, with max_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.

Result — NOT-TESTABLE (2026-08-04)

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.

The NOT-TESTABLE ladder, in the registered order

# clause outcome
1 reproduction contract (6 clauses) PASSsrc/ 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 PASSXCHK 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 FIRESCAT-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.

The full pre-fit table (all 9 gating cells, nothing omitted)

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.

What this verdict does and does not say

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 design defect, stated precisely

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.

Consequence, as registered

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.