Does Claude Fable 5.1 know zod 4?

Partly: in 3 runs, Claude Fable 5.1's zod attribution reaches 4.1.0 (2025-08-23) and 4.2.0 (2025-12-15), inside zod 4, and stops there — zod was at 4.5.4 when this index last verified against it (2026-09-06). That is ~6 to ~10 months below the training cutoff the subject stated in those runs (2026-06). 2 findings are currently charged against Claude Fable 5.1 on zod (1x S1 breaks-build, 1x S2 silently-wrong), each reproduced in a published run and checked against zod's own release notes. Read the boundary precisely: it is the newest release whose contents the model can correctly attribute to that release, not the newest zod feature it can use. Past it a model often writes working code with a newer API while naming the wrong release for it.

Answer class inside, decided by one rule applied to every page of this kind: every measured boundary is at or above the first release of the major named in the question. Every figure below is read from the dataset at build time; nothing on this page is written by hand.

The measurements

BatteryNewest release it can placeOldest it cannotLag vs stated cutoff
v5 2026-09-06 4.1.0
2025-08-23
4.2.0
2025-12-15
~10 months
v6-a 2026-09-06 4.2.0
2025-12-15
4.3.0
2025-12-31
~6 months
v6-b 2026-09-06 4.2.0
2025-12-15
4.3.0
2025-12-31
~6 months

How repeatable is this?

3 measurements of this pair, giving 2 different boundaries — 114 days apart, one release apart. Of those, 2 came from the same stored prompt file, sent concurrently and blind: they agreed exactly.

zod published 5 minor or major releases in the twelve months before this model’s stated cutoff, which is the scale a spread should be read against.

What Claude Fable 5.1 gets wrong about zod

“Chargeable” means the change was published before this model’s own stated cutoff, so it had the opportunity to know it.

SeverityBeliefChanged inChargeableProof
S1breaks-build States that deriving a sub-schema from a refined object schema loads without error and silently drops the refinement - the exact behaviour 4.3.0 replaced with a throw
.pick() / .omit() on a schema with refinements
4.3.0
2025-12-31
yes run · source
S2silently-wrong States that an intersection of two strict object schemas can never be satisfied, and advises against the construction on that basis - true of the library for the first 49 minutes of 4.3.x and false ever since
intersections involving z.strictObject()
4.3.2
2025-12-31
yes run · source

What to do about it

The zod correction pack states what is true now for each corrected fact, with a primary-source citation, as markdown you can paste into a rules file (raw). What a correction pack measurably changed when one was tested — a pre-registered run on zod — is on the benchmark page, including where it changed nothing.

Runs

The same question, asked of the others

All of them at once: Which Claude model knows zod 4 best?

Other subjects on zod:

Claude Fable 5.1 on the other libraries: