What Claude Opus 5.5 misses about next.js, uncharged — battery v6-b, tested 2026-09-28

Run next.js--claude-opus-5-5--v6-b--2026-09-28 · self-test: the subject is the operator

Summary

Blind twin of v6-a, Claude Opus 5.5, stated boundary 16.0.0. Agreed with its twin on the OG font (Noto Sans, carried as an uncharged miss), on transitionTypes (all four parts right, hedged) and on writing maximumDiskCacheSize. DISAGREED on task 8: where v6-a named experimental.prefetchInlining, this draw said there is no supported way to get one prefetch request per link in 16 — the stale LF27 belief, recorded as a chargeable miss the charging arm did not make. P7 FALSIFIED.

SubjectClaude Opus 5.5 claude-opus-5-5, Anthropic
Invoked asAgent tool, model alias "opus"; prompt sent verbatim from prompts/sent/nextjs-v2.txt (md5 a353501275eae9bbcd6758affc979f86), byte-identical to `v6-a`'s, pre-registered at 28edbaa before any spawn. Identity probed before the draw in the same session ("Claude Opus 5.5 (1M context), model ID `claude-opus-5-5[1m]`", cutoff June 2026). Drawn concurrently with `v6-a`. DISCLOSED: the operator runs on the same model (`test.self_test`). The blind TWIN of `v6-a`; charges nothing by pre-registration.
Cutoff the model states2026-06
Newest next.js release it could place16.0.0 · 2025-10-22 (~8 month lag)
Oldest next.js release it could not place16.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 latest version I know of is roughly Next.js 16.1 (around December 2025). The latest release I can describe with some confidence is 16.0 (October 2025)" ... "I know little about anything released in 2026."
How the bracket was readEqual to its twin v6-a and one minor below the ladder next.js/v5 (16.1.0). P6 FALSIFIED on this arm too. Hedged band content: the same "faint memory of a newer unstable_retry-style prop", the correct disk-cache rule as a guess with the right key, and images.maximumResponseBody "which I believe defaults to 50 MB" (16.1.5). No release attributed, so no knowledge_stops_equivocal. (stop end stated, gap end stated)
Library at test timenext.js 16.3.6 (npm), verified 2026-09-28
Batterynext.js/v6-b · 9 tasks, 2 direct questions · probe window 16.1.5 to 16.2.0
Tool uses during test0 (a run with any tool use is void — we measure training knowledge, not retrieval)
Tested2026-09-28
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
misserror.tsx retry prop Task 1(a): hand-rolled router.refresh() + reset() in startTransition, with "a faint memory of a newer unstable_retry-style prop on error boundaries, but not enough to rely on it" — identical to its twin. Working code; not charged (next.js/v2 precedent). (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]
misscatchError (next/error) Task 2(a): parallel routes with slot-level error.tsx; "I'm not aware of a stable Next.js component-level <ErrorBoundary> export" (catchError since 16.2.0 as unstable_catchError). Working code; not charged. (Slot-level error.tsx isolates the widget on 16.3.6.) [chargeable miss — working code the library now supersedes — no severity level fits it; absent from the finding count]
context— DERIVABLE, both: task 1(b) (reset() re-renders the held payload, no request, the query does not re-run) and task 2(b) (Next's boundaries rethrow NEXT_REDIRECT; a hand-rolled one needs unstable_rethrow). Correct, and answered by both v2 controls.
missImageResponse default font Task 3, agreeing with its twin: "Noto Sans (regular weight) ... Task 9 asking for 'the release it was introduced in' suggests the default may have changed recently, perhaps to Geist. I have no reliable memory of that change, so my answer is Noto Sans." Designated Noto Sans; 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-opus-5-5--v6-a--2026-09-28]
correctLink transitionTypes Task 4, all four parts right under "I'm not certain transitionTypes is a stable Link prop; my answers assume it exists as the obvious design": addTransitionType('slide') on the App Router; ignored on the Pages Router; no warning in either because Link takes its known props off; a dev-only prop error demanding an array. Agrees with its twin. Not reported as recall.
correctimages.maximumDiskCacheSize Task 5: (a) "Historically the .next/cache/images disk cache had no size limit ... My guess is that it's a fraction of the free disk space, worked out once when the server starts" — the current rule and timing given as the answer, without the 50%; (b) maximumDiskCacheSize: 1_000_000_000 and (c) maximumDiskCacheSize: 0, both flagged as guesses and both right (accepted by 16.3.6's configSchema, executed). The task's 'say when it is computed' cues the timing, so the figure-free rule is recorded as correct and not as recall.
contextimages.maximumResponseBody VOID PROBE — task 6, scored for nobody. This draw took the allowlist reading ("the optimizer returns an HTTP 400" because remotePatterns is empty) and then volunteered: "If the host were allowed, newer versions cap the upstream body with images.maximumResponseBody, which I believe defaults to 50 MB" — right for LF26 (16.1.5).
correctimages.qualities Task 7, the internal control: "75. Since v16 the default is images.qualities: [75]. A requested quality={90} is coerced to the nearest allowed value"; dated to 16.0, October 2025. Right (executed on 16.3.6).
missexperimental.prefetchInlining Task 8, THE TWINS SPLIT (P7 FALSIFIED). "I don't know of a stable, documented option that collapses this to one request per link. In 15.x the per-segment behaviour was opt-in through experimental.clientSegmentCache ... I don't believe there is a supported way back to that in 16. The only per-link controls I'm confident of are prefetch={false} ..." The designated answer is LF27's stale belief (not configurable); experimental.prefetchInlining has existed since 16.2.0. It does NOT offer the dead key for 16 — clientSegmentCache is placed in 15.x, which is right. The charging arm named prefetchInlining and passed, so this miss is charged nowhere: a twin disagreement in the direction that the published count does not see. [chargeable miss — a replicate, a duplicated arm’s second draw or a below-floor control charges nothing; absent from the finding count]
context— Task 9: the font default guessed at 16.0.0 (October 2025, with 14.0.0 as the 'unchanged' alternative), the disk-cache cap at 16.1.0. True: 16.2.0 and 16.1.7. No patch named. P5 HELD.

Sources

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