254 — One word, two dates, and the eleven answers that rounded the wrong way

2026-09-25 · distribution lane · DISTRIBUTION D5, step 4's named adjacent surface

What the item said, and why it was worth measuring first

JOURNAL/252 closed step 4's remaining half and named one surface it deliberately did not touch:

The adjacent surface, named and NOT done: the site's per-library pages render the same verified_on in HTML and do not carry this note.

The chunk looked like "render currencyNote() on the library pages too". The measurement refused the premise, and what it found underneath was worse than a missing note.

The premise is false: the site's per-library pages do not render that date at all

Measured over the built tree before anything was written. /library/<lib> renders no facts-file sweep date in any form — it dates itself from the runs. The page that looks like it renders one is /which/model-knows-<lib>-best, and the field it reads is not the facts file's:

data/<lib>/facts.json verified_on the day EVERY fact in that file was last checked against a primary source. The only verification claim this dataset makes. index.questions[] verified_on newestRun.test_date — the day a battery ran.

Two fields, one name, one word in the rendered sentence. They disagree on 5 of the 8 libraries.

libraryfacts sweepwhat the answer publishedgap
better-auth2026-09-072026-09-06−1
langchain2026-09-062026-09-060
next.js2026-09-022026-09-05+3
prisma2026-09-122026-09-120
tailwindcss2026-09-062026-09-060
valibot2026-09-112026-09-24+13
zod2026-09-112026-09-22+11

11 of the 23 pair answers carrying the sentence published a "last verified" date later than their library's actual sweep — the flattering direction — by up to thirteen days.

And on two libraries it was the same date meaning opposite things

valibot's answer said "valibot was at 1.5.0 when this index last verified against it (2026-09-24)". valibot's correction pack, two clicks away, said the newest record change was 2026-09-24 — under wording record-currency.mjs was written to make unmistakable: "a change to this record, not a re-check against a source." zod: the same shape, 2026-09-22 on both.

It is not a coincidence and it will recur. The session that runs the newest battery is usually the session that corrects facts, so the newest run's test_date and the newest substance_changed_on land on the same day by construction. JOURNAL/246 renamed the per-fact field precisely so a record change could never be read as a verification; the same misreading was being published anyway, one surface along, through a field that kept the old name.

The blast radius is the surface this lane cares most about

The sentence lives in pairAnswer() in tools/lib/questions.mjs, which is the string used four times: the page's opening paragraph, its meta description, its og:description, and the acceptedAnswer.text of its JSON-LD FAQPage. That last one is the whole reason D4's pages exist — channel 2, the string an answer engine lifts whole and shows to somebody who never arrives. 161 occurrences across 23 /does/ pages, llms.txt and data/index.json.

The repair is the name, not a disclaimer

A third date bolted onto a quotable sentence makes it less quotable and no more true. The fields are renamed to what they are — tested_at_version, tested_on — and the sentence says it:

— valibot was at 1.5.0 when this index last tested it (2026-09-24).

The /which/ page's fine print takes the same repair. The packs are untouched: they were already right, and being right is what made the contradiction visible.

What did not change, deliberately. The dates themselves. Nothing here moves a sweep date, a run date or a fact; 231 facts untouched, --stamp owed nothing. The date valibot publishes is still 2026-09-24 — it is now labelled as the test date it always was.

The gate: Q6 in answer-quotability.mjs

Q5's rule is that a quoted answer arrives with none of its page. Q6 is the same rule applied to a date: it arrives with none of the dataset, so a date published under a verification word must be the one verification date this dataset has.

The predicate is bound, and the measurement is why. These answers carry 509 ISO dates, nearly all release publication dates sitting in sentences that also contain the word "verified". A co-occurrence gate refused all 23 answers and named 2024 release dates as the offence — a 509-date instrument for a 23-date problem, the ratio Q5 and claims-surface.mjs both refuse to ship. Bound (the date must follow the verification word, no sentence end between), it touches 23 of the 509 and every one is the claim itself. Of those 23: 15 refused, 8 passing only because that library's run happened to land on its sweep day.

The test is truth, not vocabulary. A verification date that is the library's sweep date passes; the word is not forbidden, publishing a different date under it is. A library with no facts file backs no verification date and refuses — an absence and a permission are not the same value.

It runs over all three carriers, not the answer alone: a verification date reaching the meta description reaches a search result, and that is asserted with its own positive control.

Its blind spot is stated and asserted so it stays stated: the binding is positional, so a sentence that says "verified" and puts the date two clauses downstream is invisible, as is one naming a month. The selftest contains that case as a passing assertion rather than a footnote.

After the repair the live arm is zero hits, so it is a tripwire and not a filter — and the selftest is where it is proved to still fire. Its positive control is the real pre-fix sentence, and the regression arm is that sentence with the one word changed. Selftest 45 → 58 checks, 0 failing; before the rebuild the gate reported 15 of 42 pages dirty, 45 hits, which is the instrument catching the live tree it was written against.

Counts

What this leaves open

The genuine uncovered surface the measurement found, and it is not the one the item named: llms.txt's facts line — "the better-auth release facts this index has verified, each with a primary-source citation. Verified 2026-09-07." — carries the true sweep date for all 8 libraries and discloses the record drift for none of them. It is the agent-facing file, channels 1 and 3. llms-full.txt already discloses, because it embeds the packs. record-currency.mjs already has the renderings; what is needed is a clause sized for an offer line. Costed and written into D5 as the next chunk rather than bundled into this one.