feat: add canonical identity and scoped auth contracts#14
Open
andrei-hasna wants to merge 5 commits into
Open
Conversation
andrei-hasna
force-pushed
the
feat/bf69dbe6-identity-foundation
branch
from
July 23, 2026 15:04
a6272a7 to
1739cab
Compare
Contributor
Author
|
Implemented the two reconciled P1 fixes on exact prior head
Verification on
No merge, publish, or deploy performed. Fresh independent adversarial review remains with the coordinator before lifecycle completion. |
Contributor
Author
|
GitHub CI run |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
sub,tenant,session,scopes,iat,nbf,exp, andjticlaimsGET /.well-known/jwks.jsonandPOST /v1/auth/verifyidentities auth jwksandidentities auth verify; bearer tokens are read from a protected file descriptor, never argvSecurity boundary
Signing keys remain caller-supplied. Published JWKS contains public key material only. Revocation and session-family lookups use hashes. Verification responses return stable redacted errors without echoing bearer tokens.
Validation
Current head:
1739cab5d2b2f86aa903f878d54e0c4309adf834origin/mainat85aa1f4bun run verify:release— passed: typecheck, 98 tests / 1219 assertions, vendor-kit verification, buildgit diff --check origin/main...HEAD— passedgitleaks protect --staged --redact --verbose --exit-code 1— no leaksgitleaks git --log-opts=origin/main..HEAD --redact --verbose --exit-code 1— 4 commits scanned, no leaksNon-terminal lifecycle boundary
This PR supplies the JWT/JWKS verification and issuance contract needed by Infinity, but the parent identity-lifecycle task is intentionally not terminal. Identities still needs authoritative user/login identifiers and storage, Argon2id password handling, atomic registration/first-admin creation, rotating refresh-token/session families with replay revocation, logout-all, disable/delete/recovery behavior, and the owning persistence migrations.
Those capabilities remain Identities-owned under task
1f8bfadf-6c56-4996-a820-814f553c0a3f. Infinity task76cfbe9e-9d9c-4650-bd5f-d2df37164e79will consume that canonical lifecycle API and must not create a competing identity store.