…nce instead of letting it read as live
Three docblocks stated a retired producer's behaviour in the PRESENT tense
("assigns", "already writes"), one of them as the stated factual basis of
objectui#4580's revised Q1 ruling. The producer was removed by objectui#6366
(PR #6632) as a declared BREAKING CHANGE, so the sentences read as live while
being false, which is the shape AGENTS.md #9 forbids.
Established per site at the write-time ref, not per card: the sentences were
TRUE when PR #4608 wrote them on 2026-08-13 — at that commit
`packages/react/src/spec-bridge/bridges/list-view.ts` exported `bridgeListView`
and carried the label and description assignments at exactly the cited
addresses. They are therefore ROTTED, not born false, so each is KEPT, quoted,
dated, and followed by a dated note naming objectui#6366 as the falsifier.
Deleting them would erase that objectui#4580 ever had a stated rationale.
What the docblocks now assert points at instruments rather than at a retired
producer: the declared face is re-derived by
`inline-locale-declared-face-9092.test.ts`, the read side by the renderer pins.
No figure is written down.
Nothing executable moves — the diff is comment-only plus one changeset.
Co-authored-by: Claude <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UanLVj6xvbS6puBCewLr8L
Fixes #9365
Clause-②: no
Three docblocks described
bridgeListView— a producer objectui#6366 retired as a declared BREAKING CHANGE — in the PRESENT tense (assigns,already writes), one of them as the stated factual basis of objectui#4580's revised Q1 ruling. Nothing re-derives those sentences and nothing can, which is the shape AGENTS.md #9 forbids. This is a paper-trail repair: nothing executable moves and objectui#4580 is not re-litigated.Per-site verdict — established at the WRITE-TIME ref, per SITE
git log -Snamed one write-time ref for all three sentences:c1d939f7f— "fix(types): one SchemaNode and one label vocabulary" (#4580, PR #4608), 2026-08-13. Reading the tree AT that ref is what rules BORN FALSE out, and it rules it out byte-exactly.BaseSchema.labeldocblock —packages/types/src/base.tsc1d939f7f: that tree carriesexport const bridgeListViewinpackages/react/src/spec-bridge/bridges/list-view.ts, and the cited line is exactlyif (spec.label) node.label = spec.label;BaseSchema.descriptiondocblock — same filec1d939f7f: the cited line in the same module is exactlyif (spec.description) node.description = spec.description;packages/components/src/__tests__/inline-locale-label-read-sites.test.tsxc1d939f7f— the same commit wrote all three sentencespackages/plugin-grid/src/ObjectGrid.tsx20b5e361ebridgeListViewin@object-ui/react, was migrated in the same PR" is a PAST-tense account of objectui#5068's migration. It was true when written and it is true now.packages/plugin-grid/src/__tests__/gridNonAuthorKeys.test.tsx20b5e361e⇒ the card's "three rotted / two probably fine" split — which the card itself flagged as a one-line-of-grep-context reading — survives a whole-docblock re-read. None of the five is BORN FALSE, and all three repairs are the ROTTED route (keep + date + name the falsifier), not the correction route.
The falsifier, dated:
bf283414f— "refactor(react): retire the spec-bridge — SpecBridge, bridgeListView, bridgeFormView (#6366) (#6632)", 2026-08-29..changeset/retire-spec-bridge-6366.mddeclares it BREAKING and removes the public exports outright, so the producer, its module and the addresses the sentences cite are all gone.What the docblocks assert now. The declared face is re-derived on every run by
inline-locale-declared-face-9092.test.tsinpackages/types(bothtsc -p packages/types/tsconfig.test.jsonand vitest read it); the read side by the renderer pins in@object-ui/componentsand@object-ui/plugin-dashboard. No figure is written down — the instrument is named instead (AGENTS.md #9). ⛔ No new gate, probe or citation was added: the onlypath:lineaddresses in the diff are the two the dead sentences already carried, kept verbatim inside the quotation.Measurement — the quotation trap, taken head on
⭐ A count is invariant under quotation, and the ROTTED route quotes what it retires. So the token and the rot PHRASE were each read in ASSERTION position and in QUOTED position, separately, with a whitespace-tolerant scanner over whole file contents (
*prefixes stripped, line wraps joined) rather than a line-anchoredgit grep. Corpus: every git-tracked file underpackages/,CHANGELOG.mdexcluded.bridgeListViewSchemaRenderer, same instrument, same corpusRead the bare token row as the trap it is: it goes UP, because the repair's own dated notes name the three retired exports. The reading that answers the card is the PHRASE in ASSERTION position: 3 to 0 and 2 to 0, with every one of those occurrences still present in quoted position, which is the ROTTED route working as intended.
bridgeListViewandassigns, so a line-anchored probe reads 2 where the truth is 3.Whole-tree population. 11 mentions across 5 files, not the card's 5 across 4. The extra six are all in
packages/react/CHANGELOG.md— published release history, past tense, CORRECT, and ⛔ untouched.Gates and tests — every exit code captured to a file BEFORE any pipe
check-changeset-presencecheck-changeset-overwrite·check:changeset-claims·check:pending-changeset-literals·check-changeset-no-major·check-changeset-fixedcheck:control-bytescheck:new-line-citationscheck-governed-queue-guard --self-test--teston the three paths: "NOT GOVERNED — 3 path(s) checked against 5 governed surface(s); none matched"check:doc-component-typespackages/types/src/base.ts; "Every documented component type is registered"pnpm --filter @object-ui/types type-checktsc --noEmit+tsconfig.examples.json+tsconfig.test.jsonpnpm --filter @object-ui/types testpnpm --filter @object-ui/components type-checktsc --noEmit+tsconfig.test.json, after building that package's dependency closurepnpm exec vitest run packages/components/src/__tests__/inline-locale-label-read-sites.test.tsxscripts/__tests__/suites that read either changed fileEvery heavy run went through the container's shared verify lock; each one printed
VERDICT command-exit 0.NOT MEASURED, with reasons.
check:doc-example-typesexited 2 = PREREQUISITE NOT MET: it needs every package'sdiston disk (a whole-monorepo turbo build). It is a repo-level scan and CI's run; a comment-only diff moves no type it reads.@object-ui/types's dependency closure build is empty —pnpm --filter "@object-ui/types^..." buildselects no workspace package with a build script — so step ① is a no-op for that package and was run for real for@object-ui/components.Declared narrowings.
eslint --no-inline-configwas run on the two changed files only, from the flat config that owns the population (eslint.config.js, whose lint population is**/*.{ts,tsx}minus itsignoresblock): 2 files linted (count read from--format json), 0 errors, 21 warnings, ALL of them pre-existing@typescript-eslint/no-explicit-any—base.tsreads 20 warnings both onorigin/mainand here. No type-aware linting is configured (noproject/projectServiceineslint.config.js), so a comment-only diff cannot move the verdict on any file it does not touch. Repo-widepnpm lintis CI's run. The full@object-ui/componentssuite is likewise CI's; the changed file there is a header comment and the file itself was run.patch, not emptyThe dispatch asked for EMPTY frontmatter on the ground that no package moves. Measured, it does.
@object-ui/typespublishesfiles: ["dist", ...], and afterpnpm --filter @object-ui/types buildthe repaired prose is inpackages/types/dist/base.d.ts(2 hits for the new dated note; POSITIVE CONTROL: 2 hits for neighbouring prose known to ship; ABSENT CONTROL: a minted token, 0 hits, exit 1). Published bytes therefore move, and.changeset/9375-base-i18n-vocabulary-docblock.md— the same file, the same class of comment-only repair — graded itselfpatchfor exactly this reason. So this PR declares'@object-ui/types': patchand states the conflict rather than picking a side quietly. The components-side change is a test header, which reaches no tarball (tsconfig.jsonexcludes**/__tests__/**), and is owed no declaration of its own.Out of scope, deliberately
bridgeFormView/SpecBridgesweep the card names as the obvious next question was not run and is not widened into here.packages/react/CHANGELOG.mdis untouched.Generated by Claude Code