Run zod--claude-fable-5-1--v6-b--2026-09-06
The blind twin of zod/v6-a agreed with it on all six probes, on the boundary at 4.2.0, on the 2026-06 cutoff, and on the one-minor misdating of .exactOptional(). It charges nothing by design; its value is that it makes the boundary correction from 4.1.0 to 4.2.0 two concurrent readings rather than one.
| Subject | Claude Fable 5.1 claude-fable-5-1, Anthropic |
|---|---|
| Invoked as | Agent tool, model alias "fable", general-purpose subagent, instructed to use no tools; BLIND TWIN of zod/v6-a, spawned concurrently from the same stored prompt, charges nothing. Prompt sent verbatim from prompts/sent/zod-v4.txt. Identity probed once for the battery through the same alias; see the -a arm. |
| Cutoff the model states | 2026-06 |
| Newest zod release it could place | 4.2.0 · 2025-12-15 (~6 month lag) |
| Oldest zod release it could not place | 4.3.0 · 2025-12-31 (so this run brackets the subject’s boundary to 2025-12-15 – 2025-12-31) |
| In its own words | "The most recent release whose contents I can actually describe is 4.2 (~December 2025, give or take a few weeks). I have a vague impression of 4.3.x version numbers existing in early 2026 but no content attached, so my belief about 'latest' is weak and based only on having seen version strings in package manifests / changelogs during training, not on release notes I can recount." |
| Library at test time | zod 4.5.4 (npm), verified 2026-09-06 |
| Battery | zod/v6-b · 6 tasks, 4 direct questions · probe window 4.2.0 to 4.3.0 |
| Tool uses during test | 0 (a run with any tool use is void — we measure training knowledge, not retrieval) |
| Tested | 2026-09-06 |
| Findings | 0, of which 0 chargeable |
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.
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.
| Kind | API | Note |
|---|---|---|
| context | — | THE TWINS AGREED ON EVERY PROBE, EVERY BOUNDARY ANSWER AND THE CUTOFF. This draw independently and blind produced z.exactOptional(), z.xor() and z.fromJSONSchema() on probes 1-3, hand-rolled the slug on probe 6, asserted the refined-schema derivation loads and drops the refinement silently on probe 4 ("Loading the module does not throw ... and the refinement is gone ... It is silent, which is the trap"), and asserted the strict-object intersection throws on probe 5 ("It never gets to the merge step ... don't intersect strict objects"). Both draws named 4.2 as the last release they can describe and 4.3 as the first known only as a number; both placed the internal control (d)(i) on 4.0.0 correctly; both dated .exactOptional() to 4.2.0, which is wrong by one minor. (The -b draw of a duplicated test arm charges nothing, ever. Its twin carries both findings, so neither is an undercount and neither is flagged as a chargeable miss - flagging them here would double-count against the running total the method page publishes.) |
| context | — | The two draws differ only in emphasis, never in verdict, and the differences are worth recording because they show what varies when the substance does not. This draw offered the strict-object union as its primary answer to probe 2 and reached for z.xor() second, as the tool for the non-strict case; its twin led with z.xor(). This draw skipped the .pipe() guard on the slug schema its twin added. This draw listed six zod releases at (c) against its twin's five, adding 4.0.x and 3.25.x, and reached one release further back. On the two charged surfaces the wording is nearly interchangeable. (It is a property of the instrument.) |
| context | — | P1 falsified identically on both arms, which is what makes the falsification safe to publish. A single draw producing three unprompted 4.2.0 APIs could be one lucky sample of an unstable belief; two concurrent blind draws producing all three, with matching signatures and matching semantics, is a held belief. This is the case the duplication rule was written for, run in the direction nobody planned: it is protecting a boundary CORRECTION rather than a charge. |
| context | — | This draw stated the pre-4.2 fallback more carefully than its twin - "If you are pinned below 4.2, that superRefine-plus-cast is what I would ship" - and is wrong in exactly the same place, because the bracket it names is wrong by one minor. Both arms would have a reader on 4.2.x calling an API that does not land until 4.3.0. |
Battery specification: prompts/zod.md in the studio repo.
Every finding above also carries its own citation.