[Bug] Code-review workflow hangs at synthesis phase; nested-parallel agents bypass cache on resume
Bug Description
Workflow tool: /code-review workflow hangs at the synthesis phase (never spawns final agent); resume re-runs nested-parallel agents instead of using cache
What happened
Ran the built-in workflow-backed /code-review at xhigh on a ~46-file staged diff. The workflow completed every phase through Verify and Sweep, then hung at the final Synthesize phase: the synthesis agent() call was never spawned, and the run went completely silent.
Two distinct bugs:
- Synthesis phase never spawns. After all scope (1) + 10 finders + 38 verifiers + sweep (1) subagents produced transcripts, no agent carrying the synthesis prompt was ever created. The run sat silent (no subagent transcript writes) for ~12 minutes with no completion or error. The completion notification only fires on success, never on stall, so the hang was invisible until an external check looked. This reproduced on a second run (see below), so it's not a transient API failure, it looks like the workflow runtime hangs between the last pipeline()/parallel() completion and the next top-level await agent().
- resumeFromRunId cache miss on nested-parallel agents. Recovery was TaskStop + Workflow({scriptPath, resumeFromRunId}). On resume, the 38 verifier agents (spawned inside parallel() within a pipeline() stage) re-ran live instead of returning from cache (verifier transcript count went 38 → 76), then the run stalled again at the same synthesis boundary. So only the top-level agent prefix cached; agents created inside nested parallel()/pipeline() callbacks did not.
Impact: the workflow never returns a result; the full finder+verifier fan-out effectively ran twice for zero usable output. The verdicts were only recoverable by parsing the subagent .jsonl transcripts by hand.
Environment: Claude Code, built-in code-review workflow, xhigh effort. Run ID wf_61f2caea-cbd (task ids want473u0, resume wg6c9bebg).
Workaround: an external background stall-monitor watching the run's subagent transcript-dir mtime catches it within ~150s; the synthesis itself isn't recoverable via resume.
Environment Info
- Platform: darwin
- Terminal: ghostty
- Version: 2.1.191
- Feedback ID: 71e47901-edf3-477c-a1f4-add81334d64f
Errors
[]This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗