// 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.

  1. Give Pro and Con the same feature brief.
  2. Run exactly two rounds of rebuttal (stubs return canned arguments).
  3. Judge applies rubric: user risk, rollback cost, evidence quality.
  4. Output `{ decision, risks[] }` — no third round even if tied.
  5. Refuse a single-agent “be balanced” path in the stub runner.
  6. 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.