Repository navigation
feat(oauth): pin generic pool conversations to request-local accounts - #7150
Conversation
Keep automatic affinity-mode choices request-local while preserving the operator selection revision and credential generation fences. Rebind admitted recovery accounts, retain configured new-session strategies, and bound process-local ownership by home, provider and caller. Refs #3375.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true
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 |
|
✅ Deterministic PR hygiene checks passed. |
…-affinity # Conflicts: # structure/INDEX.md
…-affinity # Conflicts: # structure/INDEX.md
# Conflicts: # docs-site/src/content/docs/reference/configuration/providers.md # structure/INDEX.md
|
Maintainer integration into
|
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
Summary
providers.<name>.oauthAccountFailover.sessionAffinity: "conversation"(requires proactiveenabled: true; default remains"none"). Interleaved conversations keep their admitted OAuth account, bearer and account-specific routing metadata; existing bounded 429/classified-403 recovery rebinds the replacement for later turns.Current-dev audit at
7640a942b35044c974e534b84d5a8049f4a8ae9a: strategy/threshold consumption already landed in #4289 (6d211927e3) and zero-threshold behavior in #5091 (5d0122ab4a); account usage attribution also already exists. This PR implements the remaining generic conversation-affinity slice, not the whole umbrella. Durable aggregate generic-pool health, durable one-shot scheduled warmup and provider/path-specific 403 gaps remain. Auto-pause #7101 is excluded. #5099 is background only; no commits are carried or replaced.Security review: this changes OAuth account routing and requires explicit maintainer security review under
MAINTAINERS.mdbefore integration. Independent static review found and resolved Kiro lease, terminal-refresh, all-cooled and in-flight settings-boundary issues; that is not maintainer security approval.Verification
All runtime checks used temporary
OPENCODEX_HOME/CODEX_HOME; no real accounts or configuration were used. Initial regressions reproduced conversation drift and lost recovery binding; the added Kiro terminal-refresh regression also failed before its fix.The repository-pinned Bun 1.4.3 executable was downloaded into ignored scratch
.tmp/3375/toolchain/bun-darwin-aarch64/bun; no dependency or global toolchain changed. Exact final commands/results:A first layout-tooling run under the host's Bun 1.4.0 failed because this repository requires test-runner Bun 1.4.3. Running the actual pinned version fixed that environment prerequisite; no assertion, skip or runner policy was changed.
The maintainer expressly prohibited heavy/full local suites on this shared host, so
bun run test,bun run prepush, and whole-directory suites were NOT RUN. Broad integration and platform validation are left to exact-head PR CI (fast Ubuntu subset), then manualci.ymldispatch withlane=allafter PR checks succeed. CI results are pending; local checks are not hosted-CI evidence.Checklist