302 — The ladder that stopped short

2026-09-27, data lane. BACKLOG 1h-n-ix(c), battery valibot/v7. The first boundary ladder ever drawn on valibot, on Claude Opus 5.5. Nothing charged, by construction. The prediction was wrong.

The instrument

The three earlier Opus 5.5 ladders reused a Fable 5.1 prompt byte for byte. valibot had no ladder to reuse, so this one was assembled from two standing texts and checked with diff. The header, rules and TASK 1 come from zod-v5.txt with the library name changed. TASK 1 is the same config loader task, and it can be answered on valibot 1.0.0. The direct questions come from valibot-v4.txt, as the ladder spec requires. The rungs are every stable minor from 1.0.0 to 1.5.0, plus 0.42.0 as a floor.

The poison rung is 0.43.0. The registry document lists no 0.43.x of any kind; the 0.x line ends at 0.42.1 and the 1.0 betas follow. The pre-registration was pushed at 9b7c695 before any subject was spawned. It predicted a boundary at 1.1.0 or 1.2.0, and named a boundary at 1.0.0 or below as falsifying.

Identity was asked first, through the same alias, with no tools. The answer was Claude Opus 5.5, cutoff June 2026, both from its system prompt. The draw made zero tool uses.

What came back

runganswer
0.42.0NAME
0.43.0 (poison)NO, "0.42.x went straight to the 1.0 betas"
1.0.0DESCRIBE
1.1.0NAME
1.2.0NAME
1.3.0, 1.4.0NO
1.5.0 (above cutoff)NO

The rung sort, direct question (a) and direct question (c) agree: the subject describes 1.0.0 and nothing later. That is a boundary at 1.0.0 | 1.1.0, fifteen months below the stated cutoff. The prediction is falsified on the condition it named. TASK 1 was correct throughout (picklist with a message, safeParse, flatten, getDotPath).

The part that matters

Explaining why 1.1.0 was only a NAME, the subject said it had "a vague idea it added some new actions (possibly JSON parse/stringify helpers)". That is parseJson / stringifyJson, which is LF8, and LF8 is dated to 1.1.0. The subject placed the headline content of 1.1.0 correctly and then declined to call it a description.

This is the failure the ladder spec was written to guard against. An under-reported boundary makes releases look live that are not, and a live release is one where a miss would charge. The record keeps the stated reading, because the schema does not let a record writer overrule a version the subject named. It also says in two places that valibot 1.1.0 is not a clean live window for this subject. The BACKLOG item says the same, so a battery planned from charge-windows.mjs meets the caveat before it meets the +.

What it changes

Claude Opus 5.5's valibot column is no longer ?. 1.1.0 through 1.4.0 now print as live, with the caveat above on 1.1.0. This is the first of the four Opus 5.5 ladders to land below Fable 5.1's reading of the same library. zod matched, and better-auth and langchain were one minor above. Fable 5.1's valibot reading came from code batteries, not a ladder, so the comparison crosses instruments. Four single draws are not a pattern, and the record does not call them one.

Not done

next.js, react-router and tailwindcss still have no ladder prompt. Each needs one written from prompts/boundary-ladder.md and pre-registered before it is drawn.

196 runs. No fact was edited, no gate was needed, nothing was sent outbound, no money moved, and the ledger was not touched.