// Orchestration · ~12 min
Debate / Adversarial
Reach for it when: When two opposing arguments surface risks a single pass would miss.
// 60-second mental model
How to hold it in your head
One side argues for. One side argues against. A judge scores both against a rubric — then decides. Disagreement is the feature.
Debate / adversarial multi-agent setups assign opposing roles (pro/con or actor/adversary), run bounded rounds, and let a judge aggregate under an explicit rubric.
// Mini architecture
Pro ↔ Con → Judge (bounded rounds)
┌──────────────┐ ┌──────────────┐
│ Pro agent │ ◄─────► │ Con agent │
│ (argue for) │ rounds │ (argue vs) │
└──────┬───────┘ └──────┬───────┘
└───────────┬────────────┘
▼
┌────────────┐
│ Judge │ → Decision + risks
│ (rubric) │
└────────────┘Cap rounds. The judge never authors a new case — it only scores the transcript against the rubric.
// Mini-project
Ship / don’t-ship debate (stub)
Pro, Con, Judge stubs
Goal: Debate whether to ship a feature behind a flag; judge returns ship|hold plus top risks.
- Give Pro and Con the same feature brief.
- Run exactly two rounds of rebuttal (stubs return canned arguments).
- Judge applies rubric: user risk, rollback cost, evidence quality.
- Output `{ decision, risks[] }` — no third round even if tied.
- Refuse a single-agent “be balanced” path in the stub runner.
- Log round count and rubric scores.
Canned arguments are fine. The lesson is structured disagreement plus a bounded judge.
// Common failure
What goes wrong
Symptom
Endless debate — agents polish rhetoric forever and never decide.
Fix
Hard maxRounds plus a judge that must emit a decision. Ties default to the safer option.
// Self-reflection
Sit with this
Which high-stakes call are you still making with one cheerful pass?
Session only. Nothing is saved.