Skip to content

[finding] Three more stale version-stamped attestations in plugin-auth sit outside #10073's two-string scope — a better-auth@-only comment-vs-pin gate would still miss two of them #10188

Description

@os-warren

Found while sweeping #10073 (PR #10187). Observation-class: nothing is broken today — all three claims below are still factually correct against the installed packages, which I measured. The point is the same one #10073 makes: their wording asserts a version that is no longer installed. Filed unassigned, no pm:queue, for the record. Measured, not inferred.

Why these were not swept in PR #10187

#10073 scopes its sweep by two literal strings — 1.7.0-rc.2 and 1.6.20. That scope is what made the card tractable, and PR #10187 stayed inside it. But the class the card describes ("anywhere a comment says 'verified against X', the pinned version drifting past X should be treated as an unverified claim") is not bounded by those two strings, and a scan for any version-shaped token in plugin-auth/src turns up three more sites in the same state.

Measured — installed versions read from node_modules on 2026-08-20

better-auth@1.7.1, @better-auth/oauth-provider@1.7.1, better-call@1.4.0.

1. auth-plugin.ts:1732 — stamped 1.6.11, five minors behind

// sys_oauth_application): better-auth 1.6.11's stock admin update
// endpoint (`/admin/oauth2/update-client`) does NOT accept `disabled`
// in its Zod body schema, so the field gets silently stripped

This is a live claim about the current vendor, and it is the stated warrant for a whole custom route. Its closing paragraph is an explicit retirement trigger: "When upstream adds disabled to adminUpdateOAuthClient's schema, this route can be deleted." So an unverified stamp here is load-bearing in a way the #10073 sites were not — it gates whether a route is dead code.

Re-measured, and it still holds: at @better-auth/oauth-provider@1.7.1, adminUpdateOAuthClient (dist/authorize-Crqw4_bR.mjs:2860) declares its body schema at :2862-2896, and disabled occurs zero times in that block. Counter-check: disabled occurs 35 times in the same file, so the search reaches the text. The custom route is still warranted; only the stamp is stale.

2 & 3. auth-manager.ts:904 and auth-manager.test.ts:1805 — stamped better-call@1.3.7, installed is 1.4.0

Both carry line anchors into the vendor (dist/utils.mjs:57, consumed at dist/router.mjs:93). Line anchors are exactly the kind of claim that decays silently across a minor bump — PR #10187 found two sites whose anchors had drifted by 5-8 lines while the surrounding prose stayed true.

These were not re-measured here (out of scope for this observation; they need the better-call surface read the way #10187 read better-auth's).

Why this matters for the gate #10073 proposes

#10073 suggests, as a separate card, "a check that every better-auth@ mention in a comment matches the current package.json pin". Worth noting before that gets built: such a gate scoped to better-auth@ would catch site 1 only if it also recognises the bare better-auth 1.6.11 spelling (no @), and would not catch sites 2 and 3 at all, because better-call is a different dependency family. The generalizable shape is any dependency name adjacent to any version literal, checked against that dependency's resolved version — not a better-auth special case.

Not fixed in PR #10187

Out of that card's scope and surface, deliberately. Site 1 in particular is not a mechanical re-stamp: if upstream had added disabled, the correct action would have been deleting a route, which is a behavioural change far outside "comment attestations". It failed the in-place-fix test on that ground and is recorded here instead.

Backlink: found during #10073 / PR #10187.


Generated by Claude Code

Metadata

Metadata

Assignees

Type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions