Repository navigation
Description
Filed unassigned by the os-dev seat implementing #10500 (session session_01DdCnBGcHeufjrq7drTD3wt). Recording, not fixing — out of that card's scope, and measured as a by-product of its reproduction.
What
#10500 closes the silence for a route: / client: value in no quote at all: it is now counted and named as unread. A narrower residue survives it.
clientsDeclared in parseLedgerSource (scripts/docs-audit/affected-docs.mjs) is computed as:
const clientsDeclared = rows.filter((r) => r.client).length + declined.filter((d) => d.key === 'client').length;
Both terms are row-relative. A correctly single-quoted client: that belongs to a row whose route: could not be read is in neither:
- it is not
rows.filter(r => r.client)— its row never became a row, and - it is not
declined— its own spelling is the one the recognizer reads, so nothing declined it.
The row's client: value therefore leaves the denominator without a word, while the file plainly declares it.
Measured
On ba2d8d4730, adding one row to packages/services/service-i18n/src/i18n-route-ledger.ts:
{ route: I18N_BASE + '/plurals', family: 'i18n', disposition: 'sdk', client: 'i18n.getPlurals' },
node scripts/docs-audit/affected-docs.mjs --bridge-coverage reports:
read 3 of 4 declared `route:` value(s) and 3 of 3 declared `client:` value(s); declined 1: line 101: route: I18N_BASE + '/plurals'
The route: half is exact — 3 of 4, and the unread one is named. The client: half says 3 of 3 on a file that declares four client: values.
Why this is a residue and not the same defect
The ROW does end up in a verdict: the file is flagged PARTIAL read and the unreadable row is named with its line, so nothing here is the silence #9896 and #10500 were about — a reader is told this ledger was not fully read and where. What is inexact is a sub-count: the client: denominator understates what the file declares, and understating a denominator is the direction that makes a partial read look more complete than it is.
Direction, not a prescription
- Leave it. The row-level verdict already fires, and the
client:count is only ever consulted alongside it. Cost:N of Ncan read as complete on a file that is not. - Count
client:declarations the same wayroute:is counted — file-wide over code-only source (comments and string contents masked, type declarations excluded), rather than through row windows.unreadableInfrom docs-audit: a route-ledger row whoseroute:is not a string literal is invisible to BOTH the row recognizer and the new partial-read counter #10500 already computes exactly that population for the non-quoted case; the quoted case would need the same treatment without double-counting the ones a row window already claimed. - Report the orphan explicitly — a
client:matched in code position that no row window claimed is itself the interesting event, and naming it is strictly more informative than moving a number.
(2) or (3) look like the shape worth costing; (3) has the property #9896 argued for — key on the spelling that was not read rather than on a shortfall, because a count comparison is blind to a mis-bound row.
Generated by Claude Code
Activity
claude commentedon Aug 21, 2026
Claim:
/pm-dispatchdomain:devx execution seat.Session:
session_01DdCnBGcHeufjrq7drTD3wtBranch:
claude/issue-10636-clients-declared-residueWorktree:
objectstack-issue-10636Domain:
domain:devxFile surface:
scripts/docs-audit/affected-docs.mjs(parseLedgerSource'sclientsDeclared) + its--self-testfixtures⭐ Unlocked: PR #10637 (#10500) merged, so that file is free and the
unreadableIncounter this residue sits beside is onmain.⛔ Governed surface out of scope (
⚠️ No formatter of record (no
docs/adr/**,.claude/**,skills/**,AGENTS.md,CLAUDE.md,content/docs/releases/**) and the #9465 epic fence (.changeset/tooling,cut-rc.yml,release.yml, rootpackage.json).format/prettierscript, prettier not in devDeps, no.prettierrc/.editorconfig) — ⛔ do not runprettier --write(#10622).⭐ Changeset:
AGENTS.md:943— "Pure bug fixes do not require a changeset"; ascripts/**-only diff that publishes nothing takesskip-changesetvia the additivePOST /labels(⛔ never a whole-set PUT — see #5533).Generated by Claude Code
fix(docs-audit): count a declared `client:` whose row was never assem…
claude commentedon Aug 21, 2026
Generated by Claude Code
fix(docs-audit): count a declared `client:` whose row was never assem…