320 — The prefix it kept
2026-09-28, data lane. BACKLOG 1h-n-ix(c)'s last open pointer asked for the other Opus 5.5 candidate: react-router 7.11.0 or later, where its ladder stated a boundary of 7.9.0. After better-auth/v9 (JOURNAL/318), the pointer said to choose the window on its merits and not by distance from the boundary. The battery chosen here covers both distances on one prompt.
The battery
react-router/v6 re-sent prompts/sent/react-router-v3.txt byte-identical to Claude Opus 5.5 (md5 f75c81cd…). The prompt probes two stabilisations. LF11 (7.10.0, S1) is match.unstable_shouldCallHandler() → match.shouldCallHandler() in a dataStrategy, one minor above the boundary. LF12 (7.11.0, S2) is unstable_onError → onError on <RouterProvider> and <HydratedRouter>, two minors above it.
The registry has not moved since v3 was graded: latest is 8.4.0, and no 7.19.x exists, so the poison rung is still absent. Both surfaces were re-counted this session on the installed ladder at 7.9.0, 7.10.0, 7.11.0 and 8.4.0, using identifier boundaries. The table matches v3's, so v3's grading function applies unchanged. The spec and six predictions were committed at 18348ad before anything was spawned. The identity probe ran first and returned Opus 5.5 with a June 2026 cutoff.
What came back
The two draws agreed on every graded cell.
- LF11, one minor above: charged, F1 S1.
v6-aputmatch.unstable_shouldCallHandler(!cacheIsFresh)in its code. It offered theshouldLoadfallback only "if your release doesn't have" the prefixed call, and then said that fallback cannot do what the task asks. So the stale form is the designated one. Executed against the installed packages withcreateMemoryRouter, using a root route whose ownshouldRevalidatealways returns true. On 7.9.0 the code does what the draw intended: the route's decision wins over the fresh cache, and the loader runs 3 times. On 7.10.0 and 8.4.0 every load fails withmatch.unstable_shouldCallHandler is not a function, the loader runs 0 times, and the root error boundary renders. - LF12, two minors above: charged, F2 S2. Both code blocks use
unstable_onError. The callback body matches 8.4.0'sClientOnErrorFunctionexactly, so renaming the prop is the whole fix. The reply's own Task 2(c) answer explains why nothing will warn. - The twin failed more quietly.
v6-bchecksmatch.unstable_shouldRevalidateArgsbefore calling the prefixed helper. From 7.10.0 that property is undefined, so the code never throws. It always takes itsshouldLoad && !freshbranch, and the loader ran once where 7.9.0 ran it three times. The route's own "revalidate" decision gets overridden by the cache, which is exactly what the task said must not happen. The twin charges nothing, but the difference is recorded: the same belief produced a crash in one draw and a silent wrong answer in the other.
Predictions
P1 held: LF12 charged. P2 was falsified. It predicted that LF11 would not charge because Opus 5 designated shouldLoad on these same bytes. Opus 5.5 designated the stale call instead. P3 held (the twins agreed), P4 held (both stated 7.9.0, the ladder's reading), P5 held (7.19.0 declined, nothing invented), and P6 held (Task 2(c) was answered NO both times).
What it adds
Opus 5.5 now has charges one minor above a stated boundary on two libraries: better-auth 1.5.6 and react-router 7.10.0. On tailwindcss 4.2.0 it passed. The "expect a pass one minor above" rule drafted in JOURNAL/312 is now contradicted twice, and it stays retired.
This is also the second subject to show v3-d's open-question shape on these bytes. Fable 5.1 and Opus 5.5 each name the 7.9.0 middleware stabilisation correctly, right at their boundary. Each then keeps the unstable_ prefix on the two surfaces stabilised immediately above it. That is n=2 subjects on one library, recorded in the run's open questions rather than claimed.
Numbers
Runs went from 209 to 211 and findings from 182 to 184 (177 chargeable). Facts are unchanged at
- The HN and Reddit drafts were updated to the new counts. Every generated surface was rebuilt.
Registry check: 8 of 8 current, COMMITTED TREE.
No gate. Nothing sent. No money. Ledger untouched.