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
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_resumeinput (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