| 1. Plan. Bind the Run; record Tasks, dependencies, ownership, placement, review/gate Tasks |
Placement reference placement-and-remote.md (#16904, v1.4.199) · one launch-feasibility policy, no silent PTY downgrade (#19431, v1.4.200) · typed refusal codes with data.nextSteps (#18902, v1.4.198) |
Review/gate Tasks exist only as guide advice, so an implementation report can pass for the objective |
| 2. Start. One authoritative attempt; intended agent present; prompt receipt recorded |
Prompt stages, --wait-submit, --retry-request (#16904, v1.4.199) · swallowed Enter reported, never resent (#14962, v1.4.187) · worker-start readiness on an observed turn start, else start_unknown with capability kept (#19423, v1.4.200) · custody row from terminal creation (#19608, v1.4.200) · preamble fenced (#18718, v1.4.198) · large pastes kept (#17718, v1.4.194) · foreground confirmed before downgrade (#18238, v1.4.196) · tui-idle evidence ranked: a name-only title needs quiescence, the agent's own idle report vetoes (#20155, v1.4.203) · launch prompt delivered by the host, not typed by the client (#21155, v1.4.207) · a typed request line ahead of the pasted brief, so Claude follows it (#22582, v1.4.214) · Codex readiness read from the live screen, its startup screen and dialogs waited out (#23475, #23765, v1.4.217; #23745, #23805, v1.4.218) |
Hook-less provider gets ready on write acceptance while the paste sits unsubmitted; Cursor 2/2 on v1.4.199–200 (#14505, #17741); Cursor terminal send bypasses the render gate and the settlement allowlist (#20695) [ready] · a paste stopped before Enter revokes worker authority [ready] · a retry pastes onto the leftovers of the previous prompt (#15976) [ready] · unobserved turn-start receipt says the input was submitted, and the trailing Enter can be lost under load with no retry (#21445) [ready] · --retry-of without --worktree starts the retry in the coordinator's worktree (#21442) [ready] · worker-start reports failed/agent_readiness while setup.state is still running under wait-for-setup (#21512) · under wait-for-setup a Claude worker gets ready or turn_start_unobserved with an empty composer (#22649) · preamble re-injected in full on every dispatch (#20395) · terminal create --command never infers launchAgent (#17291) [ready] · prompt lands in a bare shell when the agent is absent (#17943) [ready] · failed Codex readiness respawns in a loop (#19768) · local RPC drops timeoutMs/signal (#19660) |
| 3. Observe. Bounded fleet read plus durable mailbox events |
worker-list with liveness/attention/nextAction (#16904) · pointers committed before wake, replayed after restart (#16904) · lineage across restart (#19121, v1.4.199) · federated mail under the Run (#19542) and unbound mail under run_unbound (#19696), v1.4.199 · structured-session status in worktree ps (#19217, v1.4.200) · @ groups scoped to the sender's Run (#19783, v1.4.201) · agent activity shown before the workspace is activated (#20398, v1.4.202) · delivery eligibility derived from unread messages, so an older heartbeat batch no longer hides a completion (#19837, v1.4.204) · worker-list newest first, a truncated page warned in the receipt (#21523, v1.4.207) · Dispatch mail and replies follow the lead's current Run (#23325, v1.4.217) |
No heartbeat freshness on the row (#15951) [ready] · dispatch-show answers for another Run (#14898, #15952) [ready] · Run-mailbox mail invisible to inbox --terminal, delivered_at null until ack (#19844) [ready] · task-list --brief carries every completed result in full (#20701) [ready] |
| 4. Decide. Continue, answer, inspect, notify, or wake an idle coordinator |
Human waits on the row (#15261, v1.4.187) · finished_unverified + requiresAction (#16904) · pointer submitted while working (#17470, v1.4.195) · attempted Enter revalidated, not resent (#19911, v1.4.201) · a navigation Escape never retires a turn; only the provider hook does (#20149, v1.4.203) · delivery reads ranked idle evidence, so an idle→idle ready title reaches delivery and a silent pane can settle (#20578, v1.4.205) · an auto-reviewed Codex approval no longer reads as Needs You (#21389, v1.4.207) · worker results reach a structured-chat coordinator (#22631, v1.4.218) |
Routine heartbeats wake the coordinator (#14910, #23890) [D3] · nothing wakes an idle coordinator with ready work (#15185) [D3] · pointer can land in a human draft (#14832, #11242, #18478, #22651) [D3] · pointer plus Enter answers a Claude AskUserQuestion because delivery reads only the title-derived idle, never the hook's waiting state (#21745) [D3] · send to a Dispatch blocked on ask succeeds without answering it, and no receipt points at reply --id (#21443) [ready] · no read-only wedged classification, no bounded nudge (#15273 → #14897) [D4] · Cursor pointer typed, never submitted (#19760) [ready] |
| 5. Review and gate. Process a valid report, run the gate, hold context while a verdict is pending |
worker_done/escalation validated against the exact process Orca started plus a caller-pane fence; the capability token is no longer minted or checked (#23982, #23994, unreleased) · a worker_done retried while the runtime is briefly unreachable (#23984, unreleased) · worker-retain --dispatch (#16904) · Task re-open under stopping refused (#19551, v1.4.199) · guide: outcome_unknown → inspect → worker-stop/worker-abandon |
invalid capability rejects the escalation too (#15222, #13364) [waits release] · capability lost after the worker's context compacts, worker_done and heartbeats rejected (#20565) [waits release] · rejection never names the current Dispatch (#15972) [ready] · a valid worker_done sent during readiness confirmation gets rejected (#19737) |
| 6. Account. Reuse, retain or release with ownership proof; reconcile the DAG; next wave |
Ownership table, worker-release, failed-start receipt names the release command (#16904) · no resume fence, retention only via worker-retain (#19544, v1.4.199) · worker-stop re-issue on a stranded row (#19551) · release without web layout state (#16842, v1.4.192) · mobile takeover fences release (#19337, v1.4.200) · early takeover kept (#19608, v1.4.200) · a stale worker handle found again from the recorded process identity, so stop and release end the process (#23583, v1.4.217) · worker-abandon settles every unsettled worker and records who did it (#23983, unreleased) |
A worker that exits while Orca is closed gets settled by a guess, over SSH by the client's copy of the listing [waits #19665] · worker-stop vs exit callback → dispatch_inactive (#19738) [waits #19665] · federated handle expires while the process lives [waits #19416] · release accepts a contradictory federated receipt (#19276) · child worktrees never removed (#18411) [ready] · hidden-worktree terminals dropped after restart (#15227) [ready] · no coordinator-side force release of a Dispatch that will never settle (#20566) [waits release] · worker-abandon leaves the agent alive and no orchestration verb closes it afterwards (#21441) [ready] |
Goal
A coordinator runs a multi-worker Task DAG (implement → review/gate → fix round) from durable Orca state, without routine heartbeats spending its turns, and every settled worker ends with an explicit owner or cleanup disposition. An idle turn, a process exit and a successful Task are three different facts. Loss of contact is
unverifiable, never a death, and never permission to start a second editor.Scope: Claude, Codex and Cursor workers; local Windows host; folder or git-worktree workspaces.
Reviewed 2026-10-02.
upstream/mainde8bffe240· latest release v1.4.218 (2026-09-30); no v1.4.208 tag; tag v1.4.213 has no published release, its content first shipped in v1.4.214 · merged, in no tag: #23982, #23994, #23983, #23984.The loop
Each gap in Uncovered ends with its state. [ready] has an anchor or a PR, listed under Ready to resolve. [D#] needs that decision. [waits …] needs a merge or a release. No tag means no owner yet.
placement-and-remote.md(#16904, v1.4.199) · one launch-feasibility policy, no silent PTY downgrade (#19431, v1.4.200) · typed refusal codes withdata.nextSteps(#18902, v1.4.198)--wait-submit,--retry-request(#16904, v1.4.199) · swallowed Enter reported, never resent (#14962, v1.4.187) ·worker-startreadiness on an observed turn start, elsestart_unknownwith capability kept (#19423, v1.4.200) · custody row from terminal creation (#19608, v1.4.200) · preamble fenced (#18718, v1.4.198) · large pastes kept (#17718, v1.4.194) · foreground confirmed before downgrade (#18238, v1.4.196) · tui-idle evidence ranked: a name-only title needs quiescence, the agent's own idle report vetoes (#20155, v1.4.203) · launch prompt delivered by the host, not typed by the client (#21155, v1.4.207) · a typed request line ahead of the pasted brief, so Claude follows it (#22582, v1.4.214) · Codex readiness read from the live screen, its startup screen and dialogs waited out (#23475, #23765, v1.4.217; #23745, #23805, v1.4.218)readyon write acceptance while the paste sits unsubmitted; Cursor 2/2 on v1.4.199–200 (#14505, #17741); Cursorterminal sendbypasses the render gate and the settlement allowlist (#20695) [ready] · a paste stopped before Enter revokes worker authority [ready] · a retry pastes onto the leftovers of the previous prompt (#15976) [ready] · unobserved turn-start receipt says the input was submitted, and the trailing Enter can be lost under load with no retry (#21445) [ready] ·--retry-ofwithout--worktreestarts the retry in the coordinator's worktree (#21442) [ready] ·worker-startreportsfailed/agent_readinesswhilesetup.stateis stillrunningunder wait-for-setup (#21512) · under wait-for-setup a Claude worker getsreadyorturn_start_unobservedwith an empty composer (#22649) · preamble re-injected in full on every dispatch (#20395) ·terminal create --commandnever inferslaunchAgent(#17291) [ready] · prompt lands in a bare shell when the agent is absent (#17943) [ready] · failed Codex readiness respawns in a loop (#19768) · local RPC dropstimeoutMs/signal(#19660)worker-listwithliveness/attention/nextAction(#16904) · pointers committed before wake, replayed after restart (#16904) · lineage across restart (#19121, v1.4.199) · federated mail under the Run (#19542) and unbound mail underrun_unbound(#19696), v1.4.199 · structured-session status inworktree ps(#19217, v1.4.200) ·@groups scoped to the sender's Run (#19783, v1.4.201) · agent activity shown before the workspace is activated (#20398, v1.4.202) · delivery eligibility derived from unread messages, so an older heartbeat batch no longer hides a completion (#19837, v1.4.204) ·worker-listnewest first, a truncated page warned in the receipt (#21523, v1.4.207) · Dispatch mail and replies follow the lead's current Run (#23325, v1.4.217)dispatch-showanswers for another Run (#14898, #15952) [ready] · Run-mailbox mail invisible toinbox --terminal,delivered_atnull until ack (#19844) [ready] ·task-list --briefcarries every completed result in full (#20701) [ready]finished_unverified+requiresAction(#16904) · pointer submitted while working (#17470, v1.4.195) · attempted Enter revalidated, not resent (#19911, v1.4.201) · a navigation Escape never retires a turn; only the provider hook does (#20149, v1.4.203) · delivery reads ranked idle evidence, so an idle→idle ready title reaches delivery and a silent pane can settle (#20578, v1.4.205) · an auto-reviewed Codex approval no longer reads asNeeds You(#21389, v1.4.207) · worker results reach a structured-chat coordinator (#22631, v1.4.218)AskUserQuestionbecause delivery reads only the title-derived idle, never the hook's waiting state (#21745) [D3] ·sendto a Dispatch blocked onasksucceeds without answering it, and no receipt points atreply --id(#21443) [ready] · no read-only wedged classification, no bounded nudge (#15273 → #14897) [D4] · Cursor pointer typed, never submitted (#19760) [ready]worker_done/escalation validated against the exact process Orca started plus a caller-pane fence; the capability token is no longer minted or checked (#23982, #23994, unreleased) · aworker_doneretried while the runtime is briefly unreachable (#23984, unreleased) ·worker-retain --dispatch(#16904) · Task re-open understoppingrefused (#19551, v1.4.199) · guide:outcome_unknown→ inspect →worker-stop/worker-abandonworker_doneand heartbeats rejected (#20565) [waits release] · rejection never names the current Dispatch (#15972) [ready] · a validworker_donesent during readiness confirmation gets rejected (#19737)worker-release, failed-start receipt names the release command (#16904) · no resume fence, retention only viaworker-retain(#19544, v1.4.199) ·worker-stopre-issue on a stranded row (#19551) · release without web layout state (#16842, v1.4.192) · mobile takeover fences release (#19337, v1.4.200) · early takeover kept (#19608, v1.4.200) · a stale worker handle found again from the recorded process identity, so stop and release end the process (#23583, v1.4.217) ·worker-abandonsettles every unsettled worker and records who did it (#23983, unreleased)worker-stopvs exit callback →dispatch_inactive(#19738) [waits #19665] · federated handle expires while the process lives [waits #19416] · release accepts a contradictory federated receipt (#19276) · child worktrees never removed (#18411) [ready] · hidden-worktree terminals dropped after restart (#15227) [ready] · no coordinator-side force release of a Dispatch that will never settle (#20566) [waits release] ·worker-abandonleaves the agent alive and no orchestration verb closes it afterwards (#21441) [ready]Ready to resolve
"mine" = Tauri-EPO.
worker-list(mine)task-list --briefcompleted results (mine)dispatch-showterminal sendoutside the render gate (mine)launchAgent(mine)inbox --terminalincludes the Run mailboxcheck --peek/--allcannot drain (docs)--retry-ofwithout placementsendcannot answer a pendingaskworker-releasehint after abandonNeeds a decision
Suggested answers are the map author's.
check; dedupe wakes. Merged so far in that direction: #19783, #19911, #19837 (eligibility from unread messages; a heartbeat still earns a pointer). Fourth channel proposed on this issue on 2026-09-11: deliver the wake through the provider's idle hook (ClaudeStop) instead of typing a pointer, PTY pointer as fallback. Proposed on #14910 on 2026-09-19: close the heartbeat row whererecordHeartbeatpersists it, so no delivery lane types a pointer; not a type gate, since a rejected heartbeat keeps its type and must still surfaceoutcome_unknownfor the boot caseworker_doneDecided
terminal send(#15274, #18523) · per-resource reclaim commands on every receipt (#15949)worker-list(#16904)runmutations (#14891, #14892)worker-retain --dispatch(#16904), resume fence removed (#19544)Waiting on a merge or release
turnStart: unsupported→readybranch of #19423 (#14505)Shipped
tui-idle· #23933 setup-gated Codex launches without the shared server · #22568 / #22631 structured chat as coordinatorworker-listnewest first, truncated page warned · #21389 auto-reviewed Codex approval notNeeds You· #21097 sender-terminal refusal names the right handle · #21155 launch prompt delivered from the host@groups scoped to the Run · #19911 attempted Enter revalidated · #19749 agent-neutral startup-block reasonsworktree psterminal read --screenworker-abandonsettles and records who · #23984worker_doneretried through a short outageDone when
worker_doneand idle-coordinator ready work each surface once;