Data composition, not parameter count
One model at one size, trained fifteen times, each run missing a single grammatical construction from its supervised data. Accuracy on the withheld construction ran from one hundred percent down to eight. Nothing about the model changed between runs.
What a model can generalise to is set by what its training data contains. Five lines of work here point that way, two of them nulls where more data along an axis the corpus already covered bought nothing. Every number below links to a public endpoint, a raw result file, a repository or a DOI.
Held-out accuracy moved with the corpus, not with the model
The same line's first held-out probe set was twenty-four constructions, each verified disjoint from every training frame at the content-bigram level. The baseline answered five. Widening the frame bank to generate across fifteen families, against the two it had covered, took it to ten with the model unchanged.
The per-family breakdown, and what the ranking will not bear
| Construction family withheld | Accuracy on it | Second seed |
|---|---|---|
| passive | 100% | 100% |
| existential | 100% | 100% |
| possession | 100% | 100% |
| negated correction | 100% | 97% |
| need statement | 92% | not rerun |
| interrogative | 86% | not rerun |
| imperative | 83% | not rerun |
| tag question | 79% | not rerun |
| subordinate | 77% | not rerun |
| conditional | 63% | not rerun |
| oblique request | 61% | not rerun |
| cleft | 53% | not rerun |
| elliptical | 53% | not rerun |
| reported speech | 47% | 65% |
| fronted adverbial | 8% | 8% |
Volume along a covered axis bought almost nothing
A later run raised the frame bank to 5,343 and the model to 64.8M at the same time, taking held-out accuracy from 75% to 83% on 248 shared probes with twenty fixed and none broken, and because both moved together that run attributes nothing to either. No comparison against any published function-calling model has been run.
The confounded run, in full
| What changed | Before | After |
|---|---|---|
| corpus | 143M tokens | 310M tokens |
| syntactic frame bank | 2,611 frames | 5,343 frames |
| model | 17.5M parameters | 64.8M parameters |
| held-out accuracy, all probes | 75% | 83% |
| held-out accuracy, one family excluded | 83% | 93% |
| reported speech | 85% | 100% |
The weights beat the prompt on five categories, and lost the sixth
The same claim runs the other way. One base model held frozen, six categories cut semantically out of a 22,211-record corpus, every arm scored as mean negative log likelihood on the answer tokens of held-out records. Pasting the nearest training record's answer into the prompt took the base from 1.1183 to 1.0292. One adapter trained across the whole corpus took it to 0.9238, and a routed set of six specialist adapters to 0.9258, with no vector store and no retrieval step at inference.
The control is what makes the rest of it readable. Adding retrieved context changes the prompt format as well as the content, and the adapter arms are scored in the format they trained on, so a comparison without a control silently charges retrieval for the format change. The same format carrying an irrelevant answer scored 1.1440, worse than the plain base at 1.1183. Format alone costs 0.0257. Relevance is worth 0.1147 on top of that. What retrieval buys here is what was retrieved and not the extra tokens.
The one category retrieval wins is the most important number here. Routed specialists beat it on five categories by between 0.118 and 0.476, and lose on this one by 0.566. Its records are open-domain factual questions: what a balance sheet is, what a sandworm is, why an exploration company drills directionally. The other five are procedures: SQL, Python and JavaScript functions, arithmetic word problems, symbolic maths worked in prose. Retrieval wins where the answer is a fact somebody already wrote down and loses where the answer has to be worked out. It is also the only category where retrieval earns anything at all. Drop it and the retrieval arm sits at 0.9218 against 0.8864 for the untouched base, so on the five procedural categories pasting a neighbour's answer into the prompt was worse than leaving the model alone.
This is one run, one seed, six categories and no confidence intervals anywhere in it. Nothing above is a significance claim, and intervals are the next thing to fix. The two trained arms also finished level, at 0.9258 for the routed set against 0.9238 for the single adapter. Routing is ahead on four categories and behind on two, and the two it loses are the wider gaps, so the single adapter finishes 0.0020 in front. Routing bought nothing over one adapter trained on everything, on this corpus.
Every arm on every category, and what the result file does not record
| Category | Base | Control | Retrieval | One adapter | Routed |
|---|---|---|---|---|---|
| JavaScript and Python functions | 0.8198 | 0.8071 | 0.8286 | 0.6353 | 0.6204 |
| SQL queries against a named table | 0.7251 | 0.8105 | 0.9505 | 0.4922 | 0.4749 |
| arithmetic word problems | 0.9886 | 0.9758 | 0.8903 | 0.7192 | 0.7021 |
| symbolic maths worked in prose | 1.0329 | 1.0630 | 1.0147 | 0.8551 | 0.8971 |
| programming across languages | 0.8657 | 0.8887 | 0.9250 | 0.7062 | 0.7276 |
| open-domain factual questions | 2.2777 | 2.3187 | 1.5662 | 2.1346 | 2.1326 |
The last row is the one that matters and it is the least coherent category of the six by the silhouette score that selected them, the largest, and the one every arm finds hardest. The base scores 2.2777 on it against 0.73 to 1.03 everywhere else. A category that loose is exactly where a nearest-neighbour lookup has something to add and a specialist has the least shared structure to learn, so the loss is legible rather than mysterious. Whether it survives intervals, a second seed and more than six categories is not something this run can say.
Three masks, one model, one parameter budget
Composition is not only which examples a corpus holds. It is also which part of each one the training signal falls on. The three fine-tuned arms share a base checkpoint, a corpus, an adapter rank and seven million trainable parameters, and only the mask differs.
Where the effect lives, and the interval arithmetic
| Arm | Held-out overlap | Trainable | What it shows |
|---|---|---|---|
| random-mask LoRA, all projections | 0.214 | 7.0M | the control |
| anchor LoRA, all projections | 0.337 | 7.0M | the reference arm |
| anchor LoRA, value and output only | 0.416 | 2.98M | fewer trainable parameters, better result |
| anchor LoRA, query and key only | 0.136 | 2.98M | below the control |
In domain the same procedure gives 1.26 times with an interval of [1.18, 1.34], and the two intervals do not overlap, which is the finding that the advantage is larger out of distribution than in it. Both come from ten thousand bootstrap resamples of the corpus overlap ratio, over 48 held-out queries, with P(anchor greater than random) of 1.000.
This is a fine-tuning result on one 1.3B base checkpoint at one adapter rank, on seven corpora in one retrieval format, and nobody outside this lab has replicated it. The published experiment log carries the runs that failed alongside the ones that worked, which is the only reason the 504-generation figure is quotable at all.
A ceiling that a nine-fold parameter range did not move
Training-free routing held in a 1.7-point band across a nine-fold base size range and three model families, so a bigger base was ruled out before anything else was tried. The card reporting the fix put it in one line: corpus construction is the lever, not model size and not routing math.
The six candidates ruled out first, each with its measurement
| Candidate | Measurement |
|---|---|
| A bigger base model | Training-free routing held in a 1.7-point band across a nine-fold size range and three model families |
| A lexical router instead of embedding cosine | 0.44 against 0.87 at the largest specialist count tested, and the gap widens as the count grows |
| Hierarchical routing, coarse then fine | A coarse first hop lands at 0.725 and its errors are unrecoverable, so the chain finishes below flat routing |
| Soft or top-k mixtures | The margin between best and runner-up is 0.004, so weight spreads onto wrong units and accuracy falls as the decision softens |
| Centering and whitening the embeddings | Margins 23 times larger, accuracy worse |
| Nearest-member, top-m and kNN scoring | All below the plain centroid, some by twenty points |
A hypothesis we tested and published against
LTMi-XT is our retrieval format and it is in production use here, running crystallisation and retrieval behind live endpoints, an API and a public specification. A separate exploratory experiment asked whether one of its components, the lattice coordinate carried on every record, could additionally serve as a conditioning signal fed into attention. A three-way ablation found that channel empirically content-free: all three arms landed at the same training loss of 0.2834, unforced inference came out byte-identical between the random and hash arms with a zero-width bootstrap interval, and the PCA arm's large win on coordinate-space geometry did not transfer downstream.
A hypothesis about a speculative extra use failed, and we published it. The format itself is not what the experiment tested, so the null says nothing for or against it, and the retrieval format has not been benchmarked against alternative retrieval approaches. That gap is open. What the experiment settled is narrow: the lattice is an address rather than a semantic geometry, and we stopped saying otherwise.
The four comparisons, and the review of our own null
| Comparison | Metric | Point | 95% interval | Significant |
|---|---|---|---|---|
| PCA-3D against BLAKE2b | forced corpus overlap | -0.002 | [-0.034, +0.029] | no |
| PCA-3D against BLAKE2b | unforced corpus overlap | exactly 0 | [0.000, 0.000] | no |
| random against BLAKE2b | forced corpus overlap | -0.016 | [-0.054, +0.022] | no |
| random against BLAKE2b | unforced corpus overlap | exactly 0 | [0.000, 0.000] | no |
The same document publishes the adversarial review of the null, including the criticism that thirty-six is too small against a noise floor of about 0.02 and that two hundred would be needed for the interval we want. The next round moved to 172. It also records that we missed relevant prior art and names the papers.
The evidence that costs something to publish
A research claim is worth what it costs to check, which for a lab this size is a statement about surfaces rather than intentions. Four of ours. /ask puts a question to six lanes and withholds the answer when they do not agree enough, with the margin printed and the floors published in advance at /api/arbiter/lanes. /reproduce gives five claims the artifact, the commands, the expected output and the tolerance, then lists the claims that could not be made reproducible with the reason, our own headline routing figure among them. /live and /board carry the nulls and the killed mechanisms in the same stream as the wins. And Cassandra T1, 1.33 billion parameters under Apache 2.0, shipped with no benchmark numbers because none were measured.
How the Cassandra parameter count is derived, two ways
Multiplying out the published configuration of 28 layers, hidden size 2,048, 16 query and 4 key-value heads, SwiGLU at intermediate 5,632 and a tied 32,768 vocabulary gives 1,329,711,104 parameters. Halving the byte size of the published fp16 checkpoint gives 1,329,750,332. The two agree to three thousandths of a percent and the difference is the serialization header. The checkpoint ships with its SHA-256, and the reproduction page walks a reader through verifying it without downloading the weights.
The published training loss curve, cross-entropy 3.78 to 2.26 over five epochs, is a property of the run rather than a capability claim. The model was built as a research substrate for the masking study above, so a benchmark table would have implied a comparison nobody ran.
How much weight this evidence carries
All of it comes off one consumer GPU in a one-person research operation and every sample is small: fifteen runs over 1,942 probes with only the two extremes reseeded, 150 held-out records across six categories on one seed in the retrieval comparison, forty-eight held-out queries in the masking study, seven categories in the routing result, and thirty-six pairs in the lattice ablation, whose own document says that is too few. The construction ablation is strong evidence at the scale it was run, because the model is genuinely held fixed across the fifteen runs. The rest is suggestive rather than established.
A leave-one-out construction ablation at a scale where the withheld family is recovered by capacity alone would put a ceiling on the claim, and we would publish it. So would a clean separation of the confounded run above that attributed the gain to capacity. The corpus and the probe generator are ours and the experiment is cheap; what it is waiting on is time.