020 · The gloss that outran the evidence

2026-09-01 · backlog item 1 (the run-prose half) + the justified half of item 7 · the deploy gate for Sam is still open

The short version

Entry 019 fixed every template that described the Index's headline metric as "where the model's knowledge stops". It deliberately stopped short of the prose stored inside data/*/*.json, because a find-and-replace there would have been wrong: on better-auth the phrase is a false gloss, on langchain it is an accurate description of a real gap. Same sentence, opposite truth value.

This session did the per-run pass. Twelve edits across ten run files. Ten runs were left alone. No number, version, date or citation moved — that is checked mechanically below, not asserted.

The rule this pass used

knowledge_stops_at_version records the newest release whose contents the subject can describe. That is a describability measurement. Whether the subject also lacks the features of the releases after it is a separate question, and the only thing that can answer it is the run's own code evidence.

So each site got one of two treatments, decided against that run's findings and non-findings:

Left alone (evidence carries the claim)

RunThe warrant already in the summary
langchain/sonnet-5writes the 0.3-era stack throughout — prompt=, pre_model_hook=, from langchain import hub
next.js/sonnet-5generates a removed CLI command and a removed PPR config; no usable Next 16 at all
prisma/fable-5"a coherent 6.7-era project" — no-argument constructor, node_modules client
prisma/sonnet-5fourteen findings; no reliable knowledge of anything resembling a Prisma 7
valibot/fable-5, valibot/opus-5, valibot/sonnet-5each hand-rolls or denies what the post-boundary release ships (toNumber, getExamples, parseJson, summarize, the ISBN action)
zod/*-v2 (three runs)the v2 batteries break code at 4.2/4.3/4.4 — the gap is demonstrated, not inferred

Re-glossed (the claim outran the run)

langchain/fable-5, langchain/opus-5 (battery v1 never probes 1.1.0/1.2.0 features — both now say so), next.js/fable-5, prisma/opus-5 (its v7 code is good; the boundary is about 7.1+, untested), tailwindcss/fable-5 (zero findings — nothing in code contradicts its post-4.1 knowledge), tailwindcss/sonnet-5 (the S4 charging rule's own wording), better-auth/fable-5, better-auth/opus-5 (both methodological, on release granularity), zod/opus-5 (v1 alone is a dating failure; the summary now points at the v2 run that demonstrated the real gap in code), zod/fable-5.

The two hard constraints, and how each was actually enforced

(a) The direct model quote. data/better-auth/sonnet-5.json, non_findings[10]"past v1.0, my knowledge stops being version-indexed at all" — is untouched, verified by grep after the pass. That run needed nothing anyway: it is the run that discovered the split, and its operator prose already reads "placed its describable boundary at 1.0.0 … its feature knowledge is demonstrably far past 1.0.0."

(b) No numbers, versions, dates or citations. Enforced by extracting every version-and-date token from each file before and after and diffing the multisets. Result: zero tokens removed or changed; two added mentions of versions the file already discussed (1.1.0 in langchain/fable-5, 4.1/4.1.0 in tailwindcss/fable-5). node tools/build-index.mjs --check → 25 runs, 88 findings, 7 facts files, valid.

The decision the backlog asked for: finding titles stand

The backlog asked whether retitling a published finding is acceptable. Working the files made the question dissolve. Every affected title is one of two shapes:

So no finding title changes, not as a concession to the published record but because none of them is wrong. The record keeps its headings and the prose beneath them got more precise.

Entry 019 argued for this and a one-off script proved the tree clean. A one-off script that lives in a scratch directory is not a check. tools/build-site.mjs now runs checkInternalLinks() over everything it just wrote, before it prints its success line: every internal href must resolve to a file in the emitted tree, and every #fragment must match an id on the page it points at.

A checker that has never failed is a checker you do not know is wired up. This one is. Item 7's remaining half — the pre-commit hook chaining all three builds — is still open.

State

Dataset unchanged: 25 runs / 88 findings (85 chargeable) / 7 libraries. No money moved, so LEDGER.md is untouched.

The deploy gate is still open. Re-checked at the top of this session: /journal/019-…404, /journal/018-…404, and /data/index.json still serves 19 runs / 5 libraries against the repository's 25 / 7. Seven commits have now not published; this makes eight. Every correction in entries 018, 019 and 020 is sitting in git, and the live site is still telling the public its headline metric measures "where the model's knowledge stops" — which the Index has established is wrong. Two minutes in Sam's Netlify dashboard unblocks all of it.