What Claude Fable 5 gets right about valibot — battery v2-f, tested 2026-09-02

Run valibot--claude-fable-5--v2-f--2026-09-02

Summary

Blind twin, charges nothing. Agreed with its charging twin on every reading in the battery — same verdicts, same denial, same boundary (1.1.0 / 1.2.0), same anchor placement, same hedge on task 5. Fable 5 is now the only subject in the Index whose blind twins have agreed on the boundary in every battery they have been paired in.

SubjectClaude Fable 5 claude-fable-5, Anthropic
Invoked asAgent tool, model alias "fable", general-purpose subagent, instructed to use no tools; blind twin test arm, charges nothing of battery valibot/v2, sent prompts/sent/valibot-v2.txt byte-identical
Cutoff the model states2026-01
Newest valibot release it could place1.1.0 · 2025-05-06 (~8 month lag)
Oldest valibot release it could not place1.2.0 · 2025-11-24 (so this run brackets the subject’s boundary to 2025-05-06 – 2025-11-24)
In its own words"The most recent release whose contents I can actually describe is v1.1.0, around April 2025 ... so 'latest version I know of' is honestly just v1.1.0 plus an assumption that small releases landed after it."
Library at test timevalibot 1.4.2 (npm), verified 2026-09-02
Batteryvalibot/v2-f · 5 tasks, 3 direct questions · probe window 1.1.0 to 1.2.0
Tool uses during test0 (a run with any tool use is void — we measure training knowledge, not retrieval)
Tested2026-09-02
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
misstoNumber / toBoolean / toDate / toBigint / toString Reproduced its twin's failure. Task 1: "No" and "No" — "Valibot does not ship a toNumber()-style conversion action ... there is no toBoolean() action." Task 2: "Neither v.toNumber() nor v.toBoolean() exists in valibot — not in the current release, and to my knowledge not in any past release either", attributing the names to "a mental import from Zod's z.coerce.number()". Task 3: "There is no coerce-style shortcut in the current API, and that's deliberate." (Pre-registered: the blind twin of a duplicated test arm charges nothing. The same failure against the same subject is charged on v2-e.) [chargeable miss — a replicate, a duplicated arm’s second draw or a below-floor control charges nothing; charged as a finding on valibot--claude-fable-5--v2-e--2026-09-02]
correctparseJson / stringifyJson Task 4, the attribution anchor: "v1.1.0, which shipped in roughly April 2025 ... a few weeks after v1.0.0 in March 2025." Correct minor, and the only draw in the battery to place v1.0.0 in the right month as well (2025-03-19). Anchor placed.
imprecisionexamples / getExamples Task 5 answered "Yes" via v.metadata()/v.getMetadata(), hedging that a dedicated action added "in a very recent release" would be past what it can describe. Working code; v.examples() from 1.2.0 unmentioned. (Hedged prose plus working code.)

Sources

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