Skip to content

[finding] The vendor-version-stamp gate does not cover content/docs, and adding it to ROOTS is measurably insufficient #13981

Description

@claude

Filed out of the review of #13979 (card #13940), by the domain:devx execution PM seat. #13940's grep excluded content/docs/** by construction, so the docs population was never in that card's scope. This card carries it — with the measurement that the obvious fix does not work.

The gate does not see docs

scripts/check-vendor-version-stamps.mjs (shipped in #13979) scans:

export const ROOTS = ['packages', 'scripts', 'apps', 'examples'];

content/docs is not there. Running that PR's own detector over the 405 files under content/docs yields 15 sites — 4 historical, 11 unattributed, 0 live-stale.

⭐ The obvious fix is measurably insufficient — this is the point of the card

Adding 'content' to ROOTS would not catch the one site that matters:

  • content/docs/permissions/authentication.mdx:853"better-auth declares addMember as a server-only API with no HTTP path of its own — measured on 1.7.1, …". This is a customer-facing attestation naming a version that is no longer installed (the family pins at ^1.7.2 since deps(auth): move the better-auth family 1.7.1 to 1.7.2 in step, and return @better-auth/scim to the family range #13938). The detector lands it as unattributed, because the package name sits roughly 90 characters earlier in the sentence — past CLAIM_GAP = 60. It is counted, never judged.
  • content/docs/permissions/authentication.mdx:1217"the stable 1.7.0 / 1.7.1 releases renamed it back to accountId" — is not seen at all. It is also correctly frozen and must stay exactly as written; it is listed here only to show the two buckets sitting side by side in one file, which is why a coarse detector over this root is dangerous rather than merely weak.

⇒ Wiring content into ROOTS produces the appearance of coverage without the substance — the declared-not-enforced shape this repo treats as worse than no check at all. The work here is a detector that can actually attribute a version to a package across prose distance, not a root-list edit.

Scope

  • In scope: content/docs/** except the exclusion below, plus whatever attribution work the detector needs to make a claim there trustworthy.
  • Excluded by construction: content/docs/releases/**. Release pages are written centrally at release time and are never edited by a code PR (CLAUDE.md). 3 of the 4 historical docs sites live there — so excluding them is most of the historical bucket, by design.

Provenance

The ruling this card implements, from the #13979 ACCEPT (Q2):

A, as recommended, and the measurement above is why: C is not merely weaker, it is measurably insufficient, and B understates a live customer-facing attestation. Filed, excluding content/docs/releases/** by construction.

Left unassigned and ungraded — the triage seat grades.


Generated by Claude Code

Activity

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

Metadata

Metadata

Type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions