sean.theinformed.org / training / dcr / where the research stands
Where the research stands
8 October 2026. The program began as one study of a new way to build a transformer's inputs. That study failed on its own pass lines in its first week, and the question behind it moved inside the model. Eight lines have run since 3 October, about 1,500 training runs; seven are closed and one is running tonight. This page says what each asked, what came back, and what has held up. The status page has the live numbers and the replay; the guide explains the first study from the ground up; the notebook holds every entry.
The question
A small transformer learns a family of programs: a position on a 7 by 7 grid, seven operations that move it, and a target it must print. Training shows it every operation and most pairs of them. The held-out tests ask for what it never saw: pairs of operations in a new order (combinations), an argument in a role it never filled (role binding), and a name bound to an operation inside the prompt (rebinding). On these the plain model scores about 0.6 on combinations and far less on binding, and the gap between what it has seen and what it can put together is the program's subject. Each line changes one place in the model, at matched size and compute, and asks whether that place is where the missing ability lives. A second set of runs trains the same designs as 30-million-parameter language models on a billion tokens of open text, so a design that helps the programs can be priced on prose.
The first line, and how it failed
The first study replaced the token table with a constructor: a shared dictionary of 128 learned vectors, from which each position picks four by reading its context, against a dense constructor of the same cost and the plain table. The hypothesis was that sharing parts across tokens would help the model combine what it had learned. The first grid of 270 runs showed one lead, the sparse constructor at 0.565 on role binding against 0.200 for the dense one over three seeds, and that lead was the reason for the second grid.
On five new seeds the two constructors sat together, 0.372 against 0.380, and both below the plain table at 0.575. Each seed landed high or low on its own: the role task has two modes that identical runs fall into either side of, which is why three seeds had misled. At the larger size the sparse constructor led the dense one on both held-out designs by about 0.22, but the table sat between them, so the dictionary bought nothing over a lookup. Rebinding could not be read, the public combinations test showed no gain, and the published reference method, run from its own code, reached 0.76 at best on the control its paper puts at 0.996. In 447 runs and about 22 node-hours, every pass line failed or was unreadable. The line closed on 5 October as a negative result; a short paper carries both readings side by side, the original and the corrected.
Seven lines inside the block
If building the input did not help, the next places to look were inside the block: the fold (the nonlinearity in the feed-forward layer), the context's reach into that layer, how the layer's matrices are read, whether their shape travels, and how much of the layer is needed at all. Each line's pass lines were written before its first run.
The fold the network chooses
Each channel of a 30-million-parameter language model was allowed to learn its own activation shape, how sharp the gate is and how far it dips below zero, starting from SiLU; sign-split channels, a second fold inside the block, squared ReLU, SiLU and SwiGLU trained beside it at matched size on a billion tokens, three seeds each. The control held: SwiGLU beat SiLU by 0.069 nats, as published. The learned fold lost to SwiGLU by 0.018 to 0.021 nats on every source, and the sign-split and second-fold layouts lost by more. The shapes do change with depth, softer gates and deeper lobes in late blocks, in the same direction from three starting shapes, but how far they move follows where they start, so the depth reading is recorded as drift. Two side readings survive as leads: the same fold started sharper ends 0.003 nats ahead of SwiGLU, and squared ReLU beats SwiGLU by 0.011 on web text. 50 runs, 14.5 node-hours, closed 5 October.
Context inside the map
Three ways of letting the context reach inside the feed-forward layer, a gated layer, the same gate fed from the attention output, and a rank-16 weight change set by a context summary, were compared with the plain model on role binding and combinations. None beat it (135 runs). An 81-run check settled two odd readings from the first batch: a combinations gain in the shuffled-context arm was seed luck (0.648 against 0.601 on nine seeds, p 0.38), and two arms that cannot use the feed-forward layer, a shut gate at 0.134 and no layer at all at 0.115, get a few more held-out multiplier programs right than the full model at 0.071 on nine seeds (paired p 0.005). The no-layer gain of 0.044 sits under the 0.05 line, so the effect stays provisional until the programs are read by hand and by the per-binding reader, which is the one thing this line still owes. 216 runs, 4.1 node-hours; every run is in, and the line stays open for that read.
The multiplication primitive
A feed-forward layer whose hidden channels are read twice, once as they are and once after every pair is turned by 45 degrees, gives each pair a product of two features when the fold is a square. The line asked whether that product lets the model apply a multiplier it never saw in that role. It did not: 0.063 against 0.072 for the plain layer, with a small cost on combinations. On text the pair beat the compute-matched wide layer on every source, but the same two streams without the rotation did as well, so the gain belongs to the square fold and the turn adds nothing. 147 runs, about 7 node-hours, closed 5 October.
One matrix read from several angles, and the transplant
Four parallel streams read one set of feed-forward weights, each through its own fixed random rotation, and the results are averaged. On the program cells the four reads sat with the plain layer; on text they beat it by about 0.025 nats, well short of the compute-matched wide layer, which is the known compression result. Scored through rotations it never trained with, a trained model kept nothing: 0.002 on combinations against 0.610 through its own frames, the same as reading through the identity. The line's own sanity check fell short at nine seeds (the un-rotated four-stream model scored 0.581 against the plain model's 0.601), so the reading carries that caveat. 96 runs, closed negative on 7 October. The transplant line moved those trained matrices, frozen, into a one-frame model and the reverse, with everything else trained fresh around them. The test failed its own null: a model built around frozen trained matrices did far worse than one trained from scratch (0.373 against 0.601 on combinations), and frozen random matrices did better than frozen trained ones (0.546). Inside the batch, a four-frame host did much better with four-frame matrices than with one-frame ones, 0.501 against 0.335 (p 0.005); that is the stored-shape signal the line looked for, recorded as provisional. 90 runs, 1.7 node-hours, closed unresolved 5 October.
How much feed-forward a small transformer needs
The layer was removed, cut to a quarter and a sixteenth of its width, frozen at its random start, and widened four times, nine seeds each on the three program cells with shuffled-label copies beside them. Nothing beat the plain layer: on combinations every reduced arm trailed it, by 0.005 (no layer) to 0.096 (frozen random), and the no-layer and frozen arms trailed it on role addition by 0.10 and 0.07. Every arm beat the layer at four times the width, by 0.12 to 0.21, each at corrected p below 0.04; the plain layer scored 0.76 on combinations and the wide one 0.47. The line closed negative on 8 October, and the finding that survives is the earlier one: at this size the layer earns its place, and width past it costs. Of the 12 corpus runs, 9 finished and the 3 four-times-wide runs failed for memory on 40 GB cards; the losses go in as a note and cannot change the verdict. 216 program runs in 3.0 node-hours; the corpus runs 5.1 so far.
The line running tonight
Seven lines varied the fold and the layer around it, and none beat the plain block. The linear map and the pointwise fold are both continuous, and together they already span every smooth function, so a different fold could not add anything the block could not already represent. The eighth line steps off that plane. It tests operations of a third kind: a cut, which keeps the largest values, looks up a code, samples, sorts or routes; a quotient, which wraps a value onto a circle or reads the itinerary of a chaotic map; and a solve, which returns a fixed point or an energy minimum. Each carries a twin with the discontinuity smoothed away, so a gain is credited to the cut and not to the parts around it. The pass lines ask for a gain of 0.05 over the plain block and over the twin on role addition or combinations, with a shuffled-label null on both, and a price on text of at most 0.05 nats. The plan has no line of the form "no worse", which the feed-forward result showed the null cannot test.
Grid 1, 252 runs in 4.3 node-hours, was read on 8 October: keep-the-largest, lookup and the sampled fold all fail both lines. Keep-the-largest trails the plain block by 0.16 on role addition and its own twin by 0.15; lookup gains 0.02 on combinations and loses 0.08 on role addition; the sampled fold loses 0.18 on combinations. The shuffled-label copies fail as they should. Two readings are kept for the next grids: on the multiplier cell, where the plain block scores 0.07, lookup and the sampled fold and their twins all sit about 0.05 above it; and lookup's spread across seeds is 0.05 against the plain block's 0.18. Grids 2 to 7 follow, about 2,100 runs across sort, route, the wrap onto a circle, the chaotic itinerary, the two solves, and the spectral, chiral and entropy variants from the theory note; an eighth grid of paired designs is proposed and not yet confirmed. Tonight grid 2's 324 runs are home and being read, grids 4, 5 and 6 are running on nodes with four A100 cards, grid 3's timing run is queued, and the rest wait for a job. The first three grids were budgeted at about 22 node-hours; the timing estimates for the grids with a job so far come to about 80. One corpus grid on nodes with four H100 cards waits for any arm that passes.
What has held up
Across about 1,300 runs, four readings stand on their own numbers, and two more are provisional.
- More feed-forward width hurts held-out combinations at this size. The feed-forward line's result puts the plain layer at 0.76 and the four-times-wide layer at 0.47 on nine seeds; the angles line's side reading, scored its way, put them at 0.60 and 0.39. Seen twice, in the same direction.
- Squared ReLU beats SwiGLU on web text by 0.011 nats at 30 million parameters, and a learned fold started sharper ends 0.003 nats ahead; both are leads for a fixed-fold study.
- Two streams with a square fold beat the compute-matched wide layer on text; the rotation between them adds nothing.
- The role-binding task is a two-mode outcome that identical runs land on either side of. Three seeds misled the first line, and its screen had a false-pass rate of 3.5 percent per comparison at three seeds; every line since has used nine, with a paired test and a Holm correction where a family applies.
- Provisional: arms that cannot use the feed-forward layer get more held-out multiplier programs right than the full model (0.115 and 0.134 against 0.071); and a four-frame host prefers four-frame matrices (0.50 against 0.34) inside a test that failed its own null.
The method readings matter as much as the model readings. A pass line of the form "no worse than the plain model" is passed by construction when both arms sit at chance, so the open line has none. A pooled score over three seeds can be seed luck; the shuffled-label copy beside every arm is what tells.
Runs and cost
| Line | State | Runs | Node-hours | Verdict |
|---|---|---|---|---|
| Building inputs from shared parts | closed 5 Oct | 447 | about 22 | negative; short paper |
| The fold the network chooses | closed 5 Oct | 50 | 14.5 | negative; two leads |
| Context inside the map | open for one read | 216 | 4.1 | negative on its lines; one provisional reading owed a read |
| The multiplication primitive | closed 5 Oct | 147 | about 7 | negative; the square fold is the text gain |
| One matrix read from several angles | closed 7 Oct | 96 | 9.5 | negative |
| The transplant | closed 5 Oct | 90 | 1.7 | unresolved; the test failed its null |
| How much feed-forward is needed | closed 8 Oct | 216 + 12 corpus | 8.1 so far | negative; width past the baseline costs |
| A third kind of operation | running | 576 of about 2,400 | 4.3 so far | grid 1 negative; grid 2 home and being read; grids 4 to 6 running |
Program cells run on nodes with four A100 cards of 40 GB; corpus arms on nodes with four H100 cards of 80 GB. Node-hours are the totals the status files recorded; where a line's plan and its record differ, the sealed notebook entry is the figure used.
What comes next
- The open line's grids 2 to 8 are read as they land, each against its pass lines; a pass on X1 and X2 sends that arm to the corpus grid.
- The context line's one owed read: the held-out multiplier programs the layer-off model gets right, read by hand and with the per-binding reader, before the effect is called a finding.
- The corpus losses of the feed-forward line, as a note, with the three memory failures resubmitted or recorded as such.
- Two papers: the short negative-result paper on the first line, figures from committed scripts first, and a second paper on what the block needs at this size, with the fold, width and feed-forward readings and their nulls.