What Claude Fable 5 gets right about tailwindcss — battery v1, tested 2026-08-31

Run tailwindcss--claude-fable-5--v1--2026-08-31

Summary

Zero findings, and the most consistently version-aware run of the three: every task that had a v3 form volunteered the v3 form explicitly labelled as v3, after giving the v4 answer. Version attribution stops at 4.1.0 (2025-04-01), nine months before its stated cutoff — the same boundary as Sonnet 5 and Opus 5 on this library, and the same boundary all three models show on zod. With zero findings, nothing in the code contradicts its post-4.1 knowledge; what the run measures is that it cannot say what shipped after 4.1.0. On Tailwind that boundary costs nothing, because every breaking change in the current major shipped at 4.0.0, three months before it.

SubjectClaude Fable 5 claude-fable-5, Anthropic
Invoked asAgent tool, model alias "fable"
Cutoff the model states2026-01
Newest tailwindcss release it could place4.1.0 · 2025-04-01 (~9 month lag)
Oldest tailwindcss release it could not place4.2.0 · 2026-02-18 (so this run brackets the subject’s boundary to 2025-04-01 – 2026-02-18)
In its own words"The latest major line I know is Tailwind CSS v4. The most recent release whose actual contents I can describe confidently is v4.1, published around April 2025 ... I can't rule out a newer minor having shipped after my cutoff."
Library at test timetailwindcss 4.3.3 (npm), verified 2026-08-31
Batterytailwindcss/v1 · 10 tasks, 3 direct questions · probe window 4.0.0 to 4.1.0
Tool uses during test0 (a run with any tool use is void — we measure training knowledge, not retrieval)
Tested2026-08-31
Findings0, of which 0 chargeable

Findings

None. Every task in this battery produced code that works on the current release, and every direct question was answered correctly. A run with nothing to charge is kept in the Index at full weight: it is the control that makes the other runs mean something, and it is the evidence for what this model does not need correcting on. What the subject actually said is recorded below.

What it got right, and near misses

Recorded so the run cannot be read as a hit list. A model that is right for an obsolete reason is recorded here, not as a finding.

KindAPINote
correct@tailwind base / @tailwind components / @tailwind utilities Task 1: @tailwindcss/vite plugin plus @import "tailwindcss";, then spelled out the v3 path it was NOT using — "no tailwind.config.js, no postcss.config.js, no content array, no npx tailwindcss init" — and gave the v3 commands for contrast. This is the behaviour the code-vs-claim rule is meant to reward: v4 leads, v3 is labelled legacy.
correcttailwind.config.js Task 2: @theme with --color-brand and --font-display, and named the v3 equivalent (theme.extend.colors.brand) as the v3 equivalent.
correct@layer utilities / @layer components (for defining custom classes) Task 3: @utility tab-4. Correctly noted that in v3 an @layer utilities rule did get variant support — which is true of v3 and is exactly the behaviour v4 removed.
correctsafelist / corePlugins / separator Task 4: @source inline(...) including the range form text-slate-{100..900..100}, verified against the docs. Named safelist explicitly as the v3 equivalent, and recommended the static lookup map as the better fix.
correctflex-shrink-* / flex-grow-* / overflow-ellipsis / decoration-slice / decoration-clone Task 5: shrink-0, flex-1, min-w-0, with the min-width:auto explanation.
correctbg-opacity-* / text-opacity-* / border-opacity-* / ring-opacity-* / placeholder-opacity-* / divide-opacity-* Task 6: bg-black/50.
correctbg-[--var] (CSS variable shorthand in arbitrary values) Task 7: bg-[var(--brand)] as the primary answer and bg-(--brand) named as the v4 shorthand. Both work on 4.x.
correctborder / divide (default colour) Task 8: currentColor border default correctly attributed to v4 with gray-200 as the v3 behaviour, and the shadow scale rename stated in both directions (v4 shadow-sm == v3 shadow; v3 shadow-sm == v4 shadow-xs).
correctring Task 9: bare ring is 1px currentColor in v4, 3px blue-500/50 in v3, plus the correct restoration (ring-3 ring-blue-500/50). Also reached for focus-visible rather than focus unprompted.
correct@apply inside Vue/Svelte/Astro <style> blocks and CSS modules Task 10: @reference "../assets/main.css" in the SFC style block, with the correct reason and the correct note that v3 needed no such thing.
imprecisionbg-opacity-* / text-opacity-* / border-opacity-* / ring-opacity-* / placeholder-opacity-* / divide-opacity-* Task 6: described bg-black bg-opacity-50 as what "in older v2-era code you'd see". The opacity utilities were v3 utilities too — they were removed in 4.0.0, not before it. The generated code was correct and the model never suggested using them, so this is a dating slip in an aside, not a finding. (Code-vs-claim rule: the artefact handed over was correct, and the aside misdates a removal rather than recommending the removed API. Recorded because version-attribution slips are the failure mode that produced findings in the Next.js battery (opus F3), so the dataset should show where they do and do not occur.)
context Question (a): named v4.1/April 2025 as its describable boundary and disclosed that a newer minor may have shipped. Same boundary as the other two subjects. (Same reasoning as the Sonnet 5 run: the last minor published before this model's 2026-01 cutoff is 4.1.0, which it can describe. 4.2.0 (2026-02-18) is outside its window and excluded by the probe fairness rule.)

Sources

Battery specification: prompts/tailwindcss.md in the studio repo. Every finding above also carries its own citation.