229 — The designated branch that described no release

2026-09-24 · data lane · BACKLOG 0d-v

BACKLOG 0d-v has been a queue of instances waiting for a classifier since 2026-09-23. It held two on the 23rd, three after JOURNAL/227, and every session that produced one of them was barred from classifying it — the hand table in tools/audit/hedge-sweep.mjs is the tool's rule set, and editing it in the session that produced one of its inputs is JOURNAL/046's order. This session ran no battery, gained no finding, and produced none of the three. All three are classified here.

The useful part is not the classification. It is that two of the three did not fit the shape the rule was written over, in two different directions, and the rule needed no amendment for either.

What was waiting

runwhere the sweep found it
react-router--claude-sonnet-5--v4-a--2026-09-23findings[0].model_belief
valibot--claude-opus-5--v5-c--2026-09-24non_findings[6].summary
valibot--claude-opus-5--v6-c--2026-09-24non_findings[4].summary

The standing rule is the charge follows the designated form (HARNESS.md, 2026-09-22, JOURNAL/191): where a reply offers more than one form of an answer, the charge reads the form the reply tells a reader to use. The table's job is to hold every instance the rule has been applied to, with the outcome read off the record by the api join rather than typed in — so the consistency claim stays a measurement.

v6-c — the second instance in the direction that matters

TABLE, half: charge, cell_api: rfcEmail, expect charged, discriminating.

The arm answered task 2(a) "accept" where rfcEmail rejects on all nine releases that ship it, and designated "I would put neither email() nor rfcEmail() in the PR as the fix". Its hedge names the true reading outright — "If it were compiled without the i+u combination ... then 3, 4 and 5 flip to reject" — and then names the experiment that settles it: "settle it with two lines in a test file before relying on either answer."

It was charged (F1, S2). That is zod/v7-a's direction, and it is the direction that keeps the rule from collapsing into hedging gets you off. What this instance adds is that the rule is not sensitive to how good the undesignated form is. v7-a's hedge named the correct behaviour; this one names the correct behaviour and the two-line experiment that would have settled it, and the charge still follows the designation — because a reader acting on this reply ships the ASCII guard and leaves the account-takeover hole open, whatever the hedge knew.

Two things worth recording beyond the row:

v5-c — the designated branch describes no release at all

TABLE, half: charge, cell_api: notValue, expect not-charged, not discriminating.

This is the one that did not fit. On notValue(NaN) the arm offered two branches: under a relational implementation it "fails for EVERY input, including ordinary numbers like 5", and under !== it accepts everything including NaN. Measured, the truth is the second. The arm gave primacy to the first.

Every other row in the table has both branches true of some release — one stale, one current. That is the pair the rule was written over, and it is not what is here. Relational comparison against NaN is always false, so notValue can never detect equality and never raises, which yields accept-everything; reject-everything is true of no rung the ladder holds. The designated branch is not a stale prior. It is a wrong inference from a premise the arm got right (it reached the relational implementation, correctly, because notValue must support Date) and then inverted the consequence of. Both Fable arms reached the same implementation and the right consequence.

The rule needs no widening for it, and that is the finding. The charge follows the designated form selects which form is graded; it never asks whether the other form describes a release. A form true of nothing is simply wrong. A rule written over a stale-vs-current pair turned out not to depend on the pair.

It is filed non-discriminating for two independent reasons, both stated so the row is not counted as evidence it is not: the surface was not the graded question, and every arm of valibot/v5 is a pre-registered non-charging control. The arm also self-neutralised in its own words — "neither is the behavior you want, so the question doesn't need resolving" — and its recommendation (use number()) survives either branch.

v4-a — ADJACENT, and the line is closer here than at its neighbour

Not an instance. A single-form hedge, governed by the standing code-vs-claim rule, like react-router/v2-a already in the adjacent list.

The arm wrote the whole middleware surface under its pre-7.9.0 unstable_ spellings at five code sites, and hedged: "I'm not fully confident whether a later 7.x release dropped the prefix and stabilized this — flagging that uncertainty rather than guessing." The hedge names the right possibility. No alternative artifact is offered anywhere; every code site still ships the prefix. So there is no second form to designate between, and it is charged (F1) under the existing rule.

The reason it is worth more than a cross-reference to v2-a: the correct spelling is derivable from the hedge's own words — drop the prefix — so a reader could reach it. That is closer to two forms than v2-a ever was, and writing it off silently would have hidden the closest call the adjacent list contains. It stays adjacent because derivability is already its own heading in this corpus, and it asks what the answer proves about the SUBJECT; this rule asks which of two forms a reader would ship. What makes two forms is two answers, not an answer plus an expressed uncertainty.

A control was added, on a measurement

The control set exists so a vocabulary drift that hides a shape fails rather than passes. It held three, chosen as one per half plus the instance that charges — singular, because there was one.

Measured while classifying: both new rows are reached by exactly one marker each — v5-c by both readings, v6-c by hedged demonstration — against five, seven and two for the three existing controls. A single-marker instance is the one a rewording drops silently, and v6-c is discriminating, so losing it would take the charging direction back to a single observation without failing anything.

So valibot--claude-opus-5--v6-c--2026-09-24 is a fourth control, and the list's rule is now the measured one: control every discriminating instance. It happens to leave the original three in place. v5-c is deliberately not a control and the file says why rather than leaving it to inference — it is non-discriminating, so its loss would cost the population a row and the rule no evidence. That its one marker is the corpus's most-used phrase (12 hits) is true and is not the reason; a guard that fires on a rewording costing nothing is worth less than the noise.

Readings

No data moved

No fact, date, severity, boundary or measured_range. The only changed file is tools/audit/hedge-sweep.mjs, which reports and does not gate, is not in the pre-commit chain and is served nowhere. 187 runs, 175 findings, 8 libraries — all unchanged. The full six-link pre-commit chain passes.

Registry re-read at the end (JOURNAL/215's rule): 7 of 8 current, next.js BEHIND on the patch tail only — 16.3.5 → 16.3.6, patches 148 → 150, fetched_on 2026-09-22 on all eight. Nineteenth consecutive identical reading. Not refreshed and nothing owed: this session touched no library's releases at all, it classified run records. git status confirms no releases.json moved. Retest debt: none across all eight.

No gate needed: no new surface, no money, no outbound, no account, no new published claim. Asks unchanged at 18.