Skip to content

release: promote the current auth-compatibility work to main - #21

Open
y1o1 wants to merge 4 commits into
mainfrom
develop
Open

y1o1 wants to merge 4 commits into
mainfrom
develop

Conversation

@y1o1

@y1o1 y1o1 commented Sep 6, 2026

Copy link
Copy Markdown
Contributor

Release merge from develop, per the branch model branch-guard enforces (main only receives develop, hotfix/* or release/*).

What this promotes

a772a09 — prepare Provin compositions for current auth APIs. The o3co auth packages moved on while these compositions stayed pinned to @o3co/auth.policy-verifier.{core,builtins} ^0.3.1. Two documented breaking changes stood between:

  • CollectorContext.payload: VerifierPayloadsubject: SubjectAttributes (verifier #170)
  • requestContext sealed behind readUntrustedRequestContext(), so a collector has to name the trust level at the point of use

packages/policy-verifier-dplaax-module/src/collectors/context.mts absorbs both behind subjectClaims() / untrustedRequestFields(), which keeps the released 0.3.x transports loadable while preferring the current core's trust-boundary accessor whenever it is present. The provider side needed no source changes — only the config surface the newer schema requires (readinessTimeoutMs, logging, audit.sink, oauth.revocation.*, and a DID-only composition declaring revocation.{subject,accessToken} = "unsupported", which is a first-class value rather than a workaround).

f12fb8f — refresh vulnerable transitive dependencies.

Verification

Both commits landed on develop through their own reviewed PRs (#20 and its follow-up) with CI green. develop is currently pinned as PROVIN_REV in the o3co/auth umbrella's make test-provin, which builds these packages against candidate auth revisions.

🤖 Generated with Claude Code

y1o1 and others added 3 commits September 6, 2026 10:29
…/auth.utils

Both generators emitted @o3co/auth.utils and had their templates import
createLogger / gracefulShutdown from it. That package treats pino as an
optional peer and falls back to console, and the generator never emitted
pino — so every generated instance has been logging bare `[name] …` console
lines rather than NDJSON. Its gracefulShutdown also had no drain deadline
(one stuck request meant SIGTERM never completed and SIGKILL cut the process
mid-flight) and always exited zero.

Each scaffold now carries src/logger.mts (pino, direct exact-pinned
dependency; honours logging.level with LOG_LEVEL fallback; serialises `err`)
and src/shutdown.mts (the contract auth.provider #290, auth.proxy #81 and
auth.policy-verifier #210 adopted: bounded drain and cleanup, non-zero exit
on a truncated drain, deferred exit so the last lines flush, `reason` naming
what set the exit code). Both ship with tests that run under the instance's
own `pnpm run test`. shutdown declares a structural Logger so the template
does not depend on which upstream version the generator pins.

The provider template reads logging.level defensively: the HOCON carries it
but DplaaxAppConfig does not declare it, which the scaffold typecheck against
the pinned module caught.

Generator suites 97 / 110 (four new cases: no auth.utils emitted, pino
emitted at a literal exact pin). Generated instances against the pinned
develop module ref: typecheck clean, 18 / 26 tests. This was auth.utils'
last consumer across the auth family.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…e 0.3.x compat shim

Every workspace package now requires @o3co/auth.policy-verifier.{core,
builtins,server} ^0.8.1 and @o3co/auth-provider-{core,oauth} ^0.12.0 — the
versions published on 2026-09-06 — and the generators emit the same as exact
pins in DEFAULT_DEP_VERSIONS (0.8.1 / 0.12.0). Both generators move to 0.2.0
per create-app.md § 3.3 (defaults refresh in lockstep with a MINOR bump).
The lockfile no longer resolves 0.3.1 or 0.5.3 anywhere.

With the pin at the released API, the dual paths that kept 0.3.x loadable
are gone:

- policy-verifier-dplaax-module/collectors/context.mts (subjectClaims /
  untrustedRequestFields, reaching readUntrustedRequestContext by
  reflection) is deleted; the collectors read context.subject and call
  readUntrustedRequestContext directly. Its three-case test goes with it;
  the six collector/rule tests build CollectorContext in the current shape
  (subject, marked requestContext, required signal). 50 cases remain: the
  53 on develop minus exactly the 3 in the deleted file.
- The policy-verifier template and the integration test import
  builtinKeyResolversModule instead of probing the server namespace for it,
  and the template reads config.logging.level directly. The integration
  test's `it.skipIf(!Reflect.has(server, "JWT_MODE_MIGRATION_MESSAGE"))`
  guard is dropped — the export exists at 0.8.1 — so its two rows now run
  (15 passed, up from 13).

The code had already crossed the intervening upstream BREAKING changes:
o3co/auth's provin-compatibility job builds this workspace against those
exact revisions. What changes here is that the released-0.3.x branch of
each dual path no longer exists to drift.

@o3co/ts.hocon stays at 0.1.5: its 0.1 → 1.x move is a separate migration.

Workspace gates: 550 tests across 7 workspaces, typecheck, lint, build.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant