docs: make CipherBox the identity-token issuer in the blueprint - #1255
Merged
Conversation
A login has two authentications and the blueprint conflated them: unlocking the Core Kit, and authenticating the derived key to the API. The second was decided by #28 D5. The first was not, and v2 built it as Web3Auth hosted OAuth in the client wiring. Records CipherBox as the issuer, passwordless email as the API's own, and the wallet method as a first-class first login on web. It is absent on desktop because that webview reaches no wallet. States the sharing boundary at credential collection rather than at the bearer token, and names the one login step that is genuinely native on desktop: Google collection cannot run in the webview, so the callback is served from a loopback listener. The account model is untouched — the Core Kit yields the same key whichever provider vouched. Entire-Checkpoint: c84ee372d3ce
|
Caution Review failedThe pull request is closed. ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (3)
WalkthroughThe blueprints document CipherBox-issued identity JWTs, JWKS verification, shared login orchestration, web wallet authentication, and desktop-specific Google OAuth handling. ChangesAuthentication architecture
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related issues
Possibly related PRs
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
This was referenced Aug 11, 2026
blueprint/core.md and blueprint/engine.md already cite ADRs as links to cipher-box-next/decisions. These cited it as plain text. Links the first mention in each file, which is where a reader looks for the path. Entire-Checkpoint: 8198883d1ef2
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.
Records ADR 0008 (FSM1/cipher-box-next#64) in the blueprint. Documentation only, no code surface.
Draft until FSM1/cipher-box-next#64 is accepted — the decision corpus is normative and this repo carries the as-built statement of it, so this should not land ahead of the decision.
What changed and why
The blueprint conflated two authentications:
FSM1/cipher-box-next#28 D5 decided (2), correctly. (1) was never decided, and v2 built it as Web3Auth's hosted OAuth in the client wiring. That is what makes a wallet unable to start a session and leaves passwordless email delegated.
The account model is untouched, and that is the point: the Core Kit yields the same secp256k1 key whichever provider vouched, so
api.md's "Account = the Web3Auth-derived identity key" holds either way.blueprint/api.mdCipherBox becomes the identity-token issuer over its own JWKS. The method set is stated explicitly, with passwordless email as the API's own and wallet as a first-class first login on web only. The "SIWE stays a secondary auth method" clause goes — that is the clause ADR 0008 amends. Adds the note that Google's OAuth client ID is the provider's and is not the Web3Auth project client ID.
blueprint/web-client.mdNames the two authentications as distinct. States the shared-orchestration package and that credential collection is injected per host, with the boundary at credential collection rather than at the bearer token — v1 drew it at the token and its two hosts drifted. States that wallet is a first login here.
blueprint/desktop.mdStates that the shell imports the same login package but not
packages/client, whose worker, leadership and Service Worker machinery has no place there. Records that Google collection is genuinely native: GIS does not run in that webview, and a packaged Tauri origin cannot satisfy theredirect_urithe fallback flow needs, so the callback comes from a loopback listener. States that the wallet method is absent rather than offered and unable to complete.Checks
markdownlint-cli2andprettier --checkboth clean on all three files.Note
Document CipherBox as the identity-token issuer in the authentication blueprint
Macroscope summarized 2de3c3a.
Summary by CodeRabbit