fix(acp): bound retained worker sessions and recover nested CLI exits - #7507
Open
sincera7 wants to merge 1 commit into
Open
fix(acp): bound retained worker sessions and recover nested CLI exits#7507sincera7 wants to merge 1 commit into
sincera7 wants to merge 1 commit into
Conversation
Signed-off-by: bradmcauley <mcauley.brad@gmail.com>
🔐 Codex Security Review
|
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.
When a nested Codex or Claude CLI exits while its ACP adapter stays alive, Buzz returns the adapter to the idle pool and retries requests against an unrecoverable process/session. Long-lived workers also retain provider sessions and MCP children after session-cache invalidation, allowing memory use to accumulate across channels and rotations.
Recognize the specific nested-process exit errors and use the existing respawn/backoff path, preserving failed batches for retry. Bound retained resources by recycling idle workers after five minutes or four session creations (both configurable, with zero disabling each bound). Recycling runs between turns, off the relay loop, keeps the relay connection and queue, preserves live model/effort choices across failed replacement attempts, and does not count as a crash. Fresh unused workers are not recycled. Replacement sessions reconstruct conversation context from the relay; local provider session caches are intentionally released. The Sprig image also installs the distro bubblewrap package; namespace policy remains an operator setting.
Validation covers nested-process errors retaining queued messages, active-worker exclusion, idle and creation limits, replacement initialization, model preservation, and separation of planned maintenance from crash accounting. Full
buzz-acplibrary suite and a separately tested backport to the deployed560fea7revision; static musl binary startup verified in Alpine.Duplicate issue/PR searches for retained sessions, session-close memory, and Codex process exits found no matching existing work. The originating Lingual operational work acknowledges [[lingual-release-process]]; no Lingual application release is part of this change.