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. 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

  3. 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

  4. 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

  5. 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

  6. 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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions