Stack position
This PR is a Draft intermediate layer. It opens safe Coordinator conversation in Idle/Paused, but Task activation remains disabled until PR 3 and explicit @Member remains fail-closed until PR 4.
Problem / Motivation
After a Team becomes Idle, users need to keep asking the Coordinator questions in the same Conversation. The current Root/Group paths are split, Group delivery can auto-resume Paused work, and a member mention may enter a normal Worker work Inbox. Merely enabling the composer would therefore risk duplicate messages, unwanted work Wake, or hidden Task mutation.
Goal
Route Root messages and Group messages without an explicit member target through one durable Coordinator send/Queue/EventStore path in Working, Idle, and Paused. Questions may be answered, but this PR must produce no new work and must not silently redirect explicit member mentions.
Required scope
- Send Idle Root messages and Group messages with no explicit Member target, or explicitly addressed to Coordinator, through the ordinary Root Session path.
- Preserve Paused when the same Root/Group question is sent; remove the old auto-resume behavior.
- Before PR 4 is enabled, reject explicit
@Member in Working/Idle/Paused with one typed member_conversation_not_enabled receipt. Do not route it to Root or the legacy Worker work Inbox.
- Enforce Store/Tool gates that block general Idle Task mutation, work/coordination Inbox writes, TaskExecution Wake, and completion side effects.
- Persist accepted Root turns with backend-derived
agent_org_turn_kind=coordinator; the UI/mention payload cannot manufacture member/work kind.
- Give Root bounded historical Team/Task/Artifact context and the Idle rule: answer questions, but do not activate Tasks in this PR.
- Preserve stable authoritative user-message and Root Turn ownership for PR 3 activation receipts.
- Keep Run View a bounded projection; do not introduce Proposal, Work Request, classifier, hidden
begin_work, or a frontend activation command.
Locked invariants
- One user action creates at most one authoritative message and one Root Turn.
- Explicit
@Member never falls back to Coordinator and never enters a work Inbox.
- Paused conversation stays Paused; Archived rejects sends and mutations.
- Idle Root conversation cannot create/update Tasks, write work Inbox, Wake Workers, or run completion tools.
- Routing and Turn kind come from canonical backend identity, not model judgment or frontend flags.
- Ordinary SDE send/Queue/Stop/Resume/Compaction paths remain unchanged.
Acceptance criteria
Verification
- Production-path Root ordinary-turn integration for Working/Idle/Paused.
- Rust Store/Tool gate tests, typed error tests, duplicate-message/idempotency tests, and Archived rejection tests.
- Frontend single-send-path and canonical mention parser tests.
- TypeScript typecheck and focused Vitest.
- Negative tests proving zero Worker Inbox/Wake/Provider/Task side effects.
- Architecture review of message ownership, Turn kind, Store gates, and wire mapping.
- Performance guard for bounded context/projection and listener/polling isolation.
Out of scope
- Coordinator Task creation or
Idle → Working activation (PR 3).
- Direct Member conversation or Group
@Member answers (PR 4).
- Proposal, confirmation, hidden activation commands, or a separate classification model call.
- Complete UI/locales/E2E/performance sign-off (PR 5).
- Releasing PR 2 alone as the complete long-lived Team experience.
Effort and budget
- Labels: Effort: Medium, UX
- P50 range: 1,200–1,800 review lines; planning point: 1,400
- P90 cap: 2,400 review lines
- Expected substantive files: 11–16
- At 70% of P50, review the diff and risks. Above 1.25× P50, explain new entry points/test surface; at 1.5×, stop and re-spike before expanding scope.
Stack position
docs/architecture/agent-org-long-lived-team-session-design.md, especially sections 8, 12–15, 17–18, 24, and 25.4This PR is a Draft intermediate layer. It opens safe Coordinator conversation in Idle/Paused, but Task activation remains disabled until PR 3 and explicit
@Memberremains fail-closed until PR 4.Problem / Motivation
After a Team becomes Idle, users need to keep asking the Coordinator questions in the same Conversation. The current Root/Group paths are split, Group delivery can auto-resume Paused work, and a member mention may enter a normal Worker work Inbox. Merely enabling the composer would therefore risk duplicate messages, unwanted work Wake, or hidden Task mutation.
Goal
Route Root messages and Group messages without an explicit member target through one durable Coordinator send/Queue/EventStore path in Working, Idle, and Paused. Questions may be answered, but this PR must produce no new work and must not silently redirect explicit member mentions.
Required scope
@Memberin Working/Idle/Paused with one typedmember_conversation_not_enabledreceipt. Do not route it to Root or the legacy Worker work Inbox.agent_org_turn_kind=coordinator; the UI/mention payload cannot manufacture member/work kind.begin_work, or a frontend activation command.Locked invariants
@Membernever falls back to Coordinator and never enters a work Inbox.Acceptance criteria
@Memberall return the same typed unavailable receipt before PR 4.Verification
Out of scope
Idle → Workingactivation (PR 3).@Memberanswers (PR 4).Effort and budget