Skip to content

Resumable workers + two-tier steering: task_id to continue a worker's session, queue-vs-trigger message primitives (OpenCode + Codex patterns) #392

Description

@justrach

From the orchestration research: OpenCode returns a task_id from every spawn so the parent can RESUME the same worker with its accumulated context for follow-ups instead of re-briefing a fresh agent; Codex splits steering into send_message (queue only, no turn — cheap nudge) vs followup_task (queue + trigger turn — active replan), two tools with two costs.

graff workers today are one-shot: a follow-up question re-pays the whole brief + exploration. Proposal: (1) the subagent tool returns a worker id; a subagent_resume input (id + message) continues that worker's session — its transcript already persists under .graff/subagents/, so this is plumbing, not new state; (2) distinguish queued steering from turn-triggering steering per the Codex split so a nudge doesn't cost a full turn. Live precedent from this very session: the ultracode implementation agent died at a session limit mid-acceptance and was resumed with full context via exactly this mechanism at the orchestrator level — workers deserve the same.

Interacts with: #219 (durable attempt ledger), the #390 budget ledger (a resumed worker draws from the same pool), and the escalation ladder (a failed R1 scout could be resumed with findings-so-far instead of escalating cold to R2).

🤖 Generated with Claude Code

https://claude.ai/code/session_01QbsV84fdmf39Bh2RF8LdPs

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions