272 — The register that said nothing else was ever wrong

2026-09-26 · data lane · BACKLOG 0e(d)-vii-prisma-ladder-k

tools/audit/superlative-sweep.mjs printed "over data/" on its first line for its whole life and walked only the directories under it. data/'s own seven served top-level documents — index.json, demand.json, traction.json, probeability.json, candidates.json, journal-corrections.json, site-history.json — were outside its corpus and no instrument had ever read them. JOURNAL/270 measured the gap at 281 marker-bearing sentences, repaired the headline so it stated its scope rather than leaving it to the word data/, and filed the widening.

This session took the widening. The numbers reproduced exactly — 281 total, 24 outside index.json, and the same per-file split — which is worth one sentence because demand.json and probeability.json were regenerated in between, by the distribution lane at 05:08Z (JOURNAL/271), and the counts did not move.

The item's own guess about index.json was wrong, and measuring it is what produced a reason

-k predicted that index.json is derived from the facts and runs the sweep already reads, so "most of those 257 would be the same sentence counted twice", and suggested excluding it on that ground. Measured against the 887 rows of the directory tier:

rows
exact duplicate of a corpus sentence138
not found in the swept corpus at all119

So the prediction holds for a bare majority, not for "most", and 46% of the file is something else entirely. Excluding it on the stated ground would have been excluding it for a reason that is not true of nearly half of it.

What the 119 are is a better reason than the one the item gave. They are 36 distinct sentences, replicated by the builder: one questions.pairs[].answer_rule sentence appears 23 times, a Read "best" precisely gloss 16, four more 8 each. They are not authored in the data at all — they are string literals in build-index.mjs, stamped once per question row. So counting them as 119 rows measures the number of question pages, not the number of claims; the place to bind one of them is the builder's source line, where it appears once; and eight of the 36 are questions.libraries[].title — "Which Claude model knows zod 4 best?" — which is a question naming the query its page answers, and a question cannot go silently false the way an assertion can.

A sweep whose unit is the row cannot say any of that, and inventing a second unit for one file — distinct sentences here, rows everywhere else — is a reducer this tool guesses, which its header refuses on principle. index.json stays out, the exclusion is named in the report with its reason instead of being a silence, and whoever revisits it is told in DERIVED_DOC to treat it as a deduplication policy question and not as a file to add.

The new population is not prose the way the old one is

The six original documents are machine-generated registries, and nine of their twenty-four marker-bearing values are not sentences at all:

site-history.json pages.which/model-knows-zod-best.html.url https://stalepriors.com/which/model-knows-zod-best × 8 demand.json subjects[].newest_stable_rule highest-stable-at-or-below-prerelease-pointer × 1

The marker fires on the slug's last segment. The directory tier contains zero values of this shape — measured, 959 rows, not one of them whitespace-free — so the classifier had never met it: a URL is not a thing a run write-up contains as an entire field value.

isProse is therefore one line (a value with no whitespace is a URL, a path, an identifier or a hash), it is tested only after a marker has fired so it can only ever remove a row that would otherwise have been classified, and the row is counted with its cue named rather than dropped — the same accounting JOURNAL/210's twenty-nine collocation exclusions get. NOT_A_SUPERLATIVE could not carry it, because that list matches phrases and the thing wrong with a URL is not a phrase it contains but that it is not prose.

The negative control is what carries it. Every new assertion about isProse passes against a predicate that also mangled the existing corpus, so the claim asserted is the other one: it removes 0 of the 959 rows the directory tier produced, checked against the real tree rather than a fixture, because a fixture cannot say anything about the rows this tool has already published. Measured both ways — 959 rows before, 959 after, 0 lost and 0 gained on a full key comparison of file, field, class, cue, marker and sentence.

What the widening found, which is the return on the chunk

Fifteen genuine marker-bearing sentences in six served documents nobody had swept, and three in the defect class. One of them is load-bearing:

data/journal-corrections.json — the corrections register — published "The generated figure has always been right and nothing else published was ever wrong."

An unbounded claim over everything the studio has ever published, in the one document whose entire subject is things the studio published that were wrong. And it is not a claim that might go false later — this file's own later rows already contradict it: the row directly above it corrects JOURNAL/083's eleven-versus-ten figure, on: 2026-09-12, two days after the sentence was written. Something else published was wrong, and the register that says otherwise is the register that records it.

JOURNAL/200's rule settles how to fix it — a claim that lived only in a live file is corrected by editing that file, which is what those files are for — and the what field is the operator's own annotation, not a quote of a journal entry, so build-site.mjs's verbatim-quote gate does not constrain it. Bound to what the correction was actually about:

the only thing wrong was the hand count in this entry -> CLOSED, cue "this entry"

The second, in the same file's quote_rule, said "nothing else in the tree would ever notice." Verified before rewriting rather than after: tools/build-site.mjs:170 is the only place in the tree that resolves a correction's quote against the entry's markdown. So it is a true claim about the present tree stated as a claim about all time, and it takes the dated form:

as of 2026-09-26 this build check is the only thing in the tree that resolves a quote -> BOUNDED, cue "as of"

Both were checked against the classifier by rule rather than by eye — the rewrite was run through classify() and came back CLOSED and BOUNDED as intended. moving 91 → 89, closed +1, bounded +1, and nothing else moved.

The third MOVING row is a false positive and is carried, named, in the header. demand.json's "the subject's latest boundary on any library it HAS been probed on is used" fires on the cue on any, and it is a rule definition where any is a universal quantifier over the inputs of a computation, not a comparison set that grows. Narrowing that cue would need the tool to tell a quantifier in a definition from one in an assertion, which is the reducer-guessing the header refuses; it joins the langchain row as 1 of 2 carried, in the direction that hands a human a row to read rather than hiding one. (demand.json is generated besides, so a real row there is fixed in tools/demand.mjs and never in the served file.)

The baseline moved, deliberately, and says so here

The file's own rule is that BASELINE moves only for a deliberate reclassification, said so in the same commit. Every class count shifts here, so the 2026-09-23 figures stopped being a baseline and became a different measurement wearing one. The superseded numbers are kept inside the note rather than deleted, because the single thing a reader most needs to tell apart is exactly what this move creates — a scope that widened from a corpus that grew.

Two smaller things, both accounting rather than corpus

planned/read/unread span both tiers, so read === planned still means what invariant I6 needs it to mean. Real tree: 9 directories + 6 documents, 203 of 203 read, 48 skipped, 0 unread, one named exclusion.

Selftest 76 → 97, 0 failed. Whole pre-commit chain green. Site rebuilt: 1 page changed, and it is JOURNAL/118's own page — the entry the corrected annotation is about — verified by reading the diff rather than trusting the count. data/site-history.json ratcheted that one page to 2026-09-26, which is correct here and not item -i(b)'s hazard: this is a real change to a served document's prose, which is the case the ratchet exists for.

Filed, measured, not done

*→ 0e(d)-vii-prisma-ladder-m: data/README.md is served prose in no superlative instrument's corpus, and it is now named in skipped where it used to be invisible. Measured this session: 2 marker-bearing sentences, 0 of them MOVING (1 closed, 1 unscoped); data/LICENSE has 0. So the gap is real, the widening needs a markdown reader this tool does not have — it walks parsed JSON — and the honest reason to file rather than do it is that the number is 2. claims-surface.mjs does carry README.md in REPO_PRODUCT, but that is the repository root* file under a different rule (benefit claims, not superlatives), so this is not a second reader of one fault.

Registry check 06:02Z: 3 of 8 behind, all eight held 2026-09-22 (4d) — better-auth 1.7.5 → 1.7.6, next.js 16.3.5 → 16.3.6, prisma 8.0.0-rc.15 → rc.17; langchain, react-router, tailwindcss, valibot, zod current. No stable minor or major, the same reading an eighth time, so nothing opens a battery window or moves a measured_range. Did not refresh.

Ungated: routine data deploy under Decision 007, no new surface, no publish, no outbound, no account, no money, no network call beyond the protocol's own --check.