-
Notifications
You must be signed in to change notification settings - Fork 0
feat(proxy): credential pool auto-failover + approval-prompt coalescing #43
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
nnemirovsky
merged 51 commits into
main
from
feat/credential-pool-and-approval-coalescing
May 16, 2026
Merged
Changes from all commits
Commits
Show all changes
51 commits
Select commit
Hold shift + click to select a range
9a687c2
feat(channel): coalesce duplicate approval prompts by dest:port
nnemirovsky e7bde0e
wip(proxy): checkpoint persist-once + store work before respawn
nnemirovsky b76a0f3
test(proxy): assert concurrent same-target asks coalesce to one prompt
nnemirovsky 4d3b326
feat(store): add credential pool + health schema and store API
nnemirovsky 5fb5657
feat(vault): add PoolResolver pool->active-member chokepoint
nnemirovsky a1a93e3
feat(cli): add pool subcommands and credential/pool namespace guards
nnemirovsky 800d36f
feat(proxy): wire PoolResolver into server, addon and reloadAll
nnemirovsky b68cd7c
feat(mcp): opt MCP tool calls out of approval coalescing
nnemirovsky 185a382
wip(telegram): checkpoint final-count edit before respawn
nnemirovsky 2556b0f
merge: approval-coalescing work
nnemirovsky 4ccea7b
merge: credential-pool-failover work
nnemirovsky a3602d6
fix(telegram): use coalesced-count label in resolve edit body
nnemirovsky d2f5360
docs(plans): convert tasks/phases to exec checkboxes; mark completed …
nnemirovsky 0b0554b
feat(channel): re-confirm broker coalescing tests green
nnemirovsky 8948f2b
feat(store): idempotent approval-rule persist
nnemirovsky 8e265fd
test(proxy): confirm full suite green after coalescing merge
nnemirovsky 2d945de
feat(telegram): render coalesced count on resolve and cancel edits
nnemirovsky 5aff5ff
docs(plans): complete approval-coalescing; move to completed
nnemirovsky ef05ee9
test(store): confirm credential-pool Phase 0 green post-merge
nnemirovsky 864420c
feat(proxy): pool phantom indirection + R1 attribution + R3 stable JWT
nnemirovsky 1187d7a
feat(proxy): auto-failover on 429/401 for credential pools
nnemirovsky 54a64bd
docs(plans): complete credential-pool-failover; move to completed
nnemirovsky 3a4104d
fix(proxy): address comprehensive review findings
nnemirovsky 8823362
fix(proxy): correct token-endpoint failover member attribution + hard…
nnemirovsky 22de0ce
style: satisfy golangci-lint (errorlint, QF1002, unparam)
nnemirovsky fe64664
test(e2e): pool failover + approval coalescing end-to-end
nnemirovsky 62d4704
fix(proxy): address Copilot review (per-request failover attribution,…
nnemirovsky 52689ff
fix: address Copilot re-review (failover callback registration, cred-…
nnemirovsky 0176068
fix(proxy): split-host pool OAuth refresh attribution + protocol-awar…
nnemirovsky 914bc09
fix(proxy): classify token-endpoint 403 invalid_grant as auth-failure…
nnemirovsky a6b24e8
fix(vault): monotonic cooldown (in-memory + durable); doc pool phanto…
nnemirovsky b4218a6
fix(proxy): fail-closed unattributed pooled refresh; broker resolve/d…
nnemirovsky a560bfd
fix(cli): reject pool removal while bindings still reference the pool
nnemirovsky 661e51e
fix(store): enforce namespace + pool-member + health-row invariants a…
nnemirovsky dcaa6f3
fix(proxy): pool-namespace covered-set; shared-health prune for non-m…
nnemirovsky 509ca44
fix(store): guard CAS credential-rollback for pool members + health c…
nnemirovsky fcb2fbf
fix(store): RemovePool health cleanup; reject live-pool-member meta d…
nnemirovsky 9ac52f1
fix(proxy): API-host failover requires per-flow pool-usage evidence (…
nnemirovsky b2daf4a
fix(cred): validate vault before store removal; cap coalesced subscri…
nnemirovsky c9bacaf
fix(store): failover health write no-ops for non-pool-member (atomic;…
nnemirovsky e2a2696
fix: guard pool-rotate health write; atomic REST cred removal; gate M…
nnemirovsky a0a5322
fix(proxy): free flow tag after Response; tag token-host flow only on…
nnemirovsky ae45808
fix: RemoveCredentialFully cleans health on partial-cleanup finish; e…
nnemirovsky cf11d86
fix: pool+epoch-scoped health guards; CancelAll lost-wakeup; pooled-J…
nnemirovsky d893823
fix(proxy): plain-cred refresh attribution on shared token URL; pool-…
nnemirovsky 19a55f3
fix: R3-stable QUIC pool phantom; pool+epoch in refresh attribution; …
nnemirovsky 04a83a6
fix(store): binding creation requires live credential or pool; CLAUDE…
nnemirovsky 1c47635
test(telegram): deterministically sync cancel-edit assertion (deflake…
nnemirovsky 0db59db
fix: Telegram cred_meta on all adds; QUIC R3 comments; typed 409-vs-5…
nnemirovsky fb64ef2
fix(telegram): roll back vault secret if cred-add metadata/binding fa…
nnemirovsky 573b931
fix(telegram): roll back credential_meta (CAS) as well as vault on en…
nnemirovsky File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.