Commit aead168
ci(validate-deps): replace retired pnpm audit with OSV-Scanner (#2986)
* ci(validate-deps): replace retired pnpm audit with OSV-Scanner
npm retired the audit endpoint (HTTP 410, "This endpoint is being
retired. Use the bulk advisory endpoint instead.") on 2026-07-13, and
pnpm has not migrated to the bulk advisory endpoint. As a result
`pnpm audit --audit-level=high` fails unconditionally on every branch and
PR, turning the Validate Package Dependencies check permanently red
(issue #2974).
Replace the step with google/osv-scanner-action (pinned by commit SHA),
which reads pnpm-lock.yaml directly against the OSV database and exits
non-zero when any advisory matches — restoring a working blocking
security gate without depending on the retired npm endpoint.
Also update the release hardening checklist in docs/HARDENING.md to use
osv-scanner, since `pnpm audit` no longer works locally either.
Note: OSV-Scanner gates on any severity rather than only high/critical.
Specific advisories can be accepted via an osv-scanner.toml
[[IgnoredVulns]] entry instead of lowering the gate.
Fixes #2974
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015JoYhorCUhGc8bgFYsErfE
* ci(validate-deps): trigger workflow on changes to its own file
So edits to the dependency-validation gates are exercised on the PR that
introduces them, rather than only when a dependency manifest changes.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015JoYhorCUhGc8bgFYsErfE
* fix(deps): remediate 9 OSV advisories surfaced by the new audit gate
The OSV-Scanner gate (replacing the retired `pnpm audit`) blocks on any
severity and surfaced 9 pre-existing advisories in pnpm-lock.yaml across
6 packages. Pin each to its patched line, following the existing
pnpm-workspace.yaml `overrides` convention:
- uuid 8.3.2 -> ^11.1.1 GHSA-w5hq-g745-h8pq (high)
- @better-auth/oauth-provider 1.6.23 -> 1.7.0-rc.1 GHSA-p2fr-6hmx-4528
- postcss 8.4.31 -> ^8.5.10 GHSA-qx2v-qp2m-jg93
- cookie 0.6.0 -> 0.7.0 GHSA-pxg6-pf52-xh8x
- svelte 5.55.3 -> ^5.55.7 GHSA-9rmh-mm8f-r9h6 + 3 more
- @tootallnate/once 1.1.2 -> 2.0.1 GHSA-vpq2-c234-7xj6 (low)
@better-auth/oauth-provider mirrors the existing @better-auth/scim
pre-release pin (same monorepo, same advisory class). uuid pins to the
conservative ^11.1.1 LTS line rather than the latest major.
svelte is an optional peer-of-a-peer (better-auth > @sveltejs/kit) that
`overrides` alone cannot re-resolve, so it is additionally pinned via a
`svelte` devDependency in the root (private) package.json so the peer
dedupes onto the patched 5.56.x line; both are documented in
pnpm-workspace.yaml.
Verified: no vulnerable version remains in the lockfile and
`pnpm install --frozen-lockfile` is in sync.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015JoYhorCUhGc8bgFYsErfE
* fix(auth): align better-auth family on 1.7.0-rc.1 + new adapter methods
The @better-auth/oauth-provider fix (GHSA-p2fr-6hmx-4528) only ships in the
1.7 line, whose plugins import CLIENT_ASSERTION_TYPE and other symbols that
exist only in @better-auth/core 1.7.x. Pinning oauth-provider to 1.7.0-rc.1
while core/better-auth stayed on 1.6.23 made sign-in 500 at runtime
("@better-auth/core/oauth2 does not provide an export named
CLIENT_ASSERTION_TYPE"), failing the dogfood regression gate.
Pin the ENTIRE better-auth family (better-auth, @better-auth/core, and all
@better-auth/* plugins/adapters) to 1.7.0-rc.1 via pnpm-workspace overrides so
the stack is internally consistent.
better-auth 1.7 also adds two methods to its CustomAdapter contract, now
implemented in the ObjectQL adapter as find-then-write mirrors of the existing
delete/update methods (ObjectQL has no native atomic primitive):
- consumeOne: atomic single-row consume (used for verification tokens on the
sign-in path)
- incrementOne: guarded field = field + delta counter mutation
Verified locally: plugin-auth builds (dts included) and all 440 unit tests
pass; frozen-lockfile is in sync; only plugin-auth consumes better-auth.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015JoYhorCUhGc8bgFYsErfE
* fix(auth): add sys_jwks alg/crv columns for better-auth 1.7 JWKS
better-auth 1.7 extends its `jwks` model with two new optional columns — `alg`
(signing algorithm, e.g. EdDSA) and `crv` (curve, e.g. Ed25519) — and writes
them when minting signing keys. The `sys_jwks` platform object lacked both, so
every JWKS insert failed at the driver ("table sys_jwks has no column named
alg"), 500ing token signing. Sign-in itself succeeded, but session validation
(which touches the JWKS/JWT path) then failed, so every authenticated request
returned 401 — surfacing as the dogfood regression gate's "expected 201/403,
got 401" failures.
Add the two optional `alg`/`crv` text fields to sys_jwks. Legacy rows minted
before 1.7 leave them null; better-auth falls back to the configured
keyPairConfig.alg (default EdDSA).
Verified locally: the full @objectstack/dogfood suite passes (256 tests, 0
failures) with the better-auth family on 1.7.0-rc.1.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_015JoYhorCUhGc8bgFYsErfE
---------
Co-authored-by: Claude <noreply@anthropic.com>1 parent 464418e commit aead168
8 files changed
Lines changed: 291 additions & 158 deletions
File tree
- .changeset
- .github/workflows
- docs
- packages
- platform-objects/src/identity
- plugins/plugin-auth/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
8 | 8 | | |
9 | 9 | | |
10 | 10 | | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
11 | 14 | | |
12 | 15 | | |
13 | 16 | | |
| |||
56 | 59 | | |
57 | 60 | | |
58 | 61 | | |
59 | | - | |
60 | | - | |
61 | | - | |
62 | | - | |
63 | | - | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
64 | 80 | | |
65 | 81 | | |
66 | 82 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
223 | 223 | | |
224 | 224 | | |
225 | 225 | | |
226 | | - | |
| 226 | + | |
| 227 | + | |
227 | 228 | | |
228 | 229 | | |
229 | 230 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
46 | 46 | | |
47 | 47 | | |
48 | 48 | | |
| 49 | + | |
49 | 50 | | |
50 | 51 | | |
51 | 52 | | |
| |||
Lines changed: 17 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
59 | 59 | | |
60 | 60 | | |
61 | 61 | | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
62 | 79 | | |
63 | 80 | | |
64 | 81 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
334 | 334 | | |
335 | 335 | | |
336 | 336 | | |
| 337 | + | |
| 338 | + | |
| 339 | + | |
| 340 | + | |
| 341 | + | |
| 342 | + | |
| 343 | + | |
| 344 | + | |
| 345 | + | |
| 346 | + | |
| 347 | + | |
| 348 | + | |
| 349 | + | |
| 350 | + | |
| 351 | + | |
| 352 | + | |
| 353 | + | |
| 354 | + | |
| 355 | + | |
| 356 | + | |
| 357 | + | |
| 358 | + | |
| 359 | + | |
| 360 | + | |
| 361 | + | |
| 362 | + | |
| 363 | + | |
| 364 | + | |
| 365 | + | |
| 366 | + | |
| 367 | + | |
| 368 | + | |
| 369 | + | |
| 370 | + | |
| 371 | + | |
| 372 | + | |
| 373 | + | |
| 374 | + | |
| 375 | + | |
| 376 | + | |
| 377 | + | |
| 378 | + | |
| 379 | + | |
| 380 | + | |
| 381 | + | |
| 382 | + | |
| 383 | + | |
| 384 | + | |
| 385 | + | |
337 | 386 | | |
338 | 387 | | |
339 | 388 | | |
| |||
0 commit comments