feat(scripts): count the changeset bodies check-changeset-claims cannot reach - #9410
Merged
os-try-charles merged 2 commits intoSep 14, 2026
Merged
Conversation
…ot reach objectui#9065 was five WENT-FALSE changeset claims at once. Re-running check-changeset-claims on each falsifying merge's own range splits two ways: it named four of the five, and was blind to the fifth. The fifth's body names no file at all -- it coordinates itself by symbol -- so no diff can make the diff-mode check speak about it. That was established by counting backticked spans by hand, once, on one card. --audit now counts that population: bodies that publish a CHANGELOG paragraph but spell no name the gate can resolve, plus those whose every name resolves to none or to many. The size of the blind spot is therefore re-derived on each run rather than written down (AGENTS.md rule #9). The coordinate is NOT widened and the gate stays report-only. The one spelling that would bring the fifth instance into the census is the stem of a principal component's file name, which a large fraction of the pending queue backticks; admitting it lands in the same volume band the header's own measurement already rejected. That trade is recorded in the header and left open on objectui#9140. Tests pin the counter in both directions, including a firing negative control -- the same body with one resolvable file name added must leave the blind population -- and pin the blind spot itself AS A LIMIT. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr
os-try-charles
marked this pull request as ready for review
September 14, 2026 07:29
os-try-charles
deleted the
claude/issue-9140-changeset-claims-blind-spots
branch
September 14, 2026 07:49
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Part of #9140 — this delivers ONE of the card's two defects and deliberately leaves the other open. It does not close the card.
Which defect this delivers
#9140 separates two things, and they have different fixes:
Reproduction first — the card's measurement, re-run on this branch's base
Base
9ba7e9c3a2. Each falsifying merge re-run on its own parent..merge range,node scripts/check-changeset-claims.mjs --base MERGE-CARET --head MERGE(MERGE-CARET spelled in words: the caret is the parent operator):c5fbe0b99.changeset/5293-view-sort-order-spelling.mdadbda1bed.changeset/7165-grid-dependent-values.mdd3499b315.changeset/7655-chatbot-registration-authoring-faces.mdad66d79a1.changeset/7727-conditional-formatting-record-scope.md0601af1ad.changeset/8934-chatter-feed-affordance-only.md⇒ the card's finding reproduces exactly: 4 of 5 named, the 5th invisible. Every run exited 0.
namedFiles()— I read 1 / 0 / 4 / 4 / 2 where the card reads 1 / 10 / 16 / 3 / 0. Different instrument (the card counted spans "containing a slash or ending in a source extension", undeduped;namedFiles()requires both and dedupes). The finding is unaffected and reproduces: the one the gate could not see is the one — uniquely — with zero.Why the coordinate was NOT widened
I measured the widening rather than assuming it. The cheapest in-idiom candidate stays inside the gate's existing machinery: treat a backticked span equal to the stem of exactly one tracked file as naming that file (
ObjectGrid→packages/plugin-grid/src/ObjectGrid.tsx). Same instrument, same unambiguous-resolution filter, no symbol table.Re-measured over the 25 most recent first-parent commits on my base, paragraphs per commit:
The first row reproduces the header's own row (median 1 / mean 4.2 / max 23) — my instrument agrees with theirs, which is what makes the other rows comparable.
⛔ The union's tail exceeds the runner-up the header rejected. And the crux is worse than the aggregate suggests:
.changeset/7165-grid-dependent-values.mdenters through exactly one spelling:ObjectGrid.ObjectGridis backticked by 41 of 759 pending changesets.⇒ seeing that one true positive means asking the seat to re-read up to 41 paragraphs on every commit that edits the grid. That is the release-time wall in a smaller costume — the exact shape the header rejected on a measurement — on a channel that half one of #9140 just measured at zero for four. Widening is a readability-budget decision, it is genuinely open, and ⛔ I did not take it. The header records the trade; the numbers stay on the card.
What this PR does instead
--auditnow counts the population the diff-mode check can never reach for any diff: bodies that publish a CHANGELOG paragraph but spell no name the gate can resolve — either naming no file at all (symbol-coordinated, the 5th's shape) or naming only files that resolve to none or to many.--audit --blindlists them.The card established that population by counting backticked spans by hand, once, on one card. It is now re-derived on every run — AGENTS.md rule #9 applied to the gate's own blind spot.
The gate's coordinate, its findings and its report-only nature are unchanged;
--audit's existing lines are unchanged.Left open — for whoever revisits this
check-changeset-claimsfired on 4 of the 5 WENT-FALSE claims objectui#9065 had to repair by hand, and nobody acted on any of them — the 5th it could not see at all #9140 has no triage ruling, and this needs one.Verification
scripts/__tests__/check-changeset-claims.test.ts— 28 passed (3 new).silentdrops by exactly 1, with both runs pinned to the samepublishingpopulation so neither side can be reading nothing).silentcounter turns 2 of the 3 new tests red; restore verified by an emptygit diff HEADand a matching blob hash.check-changeset-claims/-no-major/-fixed/-overwrite/check-control-bytes/check-changeset-presence: all exit 0.tsc -p tsconfig.scripts.json: exit 0, and--listFilesconfirms the new test file is in that program.🤖 Generated with Claude Code
https://claude.ai/code/session_01FhBNJcLRZLe8M87VcUgpKr
Generated by Claude Code