RFC 0012 was implemented with Option B (MCP orchestrates via Ollama) instead of Option A (Claude orchestrates via Task tool). This caused: - No parallel agents spawned - Fake Ollama responses instead of real deliberation - Inline JSON instead of .dialogue.md files Fix by removing blue_alignment_play tool entirely. Claude now orchestrates alignment dialogues directly using Task tool per ADR 0014. Also: - Add pub mod resources for RFC 0016/0017 (was missing) - Update lib.rs threading for spawn_blocking - Add .blue/worktrees/ to gitignore - Update database schema Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
5.7 KiB
Spike: Alignment Dialogue Architecture Mismatch
Date: 2025-01-24 Time-box: 45 minutes Status: Complete
Problem
User invoked alignment dialogue expecting:
- Background agents spawned in parallel
.dialogueformat output- Multi-round convergence tracking
Got instead:
- Inline text response (no agents spawned)
- No file created
- No actual expert deliberation
Root Cause
Blue's RFC 0012 implementation is architecturally wrong.
Blue created blue_alignment_play as an MCP tool that:
- Runs synchronously in the MCP server
- Uses Ollama to generate fake "expert" responses
- Outputs JSON directly
Coherence-MCP worked differently:
- MCP server provides helper tools only (extract, lint, validate)
- Claude orchestrates the dialogue itself using the Task tool
- Spawns N parallel background agents in a single message
- Collects outputs from JSONL files
- Updates
.dialogue.mdfile between rounds
The Correct Architecture (from coherence-mcp ADR 0006)
┌─────────────────────────────────────────────────────────┐
│ CLAUDE SESSION (💙 Judge) │
│ │
│ 1. Recognize "play alignment" request │
│ 2. Spawn N agents IN PARALLEL (single message) │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │🧁 Agent1│ │🧁 Agent2│ │🧁 Agent3│ │🧁 Agent4│ │
│ └────┬────┘ └────┬────┘ └────┬────┘ └────┬────┘ │
│ │ │ │ │ │
│ ▼ ▼ ▼ ▼ │
│ ┌─────────────────────────────────────────────┐ │
│ │ /tmp/claude/{session}/tasks/{id}.output │ │
│ └─────────────────────────────────────────────┘ │
│ │ │
│ 3. Extract outputs via alignment_extract_dialogue │
│ 4. Score responses, update .dialogue.md │
│ 5. Repeat until convergence │
│ │
│ MCP TOOLS (helpers only): │
│ - alignment_extract_dialogue: read agent JSONL │
│ - alignment_dialogue_lint: validate format │
│ - alignment_dialogue_save: persist to docs │
└─────────────────────────────────────────────────────────┘
Key Differences
| Aspect | Coherence-MCP (Correct) | Blue (Current) |
|---|---|---|
| Orchestration | Claude + Task tool | MCP server |
| Agent spawning | Parallel background agents | None (fake inline) |
| LLM calls | Each agent is a Claude instance | Ollama in MCP |
| Output format | .dialogue.md file |
JSON response |
| Multi-round | Real convergence loop | Single response |
| Judge role | Claude session | N/A |
What Needs to Change
1. Delete blue_alignment_play
The tool that tries to run dialogues in MCP is wrong. Remove it.
2. Add Helper Tools Only
// Extract text from spawned agent JSONL
blue_extract_dialogue(task_id: str) -> String
// Validate dialogue format
blue_dialogue_lint(file_path: str) -> LintResult
// Save dialogue to .blue/docs/dialogues/
blue_dialogue_save(title: str, content: str) -> Result
3. Add ADR 0006 to Blue
Copy from coherence-mcp:
.blue/docs/adrs/0006-alignment-dialogue-agents.md
This teaches Claude:
- N+1 agent architecture
- Spawning pattern (parallel Tasks)
- Convergence criteria
- File format
4. Reference in CLAUDE.md
Add to Blue's CLAUDE.md:
## Alignment Dialogues
When asked to "play alignment" or run expert deliberation:
- See ADR 0006 for the N+1 agent architecture
- Use Task tool to spawn parallel agents
- Collect outputs via blue_extract_dialogue
- Update .dialogue.md file between rounds
5. Create Skill (Optional)
A /alignment skill could encapsulate the pattern, but the core behavior comes from Claude understanding ADR 0006.
Files to Copy from Coherence-MCP
docs/adrs/0006-alignment-dialogue-agents.md→.blue/docs/adrs/docs/patterns/alignment-dialogue-pattern.md→.blue/docs/patterns/- Handler logic from
crates/alignment-mcp/src/handlers/dialogue.rs - Lint logic from
crates/alignment-mcp/src/handlers/dialogue_lint.rs
Immediate Action
The current blue_alignment_play tool should be removed. It gives the illusion of working but doesn't actually spawn agents or create proper dialogues.
The ADR that was already copied to Blue (.blue/docs/adrs/0006-alignment-dialogue-agents.md) needs to be referenced so Claude knows the pattern.
Outcome
Blue's alignment dialogue feature was implemented wrong. The MCP server should provide extraction/validation tools, not orchestration. Claude itself orchestrates using the Task tool to spawn parallel agents. Fixing this requires:
- Removing
blue_alignment_play - Adding
blue_extract_dialoguehelper - Ensuring ADR 0006 is in Claude's context
- Optionally creating a
/alignmentskill