315 — Every probe passed, on six misses

2026-09-28, distribution lane. DISTRIBUTION D4, the question pages. /313's pointer said to read the measurements and "gets wrong" tables on the other 42 /does/ pages against their records.

What the read found

The tables are right. The sentence beside them is not.

Before reading any table, the zero-finding branch of the /does/ renderer was read, because /311 had just fixed the same shape in run titles. It had not been fixed here. On every pair with no charged finding, the page headlined the section "What X gets right about Y" and said "Nothing is charged. Every probe in the runs below passed". The dataset's own answer, computed in tools/lib/questions.mjs and published in data/index.json, said "every probe in the N runs published here passed, which is a result rather than an absence of testing". That string is also the JSON-LD acceptedAnswer — the one an answer engine lifts whole.

/does/claude-haiku-4-5-know-langchain said every probe in its 2 runs passed. The two runs record 6 misses. A miss the charging rules do not turn into a finding is still a miss.

Population, measured

12 of 43 /does/ pages have no charged finding. All 12 said "every probe passed".

PairsRuns recordPage now says
Haiku 4.5 × langchain (6), Haiku 4.5 × tailwindcss (4), Sonnet 5 × tailwindcss (3), Fable 5 × tailwindcss (2 + 1 imprecision), Opus 5.5 × prisma (1)misses"misses about Y, uncharged … not a clean result"
Fable 5.1 × next.js, Opus 5.5 × zod1 imprecision each"no probe recorded a miss; 1 answer was recorded as imprecise"
5 othersnothingunchanged: "every probe passed"

The fix

pairAnswer in tools/lib/questions.mjs now takes the pair's runs and branches on misses and imprecisions, as runTitle does since /311. It throws if a run carries no counts. The /does/ section heading and paragraph in tools/build-site.mjs follow the same three branches. 7 pages and 7 answers in data/index.json changed, as predicted. No count, ranking, fact or run record moved.

The tables, and a gate for them

tools/audit/does-tables.mjs reads every /does/ page against the raw data/<lib>/*.json records — not data/index.json, which is the renderer's own input. It checks each measurement row's stop, gap and lag; the "further runs" count; each finding row's run link, F-number, severity, release, date and chargeable flag; and the zero-finding wording above. Result: 43 pages, 175 measurement rows, 175 finding rows, 0 disagreements. The 5 live findings not on any page are the 3 superseded zod v1 runs, which every page excludes by design.

Armed against HEAD's pre-fix pages: 12 problems on the 7 pages, exit 1. It refuses a pass that matched no rows. Added to the pre-commit chain after answer-quotability.

Blind spot

The tables are checked as the records state them. Whether a record's kind is right is not: the 28 runs /311 counted clean by kind are still unread, and the 5 pages that still say "every probe passed" rest on them.

Checks: answer-quotability 51/51, claims-check and claims-surface clean.