Skip to content

Release external ACP attachments on retention demand and resume saved chats - #2068

Merged
Brian Krabach (bkrabach) merged 1 commit into
mainfrom
feat/acp-idle-cleanup-20261114
Nov 14, 2026
Merged

Brian Krabach (bkrabach) merged 1 commit into
mainfrom
feat/acp-idle-cleanup-20261114

Conversation

@bkrabach

@bkrabach Brian Krabach (bkrabach) commented Nov 14, 2026 •

Copy link
Copy Markdown
Collaborator

Behavior

External chats can release an idle ACP connection when its supported owner requests cleanup under the existing retention policy and confirms native retirement. Ordinary completed turns keep the connection warm. The next real message resumes the exact saved session, endpoint and workspace without replaying earlier input or creating a replacement chat.

A retirement fence reserves only that participant while its connection closes. New public room messages remain accepted and unrelated participants continue. In-flight awareness, approvals and accepted work prevent cleanup. Stop preserves its existing meaning, including while a new unsent input waits for cleanup. Busy, malformed, lost or timed-out retirement responses retain the transport; one bounded request deadline does not add a retry loop. Legacy retirementAvailable or non-resumable peers remain attached. Room context capabilities keep their existing lifetime.

The producer #2062 is accepted on main as 2d7a70a; it owns canonical warm-worker policy and native acknowledgement. This PR now targets main and contains only the eight reviewed consumer paths. Confirmed retirement trades idle resources for worker startup on the next message; it is not a per-turn cold-start policy or a new upstream-standard ACP guarantee.

Validation

Owned-DTU current-policy qualification has 17 distinct passing maintained cases across staged execution: 15 initial consumer passes, one affected awareness case passing after fixture ordering corrections, and one actual published Instance 0.22.4 lifecycle check. That real wrapper check uses fresh synthetic state and normal private-CA verification, carries the Requested notification outside a prompt, retires, closes the first client, reconnects and resumes the exact saved ID, and retires again. Zero prompts, model calls or native workers were used for this wrapper check; native retirement policy is qualified separately by #2062.

Initial awareness ordering and fixture setup failures are retained, not relabelled as passing. The prior broader consumer safety campaign (40 initial passes, one corrected legacy ordering case) remains frozen as earlier evidence. The consumer was replayed onto exact accepted main2d7a70abf without conflict; all eight consumer blobs are identical to independently reviewed33987efd and prior pushed381e9ad1. No unchanged campaign was repeated. No active demo, live account, Core, release adoption or existing saved conversation was changed.

@bkrabach
Brian Krabach (bkrabach) force-pushed the feat/acp-idle-cleanup-20261114 branch from 381e9ad to 229058d Compare November 14, 2026 17:23
@bkrabach
Brian Krabach (bkrabach) changed the base branch from feat/acp-conditional-retirement-20261114 to main November 14, 2026 17:23
@bkrabach
Brian Krabach (bkrabach) merged commit ba6ed28 into main Nov 14, 2026
16 checks passed
@bkrabach
Brian Krabach (bkrabach) deleted the feat/acp-idle-cleanup-20261114 branch November 14, 2026 17:31
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