What Claude Opus 5.5 gets right about better-auth — battery v8, tested 2026-09-27

Run better-auth--claude-opus-5-5--v8--2026-09-27 · self-test: the subject is the operator

Summary

A boundary ladder, not a battery: nothing charged, elicits_code: false, one arm. Claude Opus 5.5 describes better-auth through 1.4.0 (2025-11-22) and holds 1.5.0 as a bare number, seven months below its stated June 2026 cutoff. That is one minor above Claude Fable 5.1's ladder on the byte-identical prompt. better-auth 1.5.0 and 1.6.0 become live windows for this subject. The poison rung 0.9.0 was answered NAME, as Fable 5.1 answered it, which does not void a ladder; 1.6.0 and 1.7.0 answered NO.

SubjectClaude Opus 5.5 claude-opus-5-5, Anthropic
Invoked asAgent tool, model alias "opus"; prompt sent verbatim from prompts/sent/better-auth-v8.txt (2,361 bytes, md5 9aeef1b40cf809954cde8449025db02b, byte-identical to prompts/sent/better-auth-v6.txt), committed and pushed at d91252a before any subject was spawned. Identity probed BEFORE the draw through the same alias in the same session, tool-free: "I'm Opus 5.5 with the 1M-token context window, model ID `claude-opus-5-5[1m]`", cutoff June 2026, both attributed to the system prompt. Drawn concurrently with zod/v8. DISCLOSED: the operator of this studio runs on the same model, so this draw is of the operator's own model.
Cutoff the model states2026-06
Newest better-auth release it could place1.4.0 · 2025-11-22 (~7 month lag)
Oldest better-auth release it could not place1.5.0 · 2026-03-01 (so this run brackets the subject’s boundary to 2025-11-22 – 2026-03-01)
In its own words"The latest version I know of, or think exists, is 1.5.x, and I know it only as a number. The most recent release I can describe is 1.4, and even then only loosely. I think it shipped around late 2025."
How the bracket was readThree placements agree. The rung sort answered DESCRIBE for 1.2.0, 1.3.0 and 1.4.0 (1.4.0 flagged "only moderately confident"), NAME for 1.5.0, NO for 1.6.0 and 1.7.0; direct (a) names 1.4 as the last describable release; direct (c) states "The first release I know only as a version number is 1.5.0". One minor above Claude Fable 5.1's ladder reading on the identical prompt (better-auth/v6: 1.3.0), and equal to that subject's high draw (v7-c: 1.4.0). (stop end stated, gap end stated)
Library at test timebetter-auth 1.7.6 (npm), verified 2026-09-27
Batterybetter-auth/v8 · 2 tasks, 3 direct questions · probe window 1.2.0 to 1.7.0
Tool uses during test0 (a run with any tool use is void — we measure training knowledge, not retrieval)
Tested2026-09-27
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
contextboundary THE CELL THIS ARM WAS RUN TO FILL. Claude Opus 5.5 had never been drawn on better-auth, so charge-windows.mjs printed ? for every better-auth release in its column. Boundary: describes 1.4.0 (2025-11-22), holds 1.5.0 (2026-03-01) as a number only. Consequence for the sweep: better-auth 1.5.0 and 1.6.0 (2026-04-06) become LIVE against this subject; 1.7.0 (2026-08-18) stays above its stated cutoff. The pre-registered prediction (boundary at 1.3.0 or 1.4.0) held, at its high end.
contextpoison rung 0.9.0 The poison rung was answered NAME, not NO, glossed "I believe the pre-1.0 releases went through 0.x versions, but I can't say what 0.9 specifically contained." better-auth published no stable 0.9.0 (0.8.0 on 2024-11-08, then 1.0.0 on 2024-11-23). This is the same answer Claude Fable 5.1 gave on the same rung (better-auth/v6), and under HARNESS § A poison rung inside a dense cadence tests interpolation, not recall, NAME on a poison rung does not void a ladder; only a claim to describe it does. No content was offered for 0.9.0. The top rung 1.7.0 and 1.6.0 both answered NO.
correct1.4.0: stateless / database-less sessions The 1.4 description leads with a "stateless or cookie-only session mode that doesn't need a database" and cookie-cache improvements, which is LF1 (introduced 1.4.0). Experimental database joins match what Claude Fable 5.1's v7-c described at 1.4.0. The SCIM plugin placed at 1.4 is flagged by the subject as uncertain ("I believe") and is not verified here; it is not what the boundary rests on.
correctTASK 1: email/password auth instance and session guard The demonstration task, answered in the 1.x API: betterAuth({ database: new Pool(...), emailAndPassword: { enabled: true } }) with the Kysely-dialect reason for passing a pg Pool, toNodeHandler(auth) mounted before express.json() with the raw-body reason, auth.api.getSession({ headers: fromNodeHeaders(req.headers) }) returning 401 when null, the Express 5 /api/auth/*splat route syntax, and npx @better-auth/cli migrate / generate for the schema. Structurally the same answer Claude Fable 5.1 gave.
correctrelease dating below the boundary Dated by season on every release it described: 1.0/1.1 about late 2024 (2024-11-23, 2024-12-20), 1.2 about early 2025 (2025-03-01), 1.3 about mid-2025 (2025-07-19), 1.4 about late 2025 (2025-11-22). The arm also placed SAML support in the SSO plugin at 1.3; LF4 records SAML in the separately versioned @better-auth/sso and dates the fact at 1.4.0, so that attribution is not graded here.

Sources

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