Skip to content

docs(adr): ADR 0001 addendum — Pasqal password to OS keychain (#194) - #197

Merged
kateebonner merged 2 commits into
mainfrom
kate/adr-0001-pasqal-keychain
Jul 22, 2026
Merged

docs(adr): ADR 0001 addendum — Pasqal password to OS keychain (#194)#197
kateebonner merged 2 commits into
mainfrom
kate/adr-0001-pasqal-keychain

Conversation

@kateebonner

Copy link
Copy Markdown
Contributor

Records the evidence-forced amendment to ADR 0001 for the Pasqal Cloud connection. Design context in #194.

Why

Jack's live-API session (pasqal-auth-bundle, 2026-07-21; independently re-probed) proved every no-password path for a Pasqal user account is dead:

  • auth-code/PKCE: no localhost callback on Pasqal's client, and we don't own the tenant
  • device-code grant: disabled on the client
  • refresh tokens: issued but 403'd by the API (gates on the gty claim; identical aud/scope/permissions to a working password token)
  • access tokens live ~24h

So a valid token cannot exist beyond ~24h without the password present somewhere. The ADR's named fallback (session-only re-prompt) means typing the password ~daily; product decision (Kate) is that's unacceptable for the panel, adopting Jack's keychain interim.

What the addendum records

  • For pasqal-cloud only: username+password → OS keychain (@napi-rs/keyring, Jack's mechanism), silent ROPC re-mint on expiry; token stays token-only in pasqal.json. Session-memory fallback where the native binding can't load (never a plaintext file). Disconnect wipes.
  • Revised risk position (same-user-readable keychain, accepted knowingly) and the exit condition: a Pasqal service account (client_credentials) retires the password entirely — request in flight with Baptiste Peyras.
  • Scoped to pasqal-cloud; not precedent for any other connection.

Verification

The workaround this documents is implemented in the opencode fork (harmoniqs/opencode kate/connections-path-scaffold) and verified live against real Pasqal — connect, silent re-mint, reject, and disconnect all exercised on a real machine, with the native keyring proven to survive bun build --compile.

🤖 Generated with Claude Code

kateebonner and others added 2 commits July 21, 2026 19:32
…ce-forced (#194)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ot shell-out

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@kateebonner
kateebonner merged commit a91c2b0 into main Jul 22, 2026
5 checks passed
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