---
library: tailwindcss
library-latest: "4.3.3"
library-latest-verified: 2026-08-31
model: claude-fable-5 (spawned via Agent model alias "fable")
model-self-reported-cutoff: 2026-01
model-believed-latest: "v4 line known; 4.1 (~April 2025) is the last release whose contents it can describe"
test-date: 2026-08-31
battery: tailwindcss/v1 (10 idiomatic tasks + 3 direct questions; probes restricted to 4.0.0 and 4.1.0)
tool-uses-during-test: 0
verified-against: https://tailwindcss.com/docs/upgrade-guide · https://tailwindcss.com/blog/tailwindcss-v4 · https://raw.githubusercontent.com/tailwindlabs/tailwindcss/main/CHANGELOG.md
status: open (no retest yet)
json: fable-5.json
---

# Tailwind CSS × Claude Fable 5 — battery v1 findings

**Zero findings**, and the most consistently version-aware run of the three.

Every task that has a v3 form got the v4 answer first and the v3 form afterwards, explicitly
labelled as v3. Task 1 gave the `@tailwindcss/vite` setup and then listed what it was deliberately
not doing — *"no `tailwind.config.js`, no `postcss.config.js`, no `content` array, no
`npx tailwindcss init`"* — followed by the v3 commands for contrast. Task 2 named
`theme.extend.colors.brand` as the v3 equivalent of `@theme`. Task 4 named `safelist` as the v3
equivalent of `@source inline()`. Task 10 noted that v3 needed no `@reference` in a Vue `<style>`
block.

That is the behaviour the code-vs-claim rule was written to reward: the artefact handed over is
current, and the legacy path is labelled legacy rather than smuggled in beside it.

Two details worth noting because they were verified rather than assumed:

- Task 4's `@source inline("text-slate-{100..900..100}")` range syntax is **real** — the docs
  document exactly this form (`bg-red-{50,{100..900..100},950}`).
- Task 9 reached for `focus-visible` rather than `focus` unprompted, and gave the correct v3
  restoration (`ring-3 ring-blue-500/50`) for the v4 default of 1px `currentColor`.

## The same boundary as everyone else

Asked directly, it names **4.1, around April 2025** as the last release whose contents it can
describe, against a stated cutoff of **2026-01** — a **nine-month lag**, identical to Sonnet 5's on
this library, and to the day the same boundary Opus 5 reports.

Three models, cutoffs spanning four months, all stopping at the same release. On this library the
boundary costs nothing, because Tailwind shipped every breaking change of the v4 line at **4.0.0
(2025-01-21)**, three months *before* that boundary. The staleness is present and measurable; it
simply has nothing to break.

## Recorded but not charged

- **Imprecision, task 6.** Described `bg-black bg-opacity-50` as what *"in older v2-era code you'd
  see."* The opacity utilities were v3 utilities as well; they were removed **in** 4.0.0, not
  before it. The generated code was correct and the model never recommended the removed class, so
  under the code-vs-claim rule this is a dating slip in an aside, not a finding. It is recorded
  because version-attribution slips of exactly this shape *did* produce a charged finding in the
  Next.js battery (Opus 5's F3, dating the `proxy` rename a major early) — the dataset should show
  where the failure mode appears and where it stops short.
- **No version-recency finding.** 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) falls
  outside its window and is excluded by the probe fairness rule.

## What this run resolves

The Next.js write-up for this same model left an explicit open question: Fable 5 outperforming
Opus 5 on both zod and Next.js could be a property of the models or a coincidence of two
libraries, and *"separating it needs a third library with a different release rhythm."*

This is that third library, and it separates them. On Tailwind there is **no dissociation**: all
three subjects are equally current, and their knowledge boundaries are identical. The durable
pattern is not "Fable beats Opus" — it is that a later cutoff buys no later knowledge. Opus 5's
cutoff is four months later than Fable 5's and its Tailwind knowledge stops at the same release,
which is why its lag on this library is thirteen months against Fable's nine.

Method, elicitation prompts and scoring rules: [`prompts/tailwindcss.md`](../../prompts/tailwindcss.md).
Machine-readable twin: [`fable-5.json`](fable-5.json).
