One inbox. Several owners.
Unclaimed · next-turn · stable message id
Wake the parent when owned children finish
Different lifecycle and authority
Different target, source, or sender
Expose the narrow control set.
listBound the view.Exact live child, direct parent, stable IDs, short previews, pagination, and no cold resume.
cancelRace the claim.Cancel-first records a durable splice. Claim-first returns false and never aborts the turn.
replaceMake it atomic.Cancel and insert one parent-owned follow-up in one generation-checked transaction.
reorderPreserve other owners.Reorder only eligible follow-ups; never move or drop runtime notices.
Linearize cancellation.
inbox/splicedoutcome: canceled; no later user message for that id.
The message owns the active turn. Do not call Agent.cancel().
Interrupt is not queue cleanup.
interrupt()cancels current work with keepInbox: truepending FIFO survivesUntil scoped controls exist, keep one unacknowledged correction per child, aggregate related changes, and wait for a report or settlement before sending another order-sensitive follow-up.
Six proof gates.
Primary evidence.
- rc.2 continuable subagent manager
- rc.2 durable Inbox implementation
- rc.2 Agent inbox contract
- Pending follow-up control request #4631
Keep the full subagent contract.
The canonical guide adds current operator workarounds, authority filters, atomic replace semantics, failure routing, and twenty regression gates.
Read and star on GitHub