Files
stack/packages/forge/pipeline/rails/debate-protocol.md
Mos (Agent) 10689a30d2
Some checks failed
ci/woodpecker/push/ci Pipeline failed
ci/woodpecker/pr/ci Pipeline failed
feat: monorepo consolidation — forge pipeline, MACP protocol, framework plugin, profiles/guides/skills
Work packages completed:
- WP1: packages/forge — pipeline runner, stage adapter, board tasks, brief classifier,
  persona loader with project-level overrides. 89 tests, 95.62% coverage.
- WP2: packages/macp — credential resolver, gate runner, event emitter, protocol types.
  65 tests, 96.24% coverage. Full Python-to-TS port preserving all behavior.
- WP3: plugins/mosaic-framework — OC rails injection plugin (before_agent_start +
  subagent_spawning hooks for Mosaic contract enforcement).
- WP4: profiles/ (domains, tech-stacks, workflows), guides/ (17 docs),
  skills/ (5 universal skills), forge pipeline assets (48 markdown files).

Board deliberation: docs/reviews/consolidation-board-memo.md
Brief: briefs/monorepo-consolidation.md

Consolidates mosaic/stack (forge, MACP, bootstrap framework) into mosaic/mosaic-stack.
154 new tests total. Zero Python — all TypeScript/ESM.
2026-03-30 19:43:24 +00:00

103 lines
4.9 KiB
Markdown

# Debate Protocol
## Structured Phases (replaces open-ended rounds)
Debates run in three explicit phases, not freeform back-and-forth.
### Phase 1: Independent Position Statements
- Each participant reads the input independently
- Each produces a written position statement with reasoning
- **No participant sees others' positions during this phase**
- This prevents framing bias (the Architect doesn't set the frame for everyone else)
- Output: N independent position statements
### Phase 2: Response & Challenge
- All position statements are shared simultaneously
- Each participant responds to the others:
- Specific agreements (with reasoning, not "sounds good")
- Specific disagreements (with counter-reasoning)
- Risks the others missed
- **Min 2, Max 10 response rounds** (each round = full cycle where every participant speaks)
- A "round" is defined as: every active participant has produced one response
- Circular detection: the Gate Reviewer (not the state machine) reviews round summaries and can halt if arguments are repeating
### Phase 3: Synthesis
- One designated synthesizer (usually the Software Architect for Planning 1, the lead Language Specialist for Planning 2)
- Produces the output document (ADR, implementation spec, etc.)
- **Must include:**
- Chosen approach with reasoning
- Rejected alternatives with reasoning
- All dissents (attributed to the dissenting role)
- Risk register
- Confidence level (HIGH / MEDIUM / LOW)
- Other participants review the synthesis for accuracy
- If a participant's dissent is misrepresented → one correction round
## Cross-Cutting Agents (present in EVERY debate)
Two agents participate in every debate at every level — Board, Planning 1, Planning 2, Planning 3:
- **Contrarian**: Deliberately argues the opposing position. Challenges assumptions. Finds failure modes. Prevents groupthink. If everyone agrees, the Contrarian's job is to explain why they shouldn't.
- **Moonshot**: Pushes boundaries. Proposes the ambitious version. Connects to the bigger vision. Prevents mediocrity. Always presents two versions: the moonshot AND a pragmatic stepping stone.
These two create productive tension — the Contrarian pulls toward "are we sure?" while the Moonshot pulls toward "what if we aimed higher?" The domain experts sit in the middle, grounding both extremes in technical reality.
## Round Definition
A **round** = one full cycle where every active participant has spoken once.
- 4 participants = 4 messages = 1 round
- This is explicit to prevent confusion about costs
## Round Limits
| Phase | Min | Max | Cost (N participants, mixed models) |
| ------- | ---------------------- | ------------------------ | ----------------------------------- |
| Phase 1 | 1 (each speaks once) | 1 | N calls |
| Phase 2 | 2 rounds | 10 rounds | 2N - 10N calls |
| Phase 3 | 1 (synthesis + review) | 2 (if correction needed) | N+1 - 2N calls |
### Example: Board (6 participants — CEO, CTO, CFO, COO, Contrarian, Moonshot)
| Phase | Min | Max |
| --------- | ------------- | ------------- |
| Phase 1 | 6 | 6 |
| Phase 2 | 12 | 60 |
| Phase 3 | 7 | 12 |
| **Total** | **~25 calls** | **~78 calls** |
### Example: Planning 1 (4 generalists + 2 cross-cutting = 6)
Similar range. Planning 2 may have more specialists = higher N.
Still much tighter than the original 3-30 open rounds.
## Mandatory Behaviors
1. **State your position with reasoning.** "I think X because Y." Not "sounds good."
2. **Challenge other positions.** Every participant must challenge at least one position in Phase 2.
3. **Raise risks others missed.** If you see a problem — you MUST raise it.
4. **Formally dissent if not convinced.** Dissents survive into the output document.
5. **Don't capitulate to move forward.** Hold your position if you believe it's right.
## Prohibited Behaviors
1. **No rubber-stamping.** "Looks good to me" without reasoning is rejected.
2. **No scope creep.** Stay within the brief's boundaries.
3. **No implementation during planning.** Specs, not code.
4. **No deferring to authority.** The Architect's opinion is not automatically correct.
## Circular Detection
The **Gate Reviewer** (AI, Sonnet) — NOT the mechanical state machine — reviews Phase 2 round summaries. If arguments are repeating with no new information for 2+ rounds, the Gate Reviewer can:
1. Halt debate and force Phase 3 synthesis with dissents recorded
2. Escalate to human if the disagreement is fundamental
## Convergence
Any participant can request moving to Phase 3. The state machine polls all participants (structured yes/no). If 2/3 agree → proceed to Phase 3. Otherwise → continue Phase 2 (within max rounds).