research note  ·  finding 16  ·  convergence replicated 9/9 · far depth seed-bimodal · K-axis CLOSED at K=32 (budget doesn't rescue it) · a free write-residual instrument predicts far depth (ρ≈-0.87)

Operator bank: architecture proven, exact contender convergence-recovered, far depth still open

Sam Larson

pebble, San Francisco

July 11, 2026  ·  updated July 12, 2026 (K-scaling under earlyln; the next-lever wave found the wall is mostly a dimension-mapping convention at K<=24; a same-day K=32 generalization test found the fix does not hold beyond K=24; a final same-day budget-rescue probe closes the K-axis book at K=32 — its own anomaly check pre-empts a clean verdict label, but K=48 stays blocked regardless — and banks a validated write-residual instrument, ρ≈-0.87 at n=12, for predicting far-depth composition without running the expensive eval)  ·  sam@pebbleml.com

abstract

Finding no. 14 showed exact O(log h) composition for a single in-context-written relation. This note asks the natural next question: does it extend to a bank of relations — R=3 independent operators sharing one K=8 pool, selected by a query-supplied relation id? The exact contender itself would not train at R=3: Phase-0 (single seed, 20K steps) read flat chance in-distribution, train loss stuck at 0.982. Diagnosis: a step-budget miscalibration, not a bug — the proven single-relation recipe needs ~600 steps just to leave loss 1.0, and this cell used 21× fewer examples. The bank architecture is proven regardless, by a fully-trained fast-weight-memory baseline (fwm-bank): in-distribution recovered@0.9 = 0.87 / 0.89 / 0.88 at h=1/2/3 (minimum over all 3 relations), and a relation-ID-swap ablation fires the intended capability-isolation teeth cleanly — right-relation cosine 0.725 vs wrong-relation 0.105 (gap 0.621) — while a LoopedVec-bank control stays correctly relation-insensitive (0.304 vs 0.311) and the untrained exact contender is vacuous (gap 0.008). Re-running the exact contender at the proven single-relation budget (256/80K, 3× more data) refuted "it just needed more budget": still 0.0 in-distribution recovery. A targeted diagnosis then found the fix: annealing a parameter-free inter-hop LayerNorm from weight 1 to 0 over the first half of training (gone by the end — eval always uses the pure exact-matmul read) recovers convergence, where three other interventions (plain re-run, LR/loss warmup, curriculum over R) all reproduce the flat-chance failure. The recovered arm (earlyln) was reported at n=1 seed: train loss 0.0052, in-distribution recovered@0.9 = 1.0/1.0/1.0, restricted effective rank 7.98–7.99 of 8, swap gap 0.553 — genuine, relation-selective, non-degenerate operators. A seed replication has since run to n=9 (the original seed plus 8 more, one per GPU): convergence held 9/9 — every seed's in-distribution recovered@0.9 = 1.000, 0/9 dead seeds. Far depth is seed-bimodal, not uniformly open: at h*=61, min-over-r recovered@0.9 sorted across all 9 seeds reads 0.000, 0.000, 0.000, 0.004, 0.012, 0.615, 0.811, 0.918, 0.984 — only 2/9 clear the strict 0.9 bar, though the four lowest-phase-residual seeds (max ≤0.0086) are exactly the four that clear 0.615+, an observed pairing, not yet shown causal. A separate write-capacity extension of the R=1 architecture confirms exact composition at K=14 (recovered@0.9 = 1.000, phase residual 0.0072, matching K=12's cleanliness) before hitting the same trainability cliff at K=15 and K=16, which a 4× parameter increase does not rescue. Phase-0, the recalibration, and the K=14–16 write-capacity probe remain n=1 per cell. A pre-registered follow-up then tested the obvious next question directly: does earlyln — the fix that rescued the R=3 bank — also rescue the R=1 K-scaling wall? 16 cells (K∈{14,15,16,24} × 4 seeds, 80K/256 each): it does not unlock the K axis wholesale, but it moves the wall exactly one rung. K=15, plain-recipe DEAD at n=1, is now 4/4 CONVERGED and HOLDS far-depth composition (median recovered@0.9 = 0.9929 at h*=117, all 4 seeds in the HOLD band). earlyln also improves write quality at every rung it converges — K=14's residual drops from the plain recipe's 0.0072 to 0.0020–0.0042, and its far-depth failure front moves from h=53 to 109–221. The wall re-forms at K=16 (1/4 converged, and even that seed's write is 10–20× dirtier, killing far depth at the first ladder rung) and K=24 (0/4 converged, but a distinct partial-formation profile — loss descends to ≈0.36 with restricted effective rank climbing to ≈17.7 of 24, not the flat-loss rank-1 collapse of the plain recipe — pointing at budget/anneal-schedule as the next lever, not architecture). Pooled verdict over the scored rungs K∈{15,16,24}: TRAINABILITY-STILL-LIMITED. Verdict of record: CONVERGENCE REPLICATED 9/9, FAR DEPTH SEED-BIMODAL (the R=3 bank); TRAINABILITY-STILL-LIMITED, WALL MOVES ONE RUNG (the K-scaling follow-up). The bank architecture works (on a trained baseline); the exact contender's trainability blocker is solved and now replicated across seeds; whether the recovered contender reliably beats its baselines at far compositional depth is seed-dependent and still open; and the same fix, tested directly on the K axis, buys exactly one more working rung before the wall re-forms, with each failure rung now showing its own diagnosable profile rather than one undifferentiated collapse. Unpublished.

01What a "bank" adds, and why it's harder

Finding no. 14 wrote one relation operator per episode. A bank writes R = 3 independent relation operators from a single K=8 pool in one context, and a query specifies which relation to compose h times before reading. This is the natural generalization toward "a model that holds several distinct learned rules simultaneously and applies the right one on demand" — closer to how a real reasoning system would use in-context operators. It is also strictly harder on two axes at once: the shared encoder must write three non-interfering operators from one trunk instead of one, and the read must select the correct operator before composing it, not just compose whatever was written.

The design (BankBindingEncoder: a shared trunk plus R row-query sets) went through the project's full gauntlet before any GPU time: a fresh-opus attack round found and closed a gameable bank-scoring metric (a 3-seed counterexample could read every relation-median as 1.0 with zero genuine banks) and a dropped-metric bug on deviating arms; an independent build audit then caught a real strawman-baseline bug — the LoopedVec-bank control never received the query's relation id, making its comparison score structurally uninterpretable — fixed by tagging the query with the existing relation embedding (zero new parameters) and closed with its own causal mutation proof (zeroing the embedding collapses the arm to relation-blind, as it should).

02Phase-0: the exact contender doesn't train, but the architecture does

Phase-0 ran one seed per arm at 20K steps (batch 48 — a calibration-budget cell, not the proven single-relation recipe of batch 256 / 80K steps). The exact (NCR-bank) contender read flat chance: mean cosine ≈0 at every h, train loss 0.982. This is not a plumbing bug — the same contender overfits a single fixed batch to loss 0.0018 when asked to (forward and gradient are correct) — it is a slow-to-transition optimization dynamic, the same class finding no. 14 documented for the single-relation model at low step budgets, now compounded by 3× the write load on a shared channel.

Critically, the bank architecture is separable from the exact contender's convergence problem, and a fully-trained baseline proves it works: the fast-weight-memory bank (fwm-bank) reads in-distribution recovered@0.9 = 0.87 / 0.89 / 0.88 at h=1/2/3 (minimum over all 3 relations, mean cosine ≥0.95) — the shared-trunk encoder writing three operators from one context, and the read correctly selecting the one the query asks for, demonstrably works. The relation-ID-swap ablation is the capability-isolation teeth this design exists to demand: feed the model the right query but the wrong relation id, and recovery should collapse if the model is actually relation-selective rather than blurring all three together.

armright-relation cosinewrong-relation cosinegapreading
fwm-bank (trained baseline)0.7250.1050.621genuine relation-selective capability isolation
loopedvec-bank (control)0.3040.311−0.007correctly relation-insensitive — a vector map with no relation signal should NOT show a gap, and doesn't
ncr-bank (untrained, Phase-0)0.0110.0020.008vacuous — no trained model to probe yet

The trained baseline's 0.621 gap and the control's −0.009 non-gap are exactly the dissociation the ablation is designed to produce; the exact contender's near-zero gap simply reflects that Phase-0 never trained it. Standing fact after Phase-0: the bank mechanism works; whether the O(log h) exact contender can learn it is still open.

03Recalibration: "just needed more budget" is refuted

The obvious next hypothesis — Phase-0 simply under-budgeted the exact contender relative to the proven single-relation recipe — was tested directly: one seed, re-run at the identical 256-batch / 80K-step recipe finding no. 14 used for R=1 (≈3× more data than Phase-0). It did not converge: train loss 1.0011 → 0.8776 (barely moved; single-relation NCR reaches ≈0.0018 at this budget), in-distribution recovered@0.9 = 0.0 at every h (mean cosine 0.09–0.12), restricted effective rank collapsed to 2.4–3.5 (a converged operator needs ≈8), and the relation-swap gap read 0.0009 — no signal, a relation-agnostic blur rather than the fwm-bank's clean 0.621 separation. Refuted: sizing a wave off a non-converged contender would have been the project's own documented calibration-first mistake; the R=3 contender needs something other than more data.

04Diagnosis: an annealed LayerNorm recovers convergence

Four single-seed arms tested candidate fixes at the proven 256/80K budget: a plain re-run (control, reproducing §03), an LR/loss warmup schedule, a curriculum that ramps the number of active relations, and earlyln — a parameter-free LayerNorm blended into the training-time read with weight α annealed linearly from 1.0 to 0.0 over the first half of training, then fully removed. At α=0 the forward pass is bit-identical to the plain exact-matmul contender (closed-form verified); evaluation always uses the inherited pure-matmul exact read (binary exponentiation vs an fp64 power reference), never the LayerNorm.

armtrain lossin-dist rec@0.9 (min over r, h=1/2/3)restricted eff. rankswap gapverdict
earlyln0.00521.0 / 1.0 / 1.07.98–7.99+0.553RECOVERED
baseline (control)0.8840.0 / 0.0 / 0.02.44–3.50+0.0009FAIL (reproduces §03)
warmup0.9820.0 / 0.0 / 0.01.70–2.42+0.0011FAIL
curriculum0.9860.0 / 0.0 / 0.01.67–2.48−0.0020FAIL
line chart: train loss vs optimizer step, log scale, for the four convergence-diagnosis arms (earlyln, baseline, warmup, curriculum) at the proven 256-batch/80K-step budget
fig 1Per-step train loss (log scale) for all four single-seed convergence-diagnosis arms, at the proven 256-batch / 80K-step budget. earlyln (vermillion) undergoes a sharp phase transition at step 8,000–8,500 (loss 0.62 → 0.06) and keeps descending to a final loss of 0.0052 — the only arm that ever leaves the neighborhood of 1.0. baseline (control, final loss 0.884), warmup (0.982), and curriculum (0.986) all stay flat in the [0.88, 1.02] band for the full 80K steps, reproducing §03's non-convergence. These endpoints line up with the table above: in-distribution recovered@0.9 = 1.0/1.0/1.0 (earlyln) vs 0.0/0.0/0.0 (all three failures), restricted effective rank 7.98–7.99 of 8 (earlyln) vs 1.67–3.50 (failures), and relation-swap gap +0.5526 (earlyln) vs ±0.002 (failures). Every point is the run's own logged loss (every 500 steps) — not smoothed or resampled; the mid-training spike near step 40,000 (earlyln briefly rising to ≈0.11 before resuming its descent) is real training noise, shown unedited. Data: experiment-runs/2026-07-11_ncr_opbank_recover/ncropbank_recover_{earlyln,baseline,warmup,curriculum}.json (each cell's train.loss_history), md5-verified against the committed manifest before use and cross-checked bit-for-bit against recover_verdict.json. Script: assets/plots/generate_ncr_opbank_recovery.py.

All three of earlyln's pre-registered recovery legs are cleanly met: in-distribution min-over-relations recovered@0.9 = 1.0 ≥ the 0.9 bar; restricted effective rank climbs to ≈7.99 of a possible 8 (operators formed to near-full rank, phase residual collapsing from 0.93–1.47 down to 0.016–0.020 — near-roots-of-unity permutation operators, the geometry a converged operator should have); and the swap gap (0.553, right-relation 0.666 vs wrong-relation 0.113, control −0.009) clears the pre-registered 0.3 bar — genuine relation-selective reading, not a blur. The other three arms all reproduce the flat-chance failure, which is what makes the recovery specifically attributable to the LayerNorm intervention rather than a schedule effect or a spontaneous transition.

what "recovered" means, precisely earlyln is a train-time crutch, removed before the model is ever evaluated. It does not change what the model computes at inference; it changes whether gradient descent can find the exact-matmul solution at all. The recovery is genuine convergence of the exact contender, not a different (LayerNorm-assisted) contender being evaluated.

05What's still open: far depth

earlyln converges in-distribution (h=1, 2, 3 — perfect, now confirmed 9/9 across a seed replication) and forms genuine, relation-selective operators in every seed. It has been shown to compose correctly at far depth in some seeds but not others — a genuine seed-bimodal split, not a uniform partial failure. At h*=61 — this design's own pre-registered far-depth comparison point, inherited from the single-relation design in finding no. 14 — the 9 replicated seeds' min-over-r recovered@0.9, sorted, reads 0.000, 0.000, 0.000, 0.004, 0.012, 0.615, 0.811, 0.918, 0.984: only 2/9 clear the strict bar, 2 more sit in (0.5, 0.9), and 5 fall below 0.5. An observed pairing across the 9 seeds (reported as observed, not shown causal): the four seeds with the lowest converged phase residual (max ≤0.0086) are exactly the four seeds with far-61 recovery ≥0.615, while the five seeds with higher residual (≥0.019) all sit at or below 0.049 recovery at h*=61. Phase error compounding multiplicatively over 61 hops of repeated squaring is a plausible mechanism connecting the two — a converged operator with slightly higher per-hop residual would compound to a much larger error by hop 61 — though this note does not claim to have isolated the cause, only to have surfaced the correlation.

RECOVERED means the trainability blocker — the exact contender would not learn the bank task at all — is solved, and that result now replicates across 9 seeds. It does not mean the bank contender is shown to beat its baselines at far compositional depth; that head-to-head is seed-dependent (2/9 clear the strict bar) and remains a separate, still-open gate this diagnosis did not close.

06A related result: exact composition extends to K=14, then hits a wall

A separate, single-relation (R=1) write-capacity probe asked a narrower question: how far past finding no. 14's tested K=8 and K=12 does exact composition extend on the plain (non-earlyln) recipe? Four single-seed cells at K∈{14, 15, 16} (two K=16 variants, one with 4× the hidden width):

cellparamstrain loss (step 1 → 80K)restricted eff. rankin-dist rec@0.9outcome
K=14 (d=16, h=64)170,8960.9997 → 0.0012≈14.01.000CONVERGED
K=15 (d=16, h=64)170,8961.0049 → 0.99151.4–2.90.000DEAD (did not train)
K=16, cond. A (d=32, h=64)175,0081.0052 → 0.9988≈1.00.000DEAD
K=16, cond. B (d=32, h=128)677,6640.9973 → 0.9964≈1.00.000DEAD (4× params, no help)

K=14 is a real, clean positive result — a new converged datapoint beyond finding no. 14's K=8 and K=12, independently shadow-certified (every fp64 shadow delta ≈5×10⁻⁸, binary-exponentiation and loop-read agree, zero flags): exact composition holds to a failure front at h=53 (h=11 and h=25 both read 1.000), and its phase residual (0.0072) is identical to K=12's archived value — the write is exactly as clean as it was two relation-sizes ago, wherever the model actually trains. K=15 and both K=16 conditions, by contrast, never left a train loss near 1.0 across all 80K steps — a discrete trainability collapse, the same failure class §04 diagnosed and fixed for the R=3 bank, not a gradual write-quality degradation. Because none of the K=16 cells trained, the original question this probe was built to answer (does extra capacity rescue a converged-but-degraded write, or does the write itself break at higher K) was MIXED / unresolved at the time — both K=16 conditions collapsed to the identical degenerate rank-1 solution, which is not evidence about write quality, just evidence that neither cell trained. The pre-registered next step — a re-run of K=15/16 with earlyln and ≥4 seeds, since only a cell that actually trains can measure whether the write breaks or capacity rescues it — has since run. §07 reports it.

key observation Two independent probes this session hit the same wall from different directions — an R=3 relation bank at K=8, and an R=1 single relation pushed to K=15/16 — and one fix (earlyln) recovered the first. §07 tests the second directly. The pattern worth naming: this architecture family's failure mode at its capacity edges looks less like "can't represent it" and more like "can't find it by gradient descent without help" — a trainability story, not a capacity story, in both places it has been diagnosed so far.

07K-scaling under earlyln: the wall moves one rung

§06 left an explicit, pre-registered next step open: re-run K=15/16 with earlyln at ≥4 seeds, and extend the ladder to a new, never-tested rung. That run has completed (NOVEL_ARCH_WATERFALL.md §11/§11.1/§11.2, opened and pre-registered before any GPU was touched): 16 cells, K∈{14, 15, 16, 24} × 4 seeds, the same 256-batch / 80K-step earlyln recipe as §04's bank recovery, scored on two independent, separately-gated criteria per K — gate 1 (convergence): does in-distribution recovered@0.9 ≥ 0.9 in ≥3/4 seeds ("CONVERGED-ROBUST")? — and, ONLY on cells that individually converge, gate 2 (far depth): is the converged cells' median recovered@0.9 at that K's own pre-registered h* in the HOLD band (≥0.9)? K=14 is a continuity check (it already converges on the plain recipe); the pooled verdict is scored as the WORST label among K∈{15, 16, 24} so no single good rung can be cherry-picked into an overall claim.

Kconv. rate (gate 1)gate-1 labelfar-depth median @ h*ladder verdict
K=14 (continuity)4/4CONVERGED-ROBUST0.9737 → HOLDSCALES
K=154/4CONVERGED-ROBUST0.9929 → HOLDSCALES
K=161/4CONVERGED-PARTIAL0.0 (the 1 converged seed)TRAINABILITY-STILL-LIMITED
K=240/4TRAINABILITY-DEAD— (none converged)TRAINABILITY-STILL-LIMITED
two-panel figure: left, bar chart of gate-1 convergence rate (converged seeds out of 4) per K value 14/15/16/24 with a dashed 0.75 CONVERGED-ROBUST reference line; right, dot plot of gate-2 far-depth recovered at 0.9 at each cell's own h-star, one dot per converged seed, with a dashed 0.9 HOLD reference line
fig 2Gate 1 (left, convergence rate out of 4 seeds per K) and gate 2 (right, far-depth recovered@0.9 at each cell's own pre-registered h*, one dot per seed that individually converged — gate 2 is scored only on converged cells, so K=16 shows a single dot and K=24 shows none). K=14 (grey, continuity check) and K=15 (green) both clear the 0.75 CONVERGED-ROBUST bar on gate 1 and the 0.9 HOLD bar on gate 2 in every scored seed; K=16 (sky blue) clears gate 1 in only 1/4 seeds and that seed's far-depth read is 0.0, not near the bar; K=24 (vermillion) clears neither gate — no bar reaches the gate-1 threshold and no dot exists for gate 2. Data: experiment-runs/2026-07-11_ncr_earlyln_scale/harvest_verdict.json (per-K rates and ladder verdicts) cross-checked bit-for-bit against all 16 raw cell JSONs' own eval.points ladder entries at each cell's h*, md5-verified against the committed manifest before use. Script: assets/plots/generate_ncr_earlyln_kscaling.py.

Pooled verdict (worst-of over the scored rungs K∈{15, 16, 24}): TRAINABILITY-STILL-LIMITED. Said plainly: the earlyln recipe does not unlock the K axis wholesale. It moves the trainability wall exactly one rung. K=15 — plain-recipe DEAD at n=1 in §06 — is now 4/4 converged and holds exact composition at far depth (h*=117, median 0.9929, every seed in the HOLD band, residuals 0.0020–0.0032). The wall re-forms immediately after: at K=16, only 1/4 seeds converge, and even that seed's write is 10–20× dirtier than K=15's (δ=0.0441 vs 0.002–0.003) — far depth fails at the very first ladder rung (front=13). K=24 fails outright (0/4).

Three banked positives survive this pooled negative, each verified against the raw cell JSONs, not asserted:

what this run does and does not establish It does NOT establish "NCR scales" — the pooled verdict over K∈{15,16,24} is TRAINABILITY-STILL-LIMITED, and a parameter-free training-recipe change is not expected to unlock every rung forever. It DOES establish that the wall is a trainability phenomenon, not a hard architectural ceiling — it moved under a controlled, zero-new-parameter intervention — and that each rung that fails now fails in a distinct, diagnosable way (K=16: converges in loss, recovery stuck, dirty writes; K=24: partial operator formation, budget-limited) rather than one undifferentiated collapse. Ledger: probe 0.09 + CUDA smoke 0.01 + main 6.96 ≈ 7.06 GPU-h of the ≤8 hard cap (88%), 16/16 cells completed, zero breaker trips. This run was pre-registered to STOP for the coordinator on completion — it does not authorize further ladder spend. Priced-but-not-launched next steps: a 2×-budget/longer-anneal probe at K=16 (≈3.5 GPU-h) and at K=24 (≈4 GPU-h) to test whether either wall is budget-limited before any architecture change.

08The next-lever wave: the wall was mostly a dimension-mapping convention

§07 stopped for the coordinator with two priced-but-not-launched next steps: a 2×-budget/longer-anneal probe at K=16 (the profile there — loss converges, recovery stuck at 0.60–0.97 with dirty writes — looked budget-limited) and the same at K=24 (loss descending to ≈0.36 with rank climbing toward 17.7/24 — partial operator formation, not a dead basin). Both ran. K=16 at 2× budget (160,000 steps, 4 seeds): Gate-1 jumps 1/4 → 3/4 CONVERGED, and the failure front — the ladder rung past which composition breaks — moves from 13 to 29 in 3 of those 4 seeds. But far depth stays exactly 0.0 in all 4, unchanged from 1×. K=24 at 2× budget: budget-flat-to-worse — mean residual rose (0.659 → 0.812), one seed collapsed further to δ=1.238, in-distribution recovery stayed 0.0 in all 4, and the failure front stayed pinned at 21 (=K−3, the trivial train-residue rung) in every seed at both budgets. Budget alone buys real convergence at K=16 and nothing at K=24.

That asymmetry motivated a pre-registered design round (NCR_NEXT_LEVER_DESIGN.md, cleared through an independent opus attack round — 1 CRITICAL conceded and restructured, 2 SERIOUS, 4 MODERATE/MINOR, all dispositioned before any cell launched) that set up a genuine three-way discriminator rather than one more parameter sweep. Three mutually exclusive, pre-pinned stories predicted opposite outcomes for the same experiment: Story S1 (this project's own earlier Mechanism-1 model, δ ∝ 1/spare-fraction) says a tighter state — less spare dimension beyond K — makes write quality worse, predicting a converged K=16 residual ≈8× worse than d=32's best seed; Story S2 (a convention-confound reading, seeded by the observation that K=14 and K=15 — both already at the tight spare gap d−K≤2 under this program's own ladder — trained cleanly while K=16 jumped to the much wider spare-fraction 0.5 convention) says the wall tracks the d=2K state-sizing convention itself, not absolute K, and predicts the opposite; and the registry's own absolute-K-cliff reading (§9.2) predicts K=16 fails no matter what d is set to. One clean experiment — retraining K=16 and K=24 at the tightest legal spare dimension, d=K+1, instead of the conventional d=2K — kills at least one story regardless of which way it lands.

20 cells ran on 2026-07-12 (queue jobs 060–081, ≈13.61 GPU-h of the design's 14.05 nominal): Q1 pushed K=16/d=32 to 4× budget (320,000 steps) to see whether the 1×→2× convergence trend was a real law; Probe A retrained K=16 at d=17 and K=24 at d=25 (both tight-spare, d=K+1) at plain 1× budget; Probe B held budget fixed and stretched the LayerNorm withdrawal schedule (anneal_frac 0.5 → 0.75) at both K. All three verdicts were read mechanically off the design's own pre-registered map, not judgment-called after the fact.

Q1 — the budget axis is NO-LAW, not a slowing law

Gate-1 convergence kept improving monotonically with budget (1/4 → 3/4 → 4/4 CONVERGED across 1×/2×/4×), which is the result a naive read would stop at. But the design's own diagnostic — matching each seed's write-residual (δ) and failure front across all three budgets, not just the pooled convergence rate — tells a different story: δ increased from 2× to 4× in 3 of 4 seeds (worse, not better, with more budget), and the one seed that was CONVERGED at 2× with front=29 regressed to front=13 at 4× despite staying CONVERGED and despite its own δ getting worse. Two of the design's three independent pre-registered anomaly triggers fired at once. Per the pinned rule, that forecloses extrapolation outright — this is not a "law that's flattening," it is 3 of 4 seeds moving the wrong direction, a distinct failure category the design map treats separately from a slowing law. A read-only trajectory check (the final 10% of each seed's training, the pure post-crutch window) found no visible loss-based explanation: training loss stays flat-to-improving in every seed across exactly the steps where δ and the failure front got worse — whatever drives the regression doesn't show up in the objective the model is actually optimized on. The conditional 8× budget reconnaissance this design priced never fired, on two independent grounds: its only firing condition (a clean law crossing into reach) never triggered, and separately the realized wave spend left only 6.39 GPU-h of headroom against the 6.60 the recon needed.

Probe A — tight-spare (d=K+1) CONFIRMS at both K

Retraining at the tightest legal spare dimension reaches 4/4 CONVERGED at both K=16 and K=24, on 1× budget alone — where d=2K needed 4× budget to reach 4/4 at K=16, and never reached even 1/4 at K=24 at any budget or anneal-shape tried. That result independently clears the pre-registered ≥3/4 bar at both K, which per the design's map falsifies both Story S1 and the pure absolute-K-cliff story at both K simultaneously — one experiment killing two stories twice over. The write-quality discriminator is even sharper than the convergence count: Story S1 predicted a converged K=16 residual around 0.35 (δ∝1/spare-fraction, ~8× worse than d=32's best seed); the measured range is 0.0028–0.0058 — 60–125× lower than S1's prediction and squarely inside Story S2's predicted 0.002–0.005 band, the same band K=14 and K=15 already occupy. At K=16 specifically, tight-spare also reaches genuine far-depth composition that d=32 never touched at any budget or anneal tried this session: 0.80–0.99 recovered@0.9 at h*=125 in 2 of 4 seeds, with those same 2 seeds holding one further ladder rung out (front=253). No d=32 cell — not at 1×, 2×, 4×, or anneal_frac=0.75, 16 cells total across three waves — ever produced a far-depth recovery above 0.0001.

two-panel figure comparing the conventional d=2K state-sizing against the tight-spare d=K+1 mapping at K=16 and K=24: left, bar chart of gate-1 convergence rate out of 4 seeds for four columns (K=16 d=32 at 4x budget, K=16 d=17 at 1x, K=24 d=48 at 1x, K=24 d=25 at 1x) with a dashed 0.75 CONVERGED-ROBUST reference line; right, dot plot of gate-2 far-depth recovered at 0.9 at each column's own h-star, one dot per converged seed, with a dashed 0.9 HOLD reference line
fig 3The conventional d=2K mapping (vermillion) against the tight-spare d=K+1 mapping (green). Left: Gate-1 convergence rate. K=16/d=32 needed 4× budget just to reach the same 4/4 that K=16/d=17 reaches on 1× budget alone; K=24/d=48 never converges at any budget or anneal-shape tried (0/4, shown here at its 1× reference), while K=24/d=25 reaches 4/4 on 1× budget. Right: far-depth recovered@0.9 at each cell's own pre-registered h* (125 for K=16, 189 for K=24), one dot per seed that individually converged at gate 1. K=16/d=32 at 4× budget converges in all 4 seeds but every one reads ≈0.0 at far depth (its far-depth failure was never a convergence problem); K=16/d=17 spans 0.13–0.99, with 2 of 4 seeds clearing the 0.9 HOLD bar on 1× budget. K=24/d=25 converges in all 4 seeds but its far-depth recovery stays weak and seed-variable (0.00–0.06) — Gate-1 is solved at K=24 by tight-spare, far depth is not. Data: experiment-runs/2026-07-12_ncr_nextlever_wave/dratio/earlyln_K{16,24}_s{0-3}.json (Probe A) and .../budget4x/earlyln_K16_s{0-3}.json (Q1, the best Gate-1 rate d=32 reaches at any budget), plus experiment-runs/2026-07-11_ncr_earlyln_scale/earlyln_K24_s{0-3}.json (K=24/d=48 1× reference, 0/4 CONVERGED at every budget/anneal tried). Gate-1/gate-2 values are re-derived directly from each cell's own eval.points ladder entries at its pre-registered h*, cross-checked against the registry's §11.2/§11.4 tables, not read from a harvest summary alone; all source files md5-verified against their directories' committed manifests before use. Script: assets/plots/generate_ncr_dmapping_confirm.py.

The distinction that must not get collapsed: at K=24, tight-spare solves Gate-1 (convergence) but not Gate-2 (far depth). K=24/d=25's four converged seeds land far-depth fronts of {21, 93, 189, 189} and sweep-minimum recoveries of {0.0511, 0.0000, 0.0448, 0.0000} — real in two seeds, essentially zero in the other two, no seed clearing a meaningful bar. K=16's tight-spare far-depth win is strong; K=24's is not — a CONFIRM on the convention question, not a claim that K=24 is solved end to end.

Probe B — anneal shape: partial confirm at K=16, falsified at K=24

Stretching the LayerNorm withdrawal schedule at fixed 1× budget (anneal_frac 0.5 → 0.75) isolates whether Q1's budget effect was actually an anneal-length effect in disguise. At K=16 it partially is: Gate-1 moves 1/4 → 2/4 CONVERGED, and mean δ drops 38.5% (0.1040 → 0.0640) — roughly half of the 2×-budget cell's 72% drop at the same δ metric — so a longer anneal at the same step count reproduces a material fraction of the budget effect on write quality. But the failure front stays pinned at 13 in all 4 B-16 seeds, versus the 2×-budget cell's move to 29 in 3 of 4 — anneal length alone buys write-quality improvement but zero far-depth movement; the extra raw step count budget-scaling provides appears to matter specifically, not just the longer anneal it also happens to imply. At K=24, Probe B is flatly negative: Gate-1 stays 0/4, in-distribution recovery stays 0.0 in all 4, the failure front stays pinned at 21 (trivial) in all 4, and the δ shift (0.659 → 0.579, a 12% dip) sits entirely inside the pre-existing K=24 seed-to-seed noise band (the 2×-budget cell alone spanned 0.511–1.238). Because the design's named-backup candidate (curriculum warm-start from a trained K=16 model) only fires if both Probe A and Probe B land negative at K=24, and Probe A landed positive there, that backup path stays closed — the live K=24 lever remains the tight-spare convention line, not curriculum warm-start.

the three-story discriminator's verdict All three pre-registered stories were addressable by this wave, and the evidence selects one at the two K values this wave actually tested (K=16, K=24): Story S2, the convention-confound reading. The K-scaling wall that stopped further ladder spend in §07 was substantially an artifact of pairing the conventional d=2K state-sizing rule with K in {16, 24}, not a property of absolute K and not a compute-starvation problem — at those two K values. Story S1 (tight spare is worse) and the registry's own absolute-K-cliff reading are both falsified at K=16 and K=24 simultaneously by Probe A's joint CONFIRM. This does not extend past K=24. §09's K=32 generalization test found the tight-spare fix dead at every d tried — including Gate-1 in-distribution convergence itself — so a K-dependent component of the wall re-emerges beyond K=24; see §09 before citing this result at any K>24.

What this wave does NOT establish, stated plainly. (1) The d(K) mapping law's shape at K≤24. Whether d=K+1 is the optimal spare fraction, or whether d∈{1.25K, 1.5K} would do better or worse at K=16/K=24, is untested by this wave — the design's own follow-on s-sweep is priced but not run here. (2) K>24 behavior under the corrected mapping — UPDATE, now tested and NEGATIVE, not merely open. A follow-up 12-cell K=32 generalization test found the tight-spare convention does not extend past K=24: every cell dead at every d tried (d=K+1, 1.25K, 1.5K), including Gate-1 in-distribution convergence itself. See §09. (3) Why d=2K hurts far depth specifically. K=24/d=48's failure across every budget and anneal-shape actually tried at that K (1×, 2×, anneal 0.75 — 12 cells, always 0/4; no 4× variant was ever run at K=24) is suggestive, but no controlled experiment isolates "d=2K per se" from "this particular K/d pairing" as the causal factor — mechanism remains open, and does not explain the K=32 result either (§09). (4) K=24's far-depth reliability even under d=K+1. Gate-1 convergence is solved, but the four converged seeds' fronts span the full range from trivial (21) to the pre-registered target (189) within one cohort — an unexplained variance this wave surfaces but does not resolve.

GPU-h ledger, this wave §11.3 (2× budget/anneal probes, the priced follow-on §07 itself named): 8 cells, K16 3.30 + K24 3.75 ≈ 7.05 GPU-h. §11.4 (the pre-registered next-lever wave): 20 cells, Q1 4× 6.61 + Probe A 3.44 + Probe B 3.56 ≈ 13.61 GPU-h (96.9% of the 14.05 nominal, ≤20 hard cap). Combined next-lever spend: ≈20.66 GPU-h across 28 cells, zero breaker trips, zero restarts. The conditional 8× recon (≈6.6 GPU-h priced) never launched — correctly held per its own stopping rule.

09The mapping-law grid: K=32 breaks the tight-spare fix

§08's own disclosed gap (item 2 in "what this wave does NOT establish," above) named the obvious next question: does the d=K+1 tight-spare convention that CONFIRMED at K=16 and K=24 keep working past K=24? A pre-registered generalization test answers it, and the answer is negative. 12 cells ran 2026-07-12 (queue jobs 009–020 of the mapping-law wave, NCR_MAPPING_LAW_DESIGN.md, independent opus audit CLEARED before launch — 0 FATAL / 0 SERIOUS / 1 NIT, fixed): K=32 at three spare-dimension settings — d=33 (K+1, the tight-spare convention that confirmed at K≤24), d=40 (1.25K), and d=48 (1.5K) — × 4 seeds each, scored on the same Gate-1 (convergence) / Gate-2 (far depth) criteria as §07/§08.

dconventionGate-1 (convergence, /4)best cell, indist. min recovered@0.9write residual (phase resid.) rangefailure frontfar-depth @ h*=253
d=33K+1 — the confirmed K≤24 convention0/4 CONVERGED (3 PARTIAL, 1 DEAD)0.8710.594–0.98629 (=K−3)0.0
d=401.25K0/4 CONVERGED (4 DEAD)0.0010.402–1.30529 (=K−3)0.0
d=481.5K0/4 CONVERGED (4 DEAD)0.0000.708–0.99129 (=K−3)0.0

All 12 cells are dead, and this is a stronger negative than "converges but doesn't compose far." §08's own K=24/d=25 result already showed Gate-1 solved with far depth weak and seed-variable; K=32 fails one gate earlier than that — Gate-1 in-distribution convergence itself never clears the 0.9 bar at any of the three d's tried (0/12 CONVERGED overall, re-derived directly from each cell's raw eval.points using the harvest script's own formula: indist_min = min recovered@0.9 over train-support h∈{1,2,3}; CONVERGED requires indist_min≥0.9 and mean A_eff_rank≥0.9K), including at d=K+1, the exact mapping that reached 4/4 CONVERGED at both K=16 and K=24 on 1× budget alone. The best cell anywhere in the grid (d=33, seed 3) reaches indist_min = 0.871 — under the 0.9 bar, the same kind of near-miss this project's own convention elsewhere labels PARTIAL, not CONVERGED. The failure front sits at 29 (=K−3) in all 12 cells — the trivial train-residue rung, meaning composition never reaches a single rung past the training distribution — and far-depth recovery at the pre-registered h*=253 reads 0.0000 everywhere, consistent with Gate-1 never converging. The registry's own formal rule (NCR_MAPPING_LAW_DESIGN.md §1.6, applied mechanically) reads this grid as CLOSED-AT-THIS-K: none of the three tested d-arms reaches CONVERGED-ROBUST, so the K-ladder escalation stops at K=32 and the planned K=48 grid stays blocked, not launched. A same-K citation-only reference at the conventional d=2K (d=64, 4 more seeds, previously measured, no new spend) is also 4/4 DEAD with front pinned at 29 — every d value tried at K=32, tight or wide, fails Gate-1.

what this means for §08's confirm The d=K+1 tight-spare CONFIRM (§08) is real and stands at K=16 and K=24 — independently re-verified against the raw cell JSONs this session. It does not generalize to K=32: an absolute-K, or otherwise K-dependent, component of the wall re-emerges beyond K=24, and it is strong enough to break basic convergence, not just far-depth composition. One qualitative nuance survives, reported rather than smoothed over: d=K+1 is the "least dead" of the four arms tried at K=32 — 3 of 4 seeds land PARTIAL (0.517–0.871) with A_eff_rank already clearing its own bar, where d=1.25K/1.5K/2K are 4/4 DEAD with in-dist recovery ≈0.0000–0.0008 in every seed — so the tight-spare convention's relative advantage still holds directionally at K=32, it simply no longer clears the CONVERGED-ROBUST bar. The project's own Q3 write-residual mechanism analysis (block-decomposition of the trust-screen leakage — matrix-thinking/NOVEL_ARCH_WATERFALL.md §11.4a) explains why d=2K underperforms d=K+1 at K≤24; it does not explain why d=K+1 itself now fails to converge at K=32 — that is compatible with, not contradicted by, §11.4a: leakage-shape may still govern relative differences among d's at a fixed K, while a separate, unidentified factor gates whether any d at K=32 clears Gate-1 at all.

Data: read directly from the raw per-cell JSONs on box youthful-indigo-turkey (~/ncr/results_earlyln_dratio{,125,150}/earlyln_K32_s{0-3}.json, queue jobs 009–020, ≈6.37 GPU-h total), re-derived using the production harvest script's own Gate-1 formula (ncr_earlyln_scale.py::_cell_gate1), not read from any intermediate summary — and cross-checked bit-for-bit against the registry's own independently-pulled harvest. Design and pre-launch audit: matrix-thinking/NCR_MAPPING_LAW_DESIGN.md. Registry verdict record: matrix-thinking/NOVEL_ARCH_WATERFALL.md §11.5 (WAVE-1 harvest, 21/21 cells, queue jobs 008–028; 0 axis_c_lock/status/blank_out anomalies across all 25 cells pulled).

10The K-axis book closes at K=32 — and a free instrument falls out

§09 left one thread open: K=32's own d=K+1 arm (d=33) was the "least dead" cell class in that grid — 3 of 4 seeds PARTIAL, one seed at 0.871, just short of the 0.9 Gate-1 bar — while every wider d tried was flatly 4/4 DEAD. That is exactly the profile K=16/d=32 showed before 4× budget took it from 1/4 to 4/4 CONVERGED (§08's Q1). A final, pre-registered probe (NCR_MAPPING_LAW_DESIGN.md §4, its own dissociation design, independent opus audit CLEARED before launch) asked the obvious question directly: does extra training budget rescue K=32/d=33 the same way, and does far-depth composition come along with it? 8 cells ran 2026-07-12 (queue jobs 192–199, ≈12.08 GPU-h): K=32/d=33, budgets {2×=160,000 steps, 4×=320,000 steps} × 4 seeds, the same earlyln recipe and h*=253 target as §09.

budgetGate-1 CONVERGED / 4failure front (all cells)far-depth @ h*=253
1× (cited, §09)0/4 (3 PARTIAL, 1 DEAD)29 (=K−3, all 4)0.0000
1/4 CONVERGED29 (all 4)0.0000
2/4 CONVERGED29 (all 4)0.0000

Budget helps Gate-1 directionally — 0/4 → 1/4 → 2/4, never regressing — but plateaus below the 3/4 CONVERGED-ROBUST bar at every budget tested, and far depth does not move at all: the failure front is pinned at 29 (=K−3, the trivial train-residue rung) in all 12 cells now on record for this arm across all three budgets (1×, 2×, 4×), and rec@h* reads 0.0000 in every one of them, including the 3 individually-CONVERGED cells.

Why no clean verdict label — and why that's the pre-registration working, not a dodge

The design's own per-seed trajectory diagnostic (matching each seed's write residual δ across 1×→2×→4×, the same check that caught the K16 4× regression in §08) finds the identical shape here: δ dips from 1× to 2× then rises again at 4× in 3 of the 4 seeds — non-monotonic, not a slowing law. That single trigger is sufficient, by the pre-registration's own wording, to fire the ANOMALY check. Per its own binding exhaustiveness clause — "this map applies ONLY when the ANOMALY check has NOT fired; an ANOMALY pre-empts the mechanical map entirely" — no (a)/(b1)/(b2)/(c) verdict label is assigned to this probe. This is the second time this exact anomaly shape has appeared in this program at the same recipe (K16 at 4× budget, §08's Q1); neither occurrence has a loss-history explanation — training loss stays flat-to-improving in every seed across exactly the steps where δ gets worse.

stated plainly No verdict label is assigned to this probe, and that is reported as a finding, not smoothed over or forced into the nearest-fitting bucket. The pre-registration's own rule anticipated exactly this failure mode and named the correct response in advance: report the trajectory numbers-only, do not extrapolate, escalate. That is what this record does.

The book closes anyway, on a question independent of the anomaly. The pre-registration's only outcome that could have re-opened the K-ladder (licensing K=48's own grid) requires both ≥3/4 CONVERGED at some budget and that budget's median failure front ≥ h*=253. Neither half is met by the raw numbers, anomaly or no: Gate-1 tops out at 2/4 (short of the 3/4 bar) at the best budget tested, and front is pinned at the trivial rung in literally every cell tried, at every budget, including the 3 seeds that individually cross the Gate-1 bar. K=48's own reserved d(K) grid and the rest of the parked K≥48 backlog (~144 GPU-h) stay blocked — this was already true before the anomaly question was even asked.

This closes the K-axis book at K=32. Closed: whether more compute rescues K=32's tight-spare wall into something that licenses further K-escalation — no, on both counts that matter (convergence never reaches ROBUST; far depth never moves off the trivial rung, at any budget tested). Not established: why. §08's Q3 leakage-shape mechanism (normalized leakage 7–14× larger at d=2K than d=K+1, §11.4a) explains why d=2K underperforms d=K+1 within the regime where d=K+1 itself still converges — K≤24 — but was explicitly scoped not to speak to why d=K+1 itself stops clearing Gate-1 at K=32; no K=32 leakage analysis exists. Also not established: whether an even larger budget (8×+) or an entirely different lever would behave differently — untested, and not licensed by this record on either of its own two independent stopping grounds (its firing condition never triggered; realized spend also left the wave under its own recon-budget threshold).

The free instrument: far-depth composition is predictable from the write residual alone

One genuine positive fell out of the same wave, and belongs here rather than getting lost in the negative. §09's own K=24/d=25 cells (the tight-spare mapping that CONFIRMED convergence at that K) were seed-extended from the original n=4 to n=12 (8 new seeds, same recipe, zero architecture change) specifically to ask whether the seed-to-seed far-depth spread there — fronts of {21, 93, 189, 189} at n=4 — was write-quality-driven or an orthogonal coin flip. It is the former, decisively: Spearman ρ(δ, failure front) = −0.877 and ρ(δ, sweep_min_recovered) = −0.873 (n=12 for both), far past the pre-registered |ρ|≳0.6 "materially large" bar, both negative as predicted — the lower a seed's converged write residual, the further and more reliably it composes at depth.

two-panel scatter plot, x-axis log-scale write residual delta shared by both panels, all 12 K=24 d=25 seeds: left panel, failure front h (up to h*=189) vs delta, Spearman rho -0.877; right panel, sweep_min_recovered at 0.9 (0 to 1, HOLD bar at 0.9) vs delta, Spearman rho -0.873
fig 4K=24/d=25, all 12 seeds (the original 4 from §08's Probe A plus 8 new seeds from the seed extension). Both panels share the same x-axis: each seed's own converged write residual δ (phase_resid_max_mean, log scale). Left: the ladder rung composition survives to (failure_front_h) — seeds cluster at three discrete rungs (21, 93, 189=h*), and lower-δ seeds sit at higher rungs. Right: the strict whole-sweep-window reliability metric (sweep_min_recovered@0.9; the HOLD bar, ≥0.9, dashed) — only the single lowest-δ seed clears it. Both correlations are computed directly from the 12 raw cell JSONs (not copied from any summary) and cross-checked against the registry's own cited values, exact match. Data: experiment-runs/2026-07-12_ncr_nextlever_wave/dratio/earlyln_K24_s{0-3}.json (original 4 seeds) and experiment-runs/2026-07-12_ncr_mappinglaw_wave1/q2_K24_seedext/earlyln_K24_s{4-11}.json (8 new seeds), md5-verified against each directory's committed manifest before use. Script: assets/plots/generate_ncr_k32_closed.py.

Practically, this is a cheap, validated instrument: a model's write residual — a number already available from ordinary convergence-time diagnostics, no far-depth eval sweep required — predicts whether it will compose reliably at depth, without running the expensive ladder at all. The n=12 cohort also sharpens the honest reliability picture rather than flattering it: sweep_min_recovered clears the strict HOLD bar (≥0.9) in 0/12 seeds, lands DEGRADED (0.5–0.9) in 1/12, and FAILs (≤0.5) in 11/12 — K=24/d=25's far depth is predictable now, but it is still not reliable in absolute terms; the n=4 cohort's bimodal-looking {21, 93, 189, 189} spread was an early read of a real, graded, low-success-rate distribution, not two clusters.

what this section establishes and does not Establishes: budget escalation does not rescue K=32/d=33 to robust convergence, and far-depth composition never moves off the trivial rung at any budget tested — closing the K-axis book at this K, independent of the one probe that could not be cleanly labeled. Establishes: a seed's write residual predicts its far-depth reliability at K=24/d=25 with a large, cross-checked correlation (n=12) — a free diagnostic, not yet tested at any other K or mapping. Does NOT establish: why K=32 fails at every d tried, including the mapping that works at K≤24; whether a larger budget or a different lever would behave differently (untested, unlicensed by this record); or whether the δ-predictability result generalizes beyond K=24/d=25. GPU-h ledger: budget-rescue probe 4.20 (2×) + 7.88 (4×) ≈ 12.08 GPU-h (88.5% of the 13.65 nominal, no breaker trips); Q2 seed extension (8 new K=24 seeds) ≈ 4.03 GPU-h. Both stop for the coordinator; neither authorizes further ladder spend.

Data: read directly from the raw per-cell JSONs on box youthful-indigo-turkey (~/ncr/results_earlyln_budget2x/, ~/ncr/results_earlyln_budget4x/, queue jobs 192–199), re-derived using the same Gate-1/Gate-2 logic as every prior section on this page, not read from any intermediate summary; axis_c_lock_sha256 independently recomputed and matched for all 8 cells. Design and pre-launch audit: matrix-thinking/NCR_MAPPING_LAW_DESIGN.md §4. Registry verdict record: matrix-thinking/NOVEL_ARCH_WATERFALL.md §11.6 (the budget-rescue probe) and §11.5 (the Q2 seed extension and its covariate result).

11Caveats — read before citing

12Reproducibility

Every number above is read from archived, md5-verified raw JSONs, not from any intermediate summary. Phase-0: experiment-runs/2026-07-11_ncr_opbank_phase0/ (gate table, rate probe, 3 cell JSONs, 6 per-relation swap-ablation locks, md5 manifest). Recalibration: experiment-runs/2026-07-11_ncr_opbank_recal/. Convergence-recovery diagnosis: experiment-runs/2026-07-11_ncr_opbank_recover/ (4 cell JSONs, 12 per-relation locks, verdict JSON, md5 manifest). Write-capacity probe: experiment-runs/2026-07-11_ncr_wcap_diag/ (4 cell JSONs, 4 locks, harvest stdout, verdict JSON, md5 manifest). Seed replication (n=9): experiment-runs/2026-07-11_ncr_opbank_seedrep/ (SUMMARY.md, seedrep_harvest_summary.json, all 8 seed JSONs/locks/logs, md5 manifest). K-scaling under earlyln (§07): experiment-runs/2026-07-11_ncr_earlyln_scale/ (16 cell JSONs, 16 Axis-C locks, 16 cell logs, supervisor/worker scripts, DONE sentinel, harvest_verdict.json, exact build sources, rate-probe subdir, md5 manifest). 2× budget/anneal probes (§08): experiment-runs/2026-07-12_ncr_earlyln_budget2x/ (8 cell JSONs, 8 Axis-C locks, SUMMARY.md, md5 manifest). Next-lever wave (§08): experiment-runs/2026-07-12_ncr_nextlever_wave/ (20 cell JSONs across budget4x/, dratio/, annealshape/ subdirectories, 20 Axis-C locks, SUMMARY.md, md5 manifest). K=32 mapping-law grid (§09): 12 cell JSONs + 12 Axis-C locks on box youthful-indigo-turkey at ~/ncr/results_earlyln_dratio{,125,150}/earlyln_K32_s{0-3}.json (queue jobs 009–020), with the full 21-cell WAVE-1 (queue jobs 008–028, also covering the K=48 rate-probe citation and the K=24 seed-extension to n=12) archived at experiment-runs/2026-07-12_ncr_mappinglaw_wave1/ (25 pulled cell JSONs, Axis-C locks, SUMMARY.md, md5 manifest, repo tier — the K=24 seed-extension's 8 new seeds live at its q2_K24_seedext/ subdirectory, §10's δ-predictability instrument). K=32 budget-rescue probe (§10): experiment-runs/2026-07-12_ncr_k32_budget/ (8 cell JSONs across budget2x_earlyln_K32_s{0-3}.json / budget4x_earlyln_K32_s{0-3}.json, 8 Axis-C locks, SUMMARY.md, md5 manifest, repo tier; SSD mirror byte-verified). Design and gauntlet record: matrix-thinking/NOVEL_ARCH_WATERFALL.md §8.1-§8.10, §9.1-§9.10, §11-§11.6; matrix-thinking/NCR_NEXT_LEVER_DESIGN.md (the pre-registration, including the independent attack round record); matrix-thinking/NCR_MAPPING_LAW_DESIGN.md (the K=32 generalization test's and the budget-rescue probe's pre-registration and audit, §1.6/§2.1 and §4 respectively).

This note extends finding no. 14, "O(log h) reads: 20.9× faster at depth 1,021 — and it composes exactly" from one relation to a bank of three, and its K=14 result extends the same finding's exactness frontier past K=12. Read finding no. 14 first for the base architecture, the exact-composition mechanism, and the O(h)-baseline comparisons this note inherits without re-deriving.

References

  1. Schlag, I., Munkhdalai, T., & Schmidhuber, J. (2021). Learning Associative Inference Using Fast Weight Memory. ICLR 2021, arXiv:2011.07831 — source of the fwm-bank baseline architecture that proves the bank mechanism works.
  2. Ba, J. L., Kiros, J. R., & Hinton, G. E. (2016). Layer Normalization. arXiv:1607.06450 — the normalization primitive annealed during training in the earlyln convergence fix.
  3. See also finding no. 14, "O(log h) reads: 20.9× faster at depth 1,021 — and it composes exactly" — the single-relation base result this note extends.