Run next.js--claude-fable-5-1--v6-d--2026-09-28
Blind twin of v6-c, Claude Fable 5.1. Agreed with its twin on every charged cell — the invented images.maximumCacheSize, the dead experimental.clientSegmentCache: false, Noto Sans, and a Pages Router unknown-attribute warning for transitionTypes — all carried as uncharged misses. Same '400, not served' reading of the task 7 control. Stated boundary 16.0.0, one minor below its twin.
| Subject | Claude Fable 5.1 claude-fable-5-1, Anthropic |
|---|---|
| Invoked as | Agent tool, model alias "fable"; prompt sent verbatim from prompts/sent/nextjs-v2.txt (md5 a353501275eae9bbcd6758affc979f86), byte-identical to `v6-c`'s, pre-registered at 28edbaa before any spawn. Identity probed before the draw in the same session ("model Fable 5.1 (model ID `claude-fable-5-1`)", cutoff June 2026). Drawn concurrently with `v6-c`. The blind TWIN of `v6-c`; charges nothing by pre-registration. |
| Cutoff the model states | 2026-06 |
| Newest next.js release it could place | 16.0.0 · 2025-10-22 (~8 month lag) |
| Oldest next.js release it could not place | 16.1.0 · 2025-12-18 (so this run brackets the subject’s boundary to 2025-10-22 – 2025-12-18) |
| In its own words | "The most recent version I'm aware of by name is somewhere in the 16.x line (16.1, possibly a 16.2). The most recent release whose contents I can genuinely describe in detail is Next.js 16.0.0 (21 October 2025) ... My knowledge of 16.1+ is fuzzy: I have impressions (Turbopack filesystem caching, adapters API, typed routes/next typegen improvements) but I can't reliably attribute them to a specific version or date." |
| How the bracket was read | ONE MINOR BELOW its twin v6-c (16.1.0) on the same bytes: this draw describes 16.0.0 and holds 16.1 as 'impressions' it declines to attribute. P6 FALSIFIED on this arm. The impressions it lists (Turbopack file-system caching, the adapters API) are 16.1-era, but it names no release for them, so knowledge_stops_equivocal is not set. Twins of one subject one minor apart on one prompt is the stated-boundary noise floor this corpus already reports. (stop end stated, gap end stated) |
| Library at test time | next.js 16.3.6 (npm), verified 2026-09-28 |
| Battery | next.js/v6-d · 9 tasks, 2 direct questions · probe window 16.1.5 to 16.2.0 |
| Tool uses during test | 0 (a run with any tool use is void — we measure training knowledge, not retrieval) |
| Tested | 2026-09-28 |
| 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 |
|---|---|---|
| miss | error.tsx retry prop |
Task 1(a): hand-rolled router.refresh() + reset() in startTransition; no built-in retry mentioned. Working code; not charged. (The hand-rolled code works on 16.3.6.) [chargeable miss — working code the library now supersedes — no severity level fits it;
absent from the finding count] |
| miss | catchError (next/error) |
Task 2(a): "Next.js does not export a public <ErrorBoundary> component" — a React class boundary with unstable_rethrow, one widget wrapped. next/error has exported one since 16.2.0. Working code; not charged. (The class boundary with unstable_rethrow isolates the widget and passes redirects through.) [chargeable miss — working code the library now supersedes — no severity level fits it;
absent from the finding count] |
| context | — | DERIVABLE, both: task 1(b) and task 2(b), correct and detailed, including the client-navigation vs full-document distinction for a swallowed redirect. Answered by both v2 controls. |
| miss | ImageResponse default font |
Task 3, agreeing with its twin: "Noto Sans, weight 400 (Regular), Latin subset ... bundles noto-sans-v27-latin-regular.ttf ... Confidence: high on Noto Sans Regular". Geist since 16.2.0. Twin — charges nothing. [chargeable miss — a replicate, a duplicated arm’s second draw or a below-floor control charges nothing;
charged as a finding on next.js--claude-fable-5-1--v6-c--2026-09-28] |
| miss | Link transitionTypes |
Task 4, agreeing with its twin on the charged half: "transitionTypes is not a recognized prop there, so it is spread onto the rendered <a>" and "In the Pages Router case the prop reaches <a>, so in development React logs: 'Warning: React does not recognize the transitionTypes prop on a DOM element.'" The Pages Router Link destructures it away (16.3.6 dist/client/link.js). App Router half and the dev-time array error right. Twin — charges nothing. [chargeable miss — a replicate, a duplicated arm’s second draw or a below-floor control charges nothing;
charged as a finding on next.js--claude-fable-5-1--v6-c--2026-09-28] |
| miss | images.maximumDiskCacheSize |
Task 5, agreeing with its twin: (a) "in every release I can describe (through 16.1), the optimized-image cache ... has no size cap at all", then a guessed rule of "on the order of 10%" of available space sampled at startup (the rule's shape right, the figure wrong: 50%); (b)/(c) maximumCacheSize: 1024 * 1024 * 1024 and maximumCacheSize: 0 — the same invented images key, fatal at 16.3.6 (executed). Twin — charges nothing. [chargeable miss — a replicate, a duplicated arm’s second draw or a below-floor control charges nothing;
charged as a finding on next.js--claude-fable-5-1--v6-c--2026-09-28] |
| context | images.maximumResponseBody |
VOID PROBE — task 6, scored for nobody. Designated "the original 80 MB JPEG, byte-for-byte, unoptimized" via the optimizer's upstream fallback, with "there is no default byte-size cap I know of" — the same answer as its twin, wrong on 16.1.5+ (a 413 past 50 MB), not charged because the probe is void on these bytes. |
| imprecision | images.qualities |
Task 7, the internal control, the same wrong mechanism as its twin: "not served at all" — a dev-time throw and a production 400 "q" parameter (quality) of 90 is not allowed — with "medium that the component does not snap to the nearest allowed value". Executed on 16.3.6: the default loader emits q=75 and development only warns once. Imprecision under the v1 rule (hedged; the fix it names, qualities: [75, 90], is right). Release correct: 16.0.0, 21 October 2025. |
| miss | experimental.clientSegmentCache |
Task 8, agreeing with its twin: "Yes. ... Turning it off returns to the older router behaviour of one prefetch request per link" — experimental: { clientSegmentCache: false }, removed at 16.0.3 and warned-about-then-ignored at 16.3.6 (executed). prefetchInlining not named. Twin — charges nothing. [chargeable miss — a replicate, a duplicated arm’s second draw or a below-floor control charges nothing;
charged as a finding on next.js--claude-fable-5-1--v6-c--2026-09-28] |
| context | — | Task 9: the font 'from @vercel/og' at 13.3.0 / 14.0.0; the disk-cache cap at 16.1.0, "Low confidence". True: 16.2.0 and 16.1.7. No patch named. P5 HELD. |
Battery specification: prompts/nextjs.md in the studio repo.
Every finding above also carries its own citation.