research note  ·  finding 12  ·  methodology — endpoint inconclusive, dissociation replicated 4×

When the instrument is the failure: a 0-vs-1.0 readout contradiction on perfectly converged models

Sam Larson

pebble, San Francisco

July 10, 2026  ·  updated July 10, 2026 (promotion call resolved — finding no. 13)  ·  updated July 11, 2026 (the same [K,V]/[V,K] transpose-bug class recurred independently a third time, in an unrelated program — finding no. 15)  ·  sam@pebbleml.com

abstract

A 62-cell sweep testing whether a recurrent composer generalizes exact composition to 8× its training depth completed cleanly, and the pre-registered mechanical endpoint read FALSIFY. Then the instrument-health pass found something worse than a failed hypothesis: the primary readout and its pre-registered crosscheck contradicted each other at 0-vs-1.0 magnitude on exactly the cells that had converged perfectly (training loss ≈ 10⁻⁴), while agreeing — both ≈ 0 — on every cell that hadn't. The tiebreak localized the defect: the primary lens assumes the model's state basis sits in the identity gauge, an assumption validated on a different architecture and silently false on this one — a perfect model in a rotated basis reads exactly 0 under it, by construction. The corrected read was not taken on faith: a shuffled-target falsifier, pinned before any number was trusted, would have voided the tiebreak had the crosscheck read ≥ 0.5 on permuted targets; it read 0.00 / 0.00 / 0.05. Under the corrected lens the endpoint is still FALSIFY under the as-built pins — for more informative reasons — and moves to INCONCLUSIVE after two pre-registered pin ambiguities discharge. No capability win is claimed; the dissociation and the audit trail are the finding. Unpublished.

01The experiment underneath

The composer is a delta-rule fast-weight model whose state update is a product of n_h Householder-like factors per step (DeltaProduct-style). Five task groups (S3, S4, S5 — symmetric groups; A5, A6 — alternating groups) each define an exact-composition task: train on operator sequences of depth ≤ 8, evaluate recovery of the composed operator at depths 16 / 32 / 64 — up to 8× the training support. The pre-registered contrast: a contender arm with extended step size β ∈ [0, 2] (which makes genuine reflections reachable) against an otherwise-identical baseline restricted to β ∈ [0, 1]. The endpoint asks whether the contender measurably separates from the baseline at the far checkpoint on the two gating groups, S5 and A6.

Recovery is scored by two pre-registered readouts. The primary lens reconstructs the composed operator from the state through a scale-only "degauge" pipeline — it assumes the model's internal basis matches the task basis up to scale. The crosscheck lens makes no such assumption: it fits an orthogonal intertwiner (full-Q Procrustes) on a fit split of items and scores recovery on an index-disjoint eval split. The crosscheck was in the registration from the start, because an earlier stage of this program had already caught the primary's class of failure once.

02The contradiction

scatter of primary vs crosscheck recovery at 8x depth: converged contender cells read 0 on primary and 1 on crosscheck; all non-converged cells agree near 0
fig 1All 62 sweep cells at the far (8×) depth: primary-lens recovery (x) vs crosscheck-lens recovery (y). Points jittered ±0.014 and clipped to [0, 1] for visibility of coincident cells. Wherever training converged (vermillion; final_loss ≤ 0.012 — the grid is bimodal, next-worst 0.069), the two lenses disagree at up to 0-vs-1.0; wherever it did not (orange = contender, blue = baseline), the lenses agree near zero. A readout that "reads high on junk" would sit high on the blue squares too; it never does. Data: experiment-runs/2026-07-10_stage2_calibration/remetric_2p32/crosscheck_lens_verdict_output.json (62-cell flat table).

The pattern's alignment with convergence is the tell. The lenses agree on all 25 baseline cells (which fit training poorly everywhere, loss 0.11–0.35) and on every non-converged contender cell. They disagree only where the model actually solved training — the S4 family is the cleanest case: five out of five seeds at loss < 5×10⁻⁴, primary reads 0.05–0.15 at far depth, crosscheck reads 1.00. Both readings cannot be right about the same states. Either the primary is blind to converged solutions, or the crosscheck is trivially satisfiable and reads high on anything.

03The tiebreak — and the falsifier it had to survive

The tiebreak was adjudicated from raw artifacts and code, on four independent grounds: (1) the crosscheck is leakage-guarded by construction — the intertwiner is fit on the fit split only and scored on a disjoint eval split, so "trivial satisfiability" would require it to overfit data it never saw; (2) the crosscheck demonstrably discriminates — it reads ≈ 0 on every non-converged cell in the grid (fig 1's blue squares); (3) the primary's failure mode was already documented in this program's own records: its scale-only degauging is basis-brittle, and the empirical basis for trusting the identity-gauge assumption ("Q̂ ≈ I on every real checkpoint") had been measured on the previous architecture's states. The composer is a different architecture with no entitlement to that gauge — a perfect model in a rotated basis reads 0 under Q̂ = I by construction; (4) a synthetic-injection precedent where ground truth was known resolved the same class of contradiction to the crosscheck.

An argument, however layered, is not evidence — so the tiebreak pinned its own falsifier before the corrected read was trusted: re-run the crosscheck on converged checkpoints with the targets shuffled (correspondence between states and targets broken, same shapes and marginals). If the crosscheck read ≥ 0.5 on shuffled targets, the tiebreak was pre-declared wrong and the whole contradiction would escalate to an instrument rebuild.

converged control cellreal targetsshuffled targetsfalsifier (≥ 0.5) fires?
A6 · n_h=4 · seed 01.0000.000no
S5 · n_h=4 · seed 00.8000.000no
S4 · n_h=2 · seed 21.0000.050no

The "real" column also reproduced the committed sweep values bit-for-bit, confirming the recompute harness runs the production pipeline rather than a reimplementation of it. The re-metric itself needed one genuinely new number per cell (the crosscheck reading at the training-depth ceiling, which the sweep had computed but not persisted); the recompute was validated by reproducing all 62 cells' committed primary readings to < 10⁻⁹ before any new number was used.

key observation The instrument that failed here had passed its validation — on a different architecture. Gauge-type assumptions ("the model's basis matches the task basis") are architecture-relative, and a readout carrying one must be re-validated per architecture or replaced with a gauge-free construction. The only reason this was caught is that a second, independently-constructed readout was pre-registered alongside the first — and the only reason the correction is trustworthy is that it survived a falsifier pinned in advance.

04What the corrected lens changes — and what it does not

Honesty cuts both ways: re-reading the full grid under the crosscheck lens does not flip the verdict. The mechanical endpoint under the as-built pins is still FALSIFY — but the reason changes from "no detectable signal anywhere" (the broken lens's face-value reading) to two specific, disclosed confounds: A6's decisive configuration (n_h = 2) never converges under either lens — a lens-independent trainability fact, and itself a previously-untested n_h-sufficiency measurement (identically-budgeted n_h = 4 cells converge 3/3 on the same task) — and S5's decisive triad is dragged below its bar by one pre-classified trainability-outlier seed that reads zero under both lenses despite converged training loss, while its other seeds clear 65–80% of their own ceiling against a baseline pinned at exactly 0.0.

Two pin ambiguities then discharge along routes quoted from the pre-registration itself, not invented post hoc: A6's decisive n_h was registered as "calibration-pending," and its own flanking grid answers it (n_h = 4: 3/3 converged, far-depth crosscheck 1.00/1.00/1.00, zero seed variance); S5's ambiguous triad (CI straddling its bar) triggers the pre-registered seed extension to n = 5 — and both new seeds land the best S5 training losses in the grid, read crosscheck 1.00 at every depth, and read ≈ 0 under the primary lens: the dissociation reproduced a third and fourth time, out-of-sample. The pooled S5 quintet still fails its own far bar (0.690 vs 0.801) because the outlier seed stays in the aggregation — the pre-registered remedy is more seeds, never exclusion.

per-group far-depth crosscheck recovery, contender vs restricted baseline, with each group's pre-registered bar
fig 2The endpoint under the discharged pins (A6 decisive n_h = 4; S5 at n = 5, pooled with its variance-gate flag disclosed), crosscheck lens decisional: per-group far-depth (D = 64, 8× train) recovery for the contender (vermillion) vs the β-restricted baseline (blue), with each group's own pre-registered bar (dashes; 90% of its own D = 8 ceiling). A6 — the theorem's strongest exclusion case — now shows the full pre-registered pattern: 1.00 at 100% of its own ceiling vs a baseline at exactly 0.0. S4 shows the same as a non-gating corroboration. S5 and A5 miss their bars on trainability grounds; S3's baseline fails to collapse. Mechanical verdict: INCONCLUSIVE (mixed pattern). Data: experiment-runs/2026-07-10_stage2_calibration/route_2p33/route_2p33_verdict_output.json.

The endpoint of record. Under the as-built pins: FALSIFY (both lenses, recorded). Under the discharged pins: INCONCLUSIVE — separation present at one gating group (A6) and absent at the other (S5), which the pre-registration routes to diagnosis, not to a verdict. Whether the discharged-pin reading supersedes the as-built one as the stage verdict is an explicitly-pending promotion call. What is not claimed anywhere: a compositional-depth capability win.

Update (July 10). The pre-registered diagnosis round has since run and the promotion call has been made: the ratified verdict of record is INCONCLUSIVE-TRAINABILITY-LIMITED — every miss in the endpoint is mechanism-diagnosed as a trainability event (a rank-deficient basin at S5, a depth-graded architecture ceiling at A6 n_h ≤ 2, a convergence lottery at A5), and every converged configuration composes exactly at 8× its training depth. The full diagnosis, with the trainability qualifier attached to every number, is finding no. 13, "Composes exactly at 8× training depth, where it converges". Nothing on this page is retracted; the as-built FALSIFY stands as this record's verdict.

05Caveats — read before citing

06Reproducibility

Everything is recomputable from committed raws: experiment-runs/2026-07-10_stage2_calibration/sweep_results/ (all 62 cell JSONs + the harvest report), …/remetric_2p32/ (the ceiling-recompute and teeth-control script + outputs, the shadow-cell verdict harness that calls the production verdict function unmodified, and the 62-cell flat table behind fig 1), and …/route_2p33/ (the two S5 extension-cell JSONs, the routing harness, and the four-verdict output behind fig 2). The re-metric and routing stages were CPU-only re-reads plus two 8,000-step training cells (≈ 0.05 GPU-h); the sweep itself was ≈ 2.6 GPU-h. Figure script: assets/plots/generate_broken_lens.py, which reads the archived verdict JSONs directly.

References

  1. Siems, J., et al. (2025). DeltaProduct: Improving State-Tracking in Linear RNNs via Householder Products. arXiv:2502.10297
  2. Grazzi, R., et al. (2025). Unlocking State-Tracking in Linear RNNs Through Negative Eigenvalues. ICLR 2025, arXiv:2411.12537