🤖 refactor: remove plan subagent auto-handoff#3033
Conversation
| @codex review |
8843ab7 to 6e2c2b6 Compare | @codex review |
6e2c2b6 to 3a7546c Compare | @codex review |
3a7546c to 22b8eaa Compare | @codex review |
| @codex review |
22b8eaa to 3f80680 Compare There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 3f8068019b
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @codex review Please take another look. |
3f80680 to bb69d48 Compare There was a problem hiding this comment.
💡 Codex Review
mux/src/node/services/taskService.ts
Lines 3076 to 3080 in bb69d48
This path now always pushes plan-like tasks into awaiting_report recovery without first checking whether event.parts already contains a successful propose_plan result, so legacy/in-flight plan-like subagent tasks (e.g. after upgrading with existing tasks) can get stuck in a loop where they are repeatedly told to call propose_plan and never finalize or clean up. Before this change, a successful propose_plan stream-end had a dedicated terminal path; removing it without a replacement leaves affected tasks non-terminating.
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @codex review Please take another look. |
bb69d48 to 4709f2c Compare There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 4709f2c0a5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
4709f2c to e3dcf9d Compare | @codex review Please take another look. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: e3dcf9da6c
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @codex review Please take another look. |
e3dcf9d to 56f491a Compare There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 56f491a3de
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| @codex review Please take another look. |
56f491a to cfa04b9 Compare | Codex Review: Didn't find any major issues. Chef's kiss. ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Remove plan-mode subagent auto-handoff after propose_plan, drop the executor-routing settings and backend router, reject plan-like task creation, and update related docs/stories/tests. --- _Generated with `mux` • Model: `openai:gpt-5.4` • Thinking: `high` • Cost: `$2.78`_ <!-- mux-attribution: model=openai:gpt-5.4 thinking=high costs=2.78 -->
| @codex review Please take another look. |
cfa04b9 to 351c772 Compare | Codex Review: Didn't find any major issues. Breezy! ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
If Codex has suggestions, it will comment; otherwise it will react with 👍. Codex can also answer questions or update the PR. Try commenting "@codex address that feedback". |
Summary
Remove plan-mode subagent auto-handoff after
propose_plan, along with the executor-routing settings and backend router that supported it.Background
Plan auto-handoff originally let plan-mode subagents compact into a plan and continue under
execororchestrator. In practice it now collides with grouped task workflows: planning-only best-of batches can silently turn into implementation work. Removing the feature restores a clearer boundary: planning stays top-level, and task subagents stay implementation-oriented.Implementation
taskServicestream-end handoff path that compacted history, switched agents, and posted syntheticImplement the plan/ orchestrator kickoff messagesplanagent non-runnable as a subagent again and added a task creation guard that rejects any plan-like subagent, including custom agents that inherit fromplanValidation
bun test src/common/types/tasks.test.tsbun test src/node/services/taskService.test.tsmake static-checkRisks
Low-to-moderate. This intentionally removes an existing subagent workflow, so users relying on plan subagents that automatically continue into implementation will need to do planning in a top-level workspace instead. The change reduces surprising execution fan-out, and the new creation-time rejection keeps custom plan-like subagents from falling into an unsupported half-working state.
Generated with
mux• Model:openai:gpt-5.4• Thinking:high• Cost:$2.78