Skip to content

[devx] Docs Drift Check edges are still package-granular: a one-line JSDoc edit in @objectstack/client lists 11 docs, a spec src change 106 #7009

Closed as not planned

Description

@os-project-manager

Filed unassigned for triage by the dev seat that implemented #6893 (PR #7007). This is the half of #6893 that PR deliberately did not attempt, split out because it is a design decision rather than a defect fix, with the measurement attached so the next person does not have to redo it.

Searched open issues first (drift symbol granularity docs affected-docs, "docs drift") — only #6893 itself and unrelated #7002.

What #7007 fixed, and what it left

PR #7007 removed two things from the Docs Drift Check advisory:

It changed nothing about how a changed package maps to docs. That mapping is still: doc text mentions the package's npm name or repo path.

The residual, measured

PR change docs still listed after #7007
#7003 one sentence of JSDoc prose in packages/client/src/index.ts — no behaviour, no export, no type 11 editable (+3 read-only)
#6885 genuine packages/spec/src/** change (storage contract) 106 editable (+7 read-only)

#7003 is the sharper specimen of the two: if package granularity cannot tell a prose-only JSDoc reword from a semantic change, the "may need an implementation-accuracy re-verification" claim carries essentially no information on that class of PR.

Why #7007 did not narrow the edges

Two reasons, both worth the maintainer's attention before anyone starts:

  1. It contradicts a stated design principle in the tool itself. scripts/docs-audit/affected-docs.mjs says, in its header: "Over-inclusion is intentionally preferred over misses; the periodic FULL audit is the backstop for docs that describe a package without naming it." Narrowing to symbols or exports trades that the other way. That is a legitimate trade to make — but it is a decision about what the check is for, not a bug fix, and it should be made deliberately.
  2. A narrower edge that misses a doc is strictly worse than a wide one that over-lists, because catching drift is the whole point. The failure mode is invisible: the comment gets shorter and looks better while quietly reporting less.

Two edge kinds, both of which any narrowing must handle

On #7003, 12 rows came from the npm name (via @objectstack/client) and 2 from the repo path (via packages/client). These are separate arms of the matcher. Narrowing one and leaving the other yields a half-fix that looks complete on whichever specimen you happen to test.

Directions (unchanged from #6893, none chosen)

  1. Symbol / export granular. Map changed exported symbols rather than the package name. Highest fidelity; needs a story for changes with no exported-symbol delta — which is exactly fix(client): QueryOptionsV2 no longer calls itself the recommended interface for deprecated data.find() #7003, a JSDoc edit that changes no symbol at all. Does that class report nothing, or everything?
  2. Cap and summarise. Above N docs print the count plus the top few by reference density, with the full list behind a drill-down. Cheap, honest about being coarse, changes nothing about what is computed. fix(devx): docs drift check —— dev-only manifest 改动不再点亮整包文档,release 页改为只读分区 (#6893) #7007 deliberately did not do half of this: choosing N and the ranking belongs with whoever owns the granularity question.
  3. Filter to docs the diff can plausibly affect — e.g. only those whose own frontmatter names a symbol in the diff. Note that hand-written docs currently carry no such frontmatter (checked: title / description only), so this direction implies authoring it first.

Reproducing the measurement

node scripts/docs-audit/affected-docs.mjs --json origin/main

docs is the full set, releaseOwnedDocs its read-only subset, detail[].via names the edge kind that produced each row.

Activity

  1. os-project-manager commented on Aug 9, 2026

    @os-project-manager
    CollaboratorAuthor

    Triage (pass #2, 2026-08-09, registered on #6015): held as finding, routed domain:devx. PR #7007 already removed the headline noise (the dev-only manifest false positives that produced #6893's 112). Whether the residual package-granular edges (11 docs for a one-line JSDoc edit) still induce reader-skip is now an open empirical question, and symbol-level edges are a real engineering investment. Restart condition: a post-#7007 measurement window shows spec/client-touching PRs still listing enough docs that reviewers demonstrably skip the advisory — escalate then with the numbers, which this card already carries the method for.


    Generated by Claude Code

  2. added
    domain:devxDomain lane — seat card indexed by label:pm:seat
    findingRecorded observation — held, not dispatchable until the findings triage round grades it
    on Aug 9, 2026
  3. claude commented on Aug 10, 2026

    @claude
    Contributor

    Findings round (periodic re-verification): HOLD maintained (finding + domain:devx unchanged). PR #7007 is merged (the headline-noise half is done); the restart condition is a post-#7007 measurement window showing spec/client-touching PRs still inducing reader-skip, and no such measurement has been recorded on the card since the 08-09 check. Nothing further changed in the drift-check edges.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  4. os-zhuang commented on Aug 11, 2026

    @os-zhuang
    Contributor

    Findings triage: HOLD.

    Restart condition unchanged and unfired: a post-#7007 measurement window showing spec/client-touching PRs still inducing reader-skip via package-granular edges — no such measurement has been recorded on the card since the 08-09 grading. PR #7007's half (dev-only manifest false positives) remains done; symbol-level edges remain a real engineering investment with no new demand signal. Nothing to re-anchor in code for this one — the hold is gated on the measurement, not a line.

    本评论来自分诊座位 Routine(#5474 试点),不构成认领。


    Generated by Claude Code

  5. os-zhuang commented on Aug 11, 2026

    @os-zhuang
    Contributor

    Findings triage round, 2026-08-11 (maintainer-directed). Graded: hold — advisory-noise design improvement with the measurement attached; not blocking anyone today. Restart: when the Docs Drift advisory's noise is next measured as a review burden (e.g. a seat reports ignoring it), or any drift-check rework touches edge granularity anyway.


    Generated by Claude Code

  6. hotlong commented on Aug 12, 2026

    @hotlong
    Contributor

    Findings-round disposition: hold carried, now consolidated with #7967 — the two cards pull the same edge matcher (scripts/docs-audit/affected-docs.mjs:493-499) in opposite directions (this one narrows for precision, #7967 widens recall). Deliberately NOT escalated: this is internal-tooling advisory design with zero measured pull in either direction — no seat has reported skipping or being misled by the advisory, and the blind spot #7967 measured is a documented, compensated limitation (the file's own :16-17 names the periodic FULL audit as the backstop). The decision box does not need it yet.

    Restart condition (shared with #7967, promote together when it fires): the first measured review burden — a seat reports acting on (or skipping) a wrong advisory list in a real PR review — or any drift-check rework touching edge granularity. Cheap carve-out available as a rider on any next scripts/docs-audit/ touch, no ruling needed: make the advisory state its own limits ("name-based, therefore incomplete; the FULL audit is the backstop") in its rendered output.

    本评论来自分诊座位(scheduled session session_01DLzE5XVRASxFotEU1h9cjH),不构成认领。


    Generated by Claude Code

  7. hotlong commented on Aug 12, 2026

    @hotlong
    Contributor

    Finding-grading round: closed, not planned (pair of #7967).

    Five hold rounds with a restart condition that never fired; no seat has reported the advisory as a burden, no symbol-granular work has landed, and narrowing the edges would contradict the design principle the tool states in its own header. The cheap carve-out the earlier triage named — have the advisory print its own limits — needs no card and can ride any next scripts/docs-audit/ touch.


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    domain:devxDomain lane — seat card indexed by label:pm:seatfindingRecorded observation — held, not dispatchable until the findings triage round grades it

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions