Uh oh!
There was an error while loading. Please reload this page.
docs(plugin-auth): re-measure the version-stamped vendor attestations against the installed 1.7.1 - #10187
Conversation
… against the installed 1.7.1 The `^1.7.1` bump (#3002) moved the better-auth family past the versions 20 comment attestations in `plugin-auth/src` named, turning "verified against X" into claims nobody had checked. Each site below was re-measured against the INSTALLED packages (better-auth 1.7.1, @better-auth/sso 1.7.1, @better-auth/oauth-provider 1.7.1, @better-auth/core 1.7.1) on 2026-08-20 and re-stamped with the version, the date, and the shipped file:line it was read out of, so the next reader can falsify it with one grep instead of trusting it. Not a find-and-replace: 12 further hits are left exactly as they are, because they are deliberately historical (`admin-user-endpoints.ts:70`'s rc.2/stable `accountId` contrast, the `auth-schema-config.ts` rename narratives) or are already-corrected #10072 sites naming the stamp they superseded. Two sites needed more than a new number: - `objectql-adapter.ts` called the dependency a **prerelease**. 1.7.1 is stable, so that half of the reason is deleted rather than re-stamped; the half that still carries the argument (a vendor `dist` internal, invisible to any published type, not covering the raw-adapter path) is kept and re-anchored at the corrected lines `:127,146,602,615`. - `auth-manager.ts` cited `@better-auth/core/src/types/init-options.ts:946-971` — a `src/` path the package does not publish, so no reader could check it. Re-pointed at the shipped `dist/types/init-options.d.mts:835-857`. `auth-schema-config.ts`'s `ssoProvider` mapping carried a field-surface claim about `@better-auth/sso@1.6.20` that had never been measured. Measured now by resolving the model the way the adapter does over `getAuthTables({ plugins: [sso()] })`: all 7 declared fields (8 with `domainVerification`) resolve to columns `sys_sso_provider` declares. Recorded with the gap that makes it worth re-checking — this mapping has no parity gate, because `better-auth-schema-parity.test.ts` deliberately passes no `sso` plugin. Comment-only: no assertion, pin or gate input is touched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PnJHU45vPJj5UQrxe946Bx
📓 Docs Drift CheckThis PR changes 1 package(s): 2 hand-written doc(s) NAME something this change touched and may need an implementation-accuracy re-verification:
What this run could not see
Coarse fallback — 11 page(s) merely mention a changed package (the pre-#9192 predicate, kept for the deliberately-wide backstop): Which tree this was computed onThis run read A worktree cut from an older # while this PR is open — GitHub drops the merge commit once it closes
git fetch origin 0fcc61ae912ef8805642e9ae1837eb17969b5b47 && git checkout 0fcc61ae912ef8805642e9ae1837eb17969b5b47
# afterwards, rebuild it from the two parents, which stay fetchable
git fetch origin da891e0efd620f83c6b2499537029e9d2e5ebf66 f1517dca26a1f8b0c0d9d8b3689b9e1a58040b14 && git checkout -B drift-repro da891e0efd620f83c6b2499537029e9d2e5ebf66 && git merge --no-ff f1517dca26a1f8b0c0d9d8b3689b9e1a58040b14
node scripts/docs-audit/affected-docs.mjs --json da891e0efd620f83c6b2499537029e9d2e5ebf66
|
Uh oh!
There was an error while loading. Please reload this page.
Fixes#10073
The
^1.7.1bump moved the better-auth family past the versions these comments named, turning "verified against X" into claims nobody had checked. Every site below was re-measured against the installed packages and re-stamped with the version, the date, and the shippedfile:lineit was read out of — so the next reader can falsify it with one grep instead of trusting it.Installed versions (read from
node_modules, never from the range)better-auth1.7.1^1.7.1resolves to@better-auth/sso1.7.1dist/version-*.mjsself-reportsPACKAGE_VERSION = "1.7.1"@better-auth/oauth-provider1.7.1@better-auth/core1.7.1@better-auth/scim1.7.0-rc.11.7.0-rc.1are currentMeasured 2026-08-20. Every class-(a) claim's substance still holds at 1.7.1; none was found false. Details per site below.
This is not a find-and-replace — 32 hits, three dispositions
The raw scan finds 32 lines (not 29 — reconciled at the bottom). They are not interchangeable:
Re-stamped — 20 sites. Live claims about the current pin, each re-measured:
session-tombstone.ts:34endPreservedSessionsatdist/db/internal-adapter.mjs:41, stilldeleteManyWithHooks(..., { fn, executeMainFn: false })gated onsecondaryStoragesession-tombstone.ts(hooks bullet)dist/db/with-hooks.mjs:132— adelete.beforereturningfalsedoesreturn nullahead of thedelete.afterloop at:140session-tombstone.ts:83setIntervalonly in two client-side dist files); sole expiry GC atdist/api/routes/session.mjs:146-157session-tombstone.test.ts:296sso-client-secret.ts:24SSOOptionstop-level members enumerated — none concerns secret storagesso-client-secret-at-rest.test.ts:25oidcMappingSchemaatdist/index.mjs:1852,z.strictObject, noidremove-member-permission-guard.ts:10+.test.ts:8crud-members.mjs— (3a):196, (3b):197-200,hasPermission:202-207, still ordered afterregister-sso-provider.ts:130oidcMappingSchemastrict,email/namerequired, noidregister-sso-provider.test.ts:50impersonation-bearer-rotation.ts:11dist/plugins/bearer/index.mjs:46member-role-canonical.ts:14+.test.ts:25role.split(",")branches at:193,:288,:420managed-extension-fields.test.ts:186+:918./plugins/api-keysubpath;apiKey === undefined(counter-checked:bearer/adminare functions in the same import)auth-manager.ts:1084changeEmaildeclares exactly 3 memberschange-email-delete-user-wiring.test.ts:507update-user.mjsbranch:496, returns:505auth-manager.ts:3606deleteUser:233-247, three calls, zerotransactionoccurrencesadopt-membership.ts:40crud-invites.mjs—createMemberunconditional:324, rollback:332-339objectql-adapter.ts:243auth-schema-config.ts:917Left exactly as written — 7 sites, deliberately historical. Rewriting them destroys information:
admin-user-endpoints.ts:70(the rc.2/stableaccountIdcontrast) ·auth-schema-config.ts:107and:472(rename narratives) ·register-sso-provider.ts:138and:140(when theidmember was retired) ·objectql-adapter.test.ts:92·revoke-session-match-guard.ts:11.That last one is worth flagging: the card listed it under category (a), but it has already been re-stamped to 1.7.1 by the
#9714/#10069work that landed on this surface since the card was filed. Its1.7.0-rc.2mention is now historical provenance inside a current attestation. Cutting from the post-19f98fa1ftree is what made that visible.Already corrected by #10072 — 5 sites, which name the stamp they superseded (that naming is what makes the correction auditable):
better-auth-schema-parity.test.ts:51·auth-schema-config.ts:970·auth-manager.ts:2792and:2795·objectql-adapter.test.ts:309.Two sites needed more than a new number
objectql-adapter.tscalled the dependency a prerelease.1.7.1is a stable release, so that half of the reason is deleted, not re-stamped — re-stamping it would have preserved a now-false premise behind a fresh-looking date. The half that still carries the argument (a vendordistinternal, invisible to any published type, not covering the raw-adapter path) is kept and re-anchored at the corrected lines:127,146,602,615— the old:120,139,594,607were rc.2's.auth-manager.tscited@better-auth/core/src/types/init-options.ts:946-971. Nosrc/is published, so nobody reading it could have checked it. Re-pointed at the shippeddist/types/init-options.d.mts:835-857.The field-surface claim (
auth-schema-config.ts:917) — measured, not re-stampedIt said only "Mirrors
@better-auth/sso@1.6.20'sBaseSSOProvider" — a claim about a version two minors behind the installed one that had never been checked. Measured by resolving the model the way the adapter does (field.fieldName ?? key) overgetAuthTables({ plugins: [sso()] }):sso()declares 7 fields — exactly the members of the shippedBaseSSOProvider(dist/index-CZytzKv6.d.mts:189-197).sso({ domainVerification: { enabled: true } })adds an 8th,domainVerified.sys_sso_providerdeclares. Nothing orphaned, nothing unmapped.The claim is true at 1.7.1. Recorded along with the gap that makes it worth re-checking: this mapping has no parity gate, because
better-auth-schema-parity.test.tsdeliberately passesgetAuthTables()nossoplugin.Verification
Comment-only: no assertion, pin or gate input is touched — proven by filtering the diff for any added or removed line that is not comment text or blank (none). The one edit inside a string literal (
managed-extension-fields.test.ts'sreason:field) is documentation-only data: nothing asserts its content or length, onlyentry.skip.lengthis length-checked and that is a different field. An ablation therefore does not apply — there is no assertion here that could be made to fail, and staging one would be theatre.Gate union derived at
f1517dca2on a clean worktree vianode scripts/pm/dispatch-gates.mjs(no paths passed), exit codes captured before any pipe, each quoted from the gate's own verdict line:check:nul-bytes—OK (scanned 6066 text file(s) ... no raw ASCII control bytes)check:slot-lookup—ratchet holds: 107 unswept site(s) ... none new·baseline key set verified against 19f98fa: no files addedcheck:test-source-alias—OK — 72 packages with tests scannedcheck:type-source-resolution—OK — 76 packages with a tsconfig.json scannedcheck:query-options-erasure—ratchet holds: 67 unswept non-test site(s) ... none new·no files addedcheck:engine-double-contract—OK — 329 pinned, 133 in the DEBT ledger, 2 exemptcheck:where-matcher—conformance holds: 264 matcher(s) ... none new·no files addedcheck:type-check-coverage—OK — 64/77 workspace packages type-checked ... 13 in the DEBT ledgercheck-affected-docs.mjs— exit 0pnpm --filter @objectstack/plugin-auth test—Test Files 60 passed (60)·Tests 1335 passed (1335)pnpm --filter @objectstack/plugin-auth typecheck—tsc --noEmit, exit 0 (script name echoed, so not a zero-match silent pass)Declared narrowing:
check:type-check-debt --re-measurewas not run locally — it requires the full built workspace closure. It is provably immovable by this diff: it re-measures tsc error counts, comment text is invisible to tsc except through directives, and the diff adds and removes zerots-expect-error/ts-ignore/ts-nochecklines (counter-checked — the same pattern matches real instances inpackages/types/src/response-envelope.test.ts:123). CI runs it regardless.Final sweep, counter-checked. 16
1.7.0-rc.2/1.6.20hits remain; every one is deliberately-historical, an already-corrected #10072 site, or new prose naming the stamp it replaced. Zero live or unmeasured stamps remain. The zero is meaningful because the same grep machinery finds1.7.1in 27 files in the same tree.skip-changeset: this PR releases nothing — comment text only, stripped from every build artifact.Generated by Claude Code