Uh oh!
There was an error while loading. Please reload this page.
remote/oidc: hermetic smoke + LLP follow-ups (T8) - #202
Conversation
- remote_oidc_login smoke: one in-process server plays both the identity surface (/v1/identity/login/start + /token, signing real per-call tokens) and the MCP endpoint (/mcp, accepting only the current JWT). A scripted opener drives the real loopback redirect. Asserts the user-visible result and the remote-oidc smoke_step telemetry across: browser login -> session stored kind: 'oidc' -> query attaches the JWT -> forced expiry drives a silent refresh + persist -> a revoked refresh row drives the re-login message. - Fix surfaced by the smoke: when the stored JWT is already stale, the initial resolveAccessJwt refreshes pre-call and can throw invalid_grant outside the 401-retry try/catch. remote_verb now maps a refresh failure to the re-login guidance on both the initial-resolve and the mid-flight-401 paths (shared mapRefreshError). Added a unit test for the stale-initial-resolve path. - LLP 0033: its credential-store and attach sections now note the kind discriminator and the silent-refresh + 401-retry behavior, pointing at LLP 0046 D4/D5. - Promote LLP 0046/0047/0048 Draft -> Accepted now that the milestones land. All @refs resolve (ref-check clean).
platypii
commented
Jun 29, 2026
Review (independent agent review)Verdict: approve-with-nits. Correct and well-tested final chunk. Both server roles are modeled faithfully (identity Note: after the stack reorg, the Findings
Addressed in this PR
Smoke green, typecheck + lint clean. |
Review follow-ups (PR #202): - hoist the inline import('node:http').IncomingMessage type to the top-level @import block (repo hard rule: no inline import() types). - drop runQuery's unused cmd param. - move obs.shutdown() into the finally and force-close keep-alive sockets (closeAllConnections) so the server does not wait on idle timeouts.
Chunk 6 (final) of the OIDC client login (LLP 0046-0048), milestone 4. Stacked on #201 (base
chunk5-attach-refresh); review/merge after #197-#201.What
remote_oidc_loginsmoke: one in-process server plays both the identity surface (/v1/identity/login/start+/token, signing real per-call tokens) and the MCP endpoint (/mcp). A scripted opener drives the real loopback redirect. Asserts the user-visible result and theremote-oidcsmoke_steptelemetry across: browser login -> session storedkind: 'oidc'-> query attaches the JWT -> forced expiry -> silent refresh + persist -> revoked refresh -> re-login message.resolveAccessJwtrefreshes pre-call and could throwinvalid_grantoutside the 401-retry try/catch.remote_verbnow maps a refresh failure to re-login guidance on both the initial-resolve and mid-flight-401 paths (sharedmapRefreshError); added a unit test.kinddiscriminator + silent-refresh/401-retry (-> LLP 0046 D4/D5). LLP 0046/0047/0048 promoted Draft -> Accepted. All@refs resolve (ref-check clean).Verification
npm testgreen (1528 pass),npm run smoke -- remote_oidc_logingreen,npm run lintclean, typecheck clean.🤖 Generated with Claude Code