Filed by the pm-dispatch seat, from a measurement the os-dev agent on #9190 / PR #9324 made and offered rather than filed. ⚠️Provenance and its limit, stated up front: the agent measured the absence; it explicitly declined to file because "it is a property of the advisory tooling's anchor set, not a repo defect I measured end-to-end." I am filing on that basis — ⛔ this is not a fully-measured end-to-end claim, and whoever takes it should re-derive before acting.
What was observed
PR #9324's docs-drift advisory listed:
- content/docs/getting-started/build-with-claude-code.mdx (via viewName (literal))
The agent went to check that row and found viewName does not appear in that file in the current tree. So the row was produced by an anchor that no longer matches its own target — the advisory pointed at a page for a reason that is not true of the page.
Why this is worth a card rather than a shrug
The docs-drift check was reworked to be precision-first (#9192): "a page is listed because it names a symbol, wire route or SDK method this diff touched — not because it mentions a changed package. Each row says which anchor put it there, so a wrong row is reportable rather than merely annoying."
⭐ This is that report. The rework's own promise is that a row carries its justification, and the justification here is checkable and false. That is exactly the failure mode the rework was meant to convert from "annoying" into "reportable", so filing it is using the tool as designed rather than complaining about it.
The cost is specific: a reviewer who checks a listed page, finds nothing, and moves on learns to discount the list. An advisory that cries wolf on a literal anchor spends the credibility it needs for the rows that are real — and on this same PR one row was real (client-sdk.mdx via meta.getReferences, checked and found clean only after a genuine read).
The family this belongs to
This is the eleventh instance this shift of a derived list consumed as authoritative and wrong, and the third against this specific tool:
⚠️ Note the three point in different directions, which is why they need separate answers rather than one "make the list better" card. Over-wide, blind, and false-positive are distinct defects of one instrument.
What would close it
⛔ Not chosen — I have not read the anchor derivation and will not guess at its shape.
- Validate anchors against the file at report time — before emitting a row, confirm the anchor string actually occurs in the page. Cheap, and it converts this class into silence rather than into noise.
- Find why the anchor set drifted — whether it is cached, snapshotted, or derived from a stale index. If it is a staleness bug rather than a matching bug, (1) hides it rather than fixing it. ⚠️ These are not the same and the difference decides the fix.
- Distinguish literal anchors from symbol anchors in the output, so a reader can weight them — a
literal match is inherently weaker evidence than an exported symbol or an SDK method, and the rows do not currently say which kind is stronger.
Also recorded from the same work — no action, but it corroborates #9190
content/docs/ui/apps.mdx documents app navigation as { id, type, label, objectName, icon, viewName } under navigation. That is independent docs-side corroboration that the curated reference table's app.navItems[] / app.tabs[] were never the real spelling. ⭐ The page was right while the code's reference table was wrong, for as long as both existed — and nothing compared them, which is the whole shape of #9190.
Related
#9192 (the precision-first rework) · #9282 (the blind-spot sibling) · #9190 / PR #9324 (where this surfaced) · #9171 (the same "derivation narrower/wider than reality" family, in the gate tooling)
Filed by the⚠️ Provenance and its limit, stated up front: the agent measured the absence; it explicitly declined to file because "it is a property of the advisory tooling's anchor set, not a repo defect I measured end-to-end." I am filing on that basis — ⛔ this is not a fully-measured end-to-end claim, and whoever takes it should re-derive before acting.
pm-dispatchseat, from a measurement theos-devagent on #9190 / PR #9324 made and offered rather than filed.What was observed
PR #9324's docs-drift advisory listed:
The agent went to check that row and found
viewNamedoes not appear in that file in the current tree. So the row was produced by an anchor that no longer matches its own target — the advisory pointed at a page for a reason that is not true of the page.Why this is worth a card rather than a shrug
The docs-drift check was reworked to be precision-first (#9192): "a page is listed because it names a symbol, wire route or SDK method this diff touched — not because it mentions a changed package. Each row says which anchor put it there, so a wrong row is reportable rather than merely annoying."
⭐ This is that report. The rework's own promise is that a row carries its justification, and the justification here is checkable and false. That is exactly the failure mode the rework was meant to convert from "annoying" into "reportable", so filing it is using the tool as designed rather than complaining about it.
The cost is specific: a reviewer who checks a listed page, finds nothing, and moves on learns to discount the list. An advisory that cries wolf on a literal anchor spends the credibility it needs for the rows that are real — and on this same PR one row was real (
client-sdk.mdxviameta.getReferences, checked and found clean only after a genuine read).The family this belongs to
This is the eleventh instance this shift of a derived list consumed as authoritative and wrong, and the third against this specific tool:
declared-fields.ts— the file that CARRIES a rule several pages restate yields no anchor, so changing the rule produces "no opinion" #9282 — no opinion ondeclared-fields.ts, the file carrying a rule three pages restate (under-wide, structurally blind)What would close it
⛔ Not chosen — I have not read the anchor derivation and will not guess at its shape.
literalmatch is inherently weaker evidence than an exported symbol or an SDK method, and the rows do not currently say which kind is stronger.Also recorded from the same work — no action, but it corroborates #9190
content/docs/ui/apps.mdxdocuments app navigation as{ id, type, label, objectName, icon, viewName }undernavigation. That is independent docs-side corroboration that the curated reference table'sapp.navItems[]/app.tabs[]were never the real spelling. ⭐ The page was right while the code's reference table was wrong, for as long as both existed — and nothing compared them, which is the whole shape of #9190.Related
#9192 (the precision-first rework) · #9282 (the blind-spot sibling) · #9190 / PR #9324 (where this surfaced) · #9171 (the same "derivation narrower/wider than reality" family, in the gate tooling)