The Judge spawned expert agents with run_in_background: true, which caused the Judge's turn to end immediately after spawning. Users had to manually type "proceed" to resume scoring and convergence. Removing the flag keeps parallel execution (multiple Task calls in one message) while blocking until all agents return summaries, so the Judge auto-proceeds through rounds without intervention. Also includes RFC 0033 round-scoped file architecture updates: coerce_bool for MCP string booleans, mandatory agent return summaries, token budget documentation, and write-artifacts workflow step. Spike: alignment-dialogue-halts-after-expert-completion Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
3.3 KiB
Spike: Alignment Dialogue Halts After Expert Completion
| Status | Complete |
| Date | 2026-01-26 |
| Time Box | 30 minutes |
Question
Why does the alignment dialogue halt after expert agents complete, requiring user to type "proceed"?
Root Cause
run_in_background: true in the Judge Protocol prompt at crates/blue-mcp/src/handlers/dialogue.rs:1013.
The mechanism
When the Judge spawns N expert agents, the prompt instructs it to use run_in_background: true on each Task call. This causes the following flow:
- Judge sends ONE message with N Task tool calls, all with
run_in_background: true - All N Task calls return immediately with
output_filepaths (not results) - The Judge's turn ends. It has produced output and is now waiting for user input.
- The background agents run and complete asynchronously
- The user sees completion notifications ("Agent Cupcake expert deliberation completed")
- The Judge does not automatically wake up to process results
- User must type "proceed" to give the Judge another turn to collect and score
The contradiction
Line 1013 says run_in_background: true, but line 1015 says:
"All {agent_count} results return when complete WITH SUMMARIES"
This is false when run_in_background: true. Background tasks return output_file paths immediately, not summaries. The prompt assumes blocking semantics but specifies non-blocking execution.
Why blocking works
If run_in_background is false (the default), multiple Task calls in a single message:
- All start in parallel (same parallelism benefit)
- All block until every agent completes
- All results return in the same response with full summaries
- The Judge immediately proceeds to scoring, artifact writing, and convergence checking
- If not converged, the Judge spawns the next round in the same turn
- The entire multi-round dialogue runs to completion without user intervention
Fix
Change dialogue.rs:1013 from:
- run_in_background: true
to:
- run_in_background: false
Or simply remove the line entirely (false is the default).
No other changes needed. The "spawn ALL in a SINGLE message" instruction already provides parallelism. The run_in_background flag is orthogonal to parallel execution and only controls whether the Judge blocks on results.
Evidence
crates/blue-mcp/src/handlers/dialogue.rs:1013- the offending instructionskills/alignment-play/SKILL.md:80-84- SKILL.md does NOT mentionrun_in_background; it only says "Send ONE message with N Task tool invocations" (which is correct for parallelism)- User symptom: "the alignment game keeps halting and i need to explicitly tell claude to proceed"
Risk Assessment
Low risk. The only behavioral change is that the Judge's turn blocks until all agents complete instead of returning immediately. This is the desired behavior — the Judge needs results before it can score. Parallelism is preserved because multiple Task calls in one message always run concurrently regardless of the background flag.
One consideration: if agents take a long time, the Judge's turn will be longer. But this is preferable to halting and requiring manual intervention, which defeats the purpose of automated convergence.