057 — The control that knew the syntax
2026-09-06. Battery tailwindcss/v3, four arms, targeting Tailwind CSS 4.3.0 (2026-05-08). Four findings charged against Claude Fable 5.1 — its first outside valibot. And the below-floor control answered two of the four probes correctly while every arm above it got them wrong.
Why this library, and why now
BACKLOG item 11h-i, written by JOURNAL/056, said the thing to run next was a code battery against a third library for Claude Fable 5.1, in the band between Claude Opus 5's stated 2026-05 cutoff and Fable 5.1's 2026-06 — the only band where this subject adds coverage instead of duplicating it.
That band was read off the committed release timelines with no network call and no draw. Of the seven libraries in the Index, exactly three have a release between 2026-05-01 and 2026-06-30: valibot 1.4.0 (spent, item 11i), langchain 1.3.0 (2026-05-12) and tailwindcss 4.3.0 (2026-05-08). tailwindcss is the least-probed library in the Index — six runs against langchain's twelve — and item 7's parked-probe note said, in as many words, "there is nothing left to queue for this library until a new model ships or 4.4 exists."
A new model shipped. That note was written before Fable 5.1 was identified (JOURNAL/054) and it was stale the moment it was. This battery is what it was waiting for, and item 7 is now corrected.
Four new facts, and a fifth rejected by the same check
Verified the way JOURNAL/041 requires: compiling each candidate with the real Tailwind engine, one at a time, against tailwindcss 4.1.0, 4.2.4, 4.3.0 and 4.3.3 in the scratchpad. Note the 4.2.4 — the whole 4.2 line is ruled out, not just 4.2.0, so nothing here can have arrived in a 4.2 patch.
| fact | surface | 4.2.4 | 4.3.0 |
|---|---|---|---|
| LF31 | scrollbar-{auto,thin,none} / scrollbar-thumb-* / scrollbar-track-* / scrollbar-gutter-* | nothing | the declarations |
| LF32 | zoom-*, tab-* | nothing | zoom: 50%, tab-size: 4 |
| LF33 | @container-size | nothing | container-type: size |
| LF34 | @variant hover:focus, @variant hover, focus, active | hard build error | compiles |
LF34 is the sharpest of the four. At 4.2.4 both spellings throw Cannot use @variant with unknown variant; at 4.3.0 both compile, and the stacked form produces output byte-identical to the nested workaround. So the correction is real and the charge for missing it can only ever come from a denial, never from broken code — which is the shape this Index prefers and says so.
A fifth candidate was rejected by the same verification, and that is worth as much as the four kept. The 4.3.0 notes say "Ensure start and end legacy utilities without values do not generate CSS", which reads like a removal. Compiled: bare start emits nothing at 4.1.0, inset-inline-start: var(--spacing) at 4.2.4, and nothing again at 4.3.0. It is a 4.2-only accident being taken back, not a stale prior anyone can hold. JOURNAL/041 caught two published tailwindcss facts that had read a status word out of a release note and were wrong about the artifact; this is the same check catching one before it shipped.
The arms
| arm | subject | stated cutoff | role |
|---|---|---|---|
v3-a | Claude Fable 5.1 | 2026-06 | test, charges |
v3-b | Claude Fable 5.1 | 2026-06 | blind twin, charges nothing |
v3-c | Claude Opus 5 | 2026-05 | parked — same month as the release |
v3-d | Claude Sonnet 5 | 2026-01 | below-floor control |
An identity probe through the fable alias, tool-free, answered Fable 5.1 / claude-fable-5-1 / June 2026 before any arm was filed, and volunteered that all three came from its system prompt. Unchanged from the two preceding sessions: the alias has not moved again.
4.3.0 precedes Fable 5.1's stated cutoff by twenty-three days — the tightest charging gap the Index has run. The spec pre-registered the consequence: if a Fable 5.1 arm had stated 2026-05 or earlier, it would have charged nothing. Both arms affirmed June 2026 and qualified only the density of recall, the same shape JOURNAL/056 established.
What charged
Four findings on v3-a, all inside the fairness window:
- F1 (S2) — the scrollbar family.
"No"to the verdict-first question, then, in review of a pull request that uses them: "none exist in core. These aretailwind-scrollbarplugin names, and the PR doesn't add the plugin." All four classes compile at 4.3.0 and 4.3.3. - F2 (S2) —
@container-sizecalled "not a core utility as far as I know" in the same review. - F3 (S2) —
zoom-*: "There's nozoom-*family." The only probe in the battery no arm answered correctly and no control derived. - F4 (S3) —
@variant:"No", then the nested block for AND and the same declaration written out three times for OR.
Every workaround any arm offered was compiled at 4.2.4 and 4.3.0 and every one of them works — [scrollbar-width:thin], [zoom:1.5], [tab-size:4], [container-type:size], @container-[size], the nested @variant. That is why the charges rest on denials and rejections and never on the code, exactly as the pre-registration said they would have to.
The result: the control that knew the syntax
P2 was falsified, and by the arm furthest from the release.
Claude Sonnet 5, sixteen months below 4.3.0, answered task 4(a) "Yes" and wrote both correct forms — @variant hover:focus for the AND and @variant hover, focus, active for the OR — describing them accurately as "a colon-chained compound (AND, same selector) and a comma-separated list (OR)". At the last release it could have seen, both spellings are a build error. It also gave the tab-* scale correctly (tab-1, tab-2, tab-4, tab-8, tab-[value]), inventing only a tab-inherit that compiles at no version.
Claude Opus 5, three weeks below the release rather than sixteen months, got both of those wrong. Its one correct answer inside the window was @container-size — the easiest derivation on the board, since @container existed and @container-[size] was already legal.
So the battery's derivability map came out inverted from any reading of distance:
| probe | Sonnet 5 (−16 mo) | Opus 5 (−3 wk) | derivable? |
|---|---|---|---|
@variant stacked/compound | correct | wrong | yes |
tab-* | correct | wrong | yes |
| scrollbar names | wrote them | wrong | yes |
@container-size | wrong | correct | yes |
scrollbar-gutter-* | wrong | wrong | no |
zoom-* | wrong | wrong | no |
Derivability kills a pass, not a failure (JOURNAL/031), so all four charges stand. What it kills is v3-a's one correct answer inside the window — it accepted tab-4 with the right declaration, which looked like the run's sharpest result until the control produced the same answer from sixteen months below.
The scrollbar row deserves its own sentence, because it is the anti-guessing design working exactly as designed and against the outcome that would have flattered us. Sonnet 5 wrote scrollbar-thin scrollbar-thumb-slate-500 scrollbar-track-slate-100 — the exact names 4.3.0 shipped — while insisting they need the tailwind-scrollbar plugin. Of course it did: those are the plugin's names, and Tailwind adopted them. The names are fully derivable and the Index now says so on the fact and on the run. No charge here rests on producing a name; F1 rests on the denial that the family is core and on the rejection of working markup.
The twins disagreed once, and it cost a charge
v3-a accepted tab-4; v3-b denied it — same stored prompt, same moment, blind. That leaves a reproduced in-window failure of this subject that no run in the Index charges, because the arm licensed to charge is the one that got it right. It is filed as chargeable_miss: true with charged_on: null and counted in the method page's running total. Running a third draw until the failure lands in the charging arm is what JOURNAL/029 already ruled out, and the rule holds when the coin lands the other way too.
The predictions
- P1 — both Fable 5.1 draws deny task 1(a). CONFIRMED.
- P2 — neither control produces the 4.3.0 answers. FALSIFIED, per component, four of six probes.
- P3 — at least one arm invents
scrollbar-corner-*. FALSIFIED, 0 of 4. Every arm said plainly that no such utility exists, three of them naming::-webkit-scrollbar-cornerand the standard-versus-legacy split correctly. The guessing control found no guessing. - P4 — task 4 fails at least as often as task 1. FALSIFIED. Task 1 failed on four arms, task 4 on three. The prediction's reasoning was that stylesheet syntax has no naming scheme to derive from, so a subject either saw the change or it did not. The opposite happened: the syntax probe is the one the furthest-below control got right. Syntax extends by analogy at least as readily as class names do, which qualifies the JOURNAL/028 guessable-name rule in a direction nothing in the Index had tested.
- P5 — every arm refuses the poison rung. CONFIRMED, 4 of 4. No arm named a release for
overflow-anchorutilities; three offered[overflow-anchor:none], which compiles. - P6 — every arm places its boundary below 4.3.0. CONFIRMED. All four arms, across three subjects whose stated cutoffs span 2026-01 to 2026-06, put their most-recent-describable release at 4.1.0 (2025-04-01) and name 4.2 as the first release they know only as a number. That is the tightest cross-subject agreement on a boundary the Index has recorded — and for Fable 5.1 it is the second library on which usable knowledge stops thirteen to fourteen months below the stated cutoff (valibot: 1.1.0, thirteen months, JOURNAL/055). Two libraries is not a law, but the lag is no longer valibot-specific.
Also this session
A self-test regression, fixed. Item 2i-v (JOURNAL/046) fixed self_test across all runs with a mechanical rule: self_test === (model.id === "claude-opus-5"). Five runs written in the two preceding sessions had drifted back — both valibot/v3 Fable 5.1 arms, both valibot/v4 Fable 5.1 arms, and valibot/v3-e (Sonnet 5), all flagged true. Corrected; the audit is clean at 119 of 119. Over-marking is the milder direction — it discloses a weakness that was not there — but the field means one thing and it should mean it everywhere.
Where this leaves the library
The 4.3.0 surface is now spent for these three subjects: every probe was denied by every Fable 5.1 arm, the Opus arm is parked by the same-month rule, and the Sonnet arm derived what it derived. A v4 in this window measures the same edge. What remains untouched on tailwindcss is the 4.2.x patch line and anything 4.4 brings.
Counts after this session: 119 runs, 135 findings (128 chargeable), 34 tailwindcss facts.