On synthetic ML reasoning tasks with known ground truth, a self-debate protocol — where a language model plays an explicit Critique agent, Defense agent, and Judge role in structured sequential prompts — will achieve a benchmark aggregate score at least 0.10 higher than a trivial baseline (single-pass answer plus self-critique, no revision). The isolated two-instance variant (Critique and Defense receive independent context, no shared output) is hypothesized to outperform the contaminated variant and enable defense_wins verdicts on cases where the Critique's premise is false.
Two experiments were run. See CONCLUSIONS.md for full per-case scoring and FINAL_SYNTHESIS.md for the cross-experiment synthesis.
| Experiment 1 (contaminated) | Experiment 2 (isolated) | |
|---|---|---|
| Cases | 11 | 15 (11 original + 4 defense_wins) |
| Protocol | Single instance, Defense reads Critique | Isolated context: Defense receives task_prompt only |
| Debate mean | 0.988 | 1.000 (original 11) / 0.947 (all 15*) |
| Baseline mean | 0.517 | 0.379 |
| Lift | +0.471 | +0.568 |
| Case pass rate | 11/11 | 11/15 (73.3%)* |
| defense_wins verdicts | 0/0 cases tested | 4/4 correct |
*The 73.3% pass rate is a rubric measurement gap, not a protocol failure. The rubric's issue_discovery_precision dimension is undefined for defense_wins cases (where the Critique's premise is intentionally false). With IDP scored as N/A for those 4 cases, all 15 pass. See FINAL_SYNTHESIS.md §2 for full explanation.
Primary hypothesis: SUPPORTED. Isolated architecture is required for defense_wins verdicts.
Run Experiment 1 (original 11 cases, contaminated protocol):
python self_debate_poc.pyProduces experiment_results.json.
Run Experiment 2 (all 15 cases, isolated protocol):
python self_debate_experiment2.pyProduces experiment2_results.json.
- Input:
benchmark_cases.json(11 KEEP cases),evaluation_rubric.json(read-only) - Debate: Critique agent → Defense agent (reads Critique) → Judge agent → verdict
- Baseline: Single-pass assessment → self-critique, no revision
- Scoring: 6 rubric dimensions per case for both systems
- Output:
experiment_results.json,CRITIQUE.md,DEFENSE.md,DEBATE.md
- Input: All 15 KEEP cases (original 11 + 4 defense_wins)
- Debate (isolated): Critique agent (task_prompt only) → Defense agent (task_prompt only, no Critique) → Judge (sees both independent outputs)
- New metric:
agent_convergence_rate— whether Critique and Defense independently identify the same issues (0.800 across 15 cases) - Output:
experiment2_results.json
scope_intent_001excluded:revisestatus inbenchmark_verification.json(causal inaccuracy in planted issue description)- No real user tasks or production data. All 16 cases (12 original + 4 defense_wins) are fully synthetic
evaluation_rubric.jsonis read-only — not modified by any script- Live API calls are not made. Debate transcripts are embedded structured data in the PoC scripts
- Multi-round debate loops are out of scope for both experiments
- Python 3.8+
- Standard library only (
json)
| File | Experiment | Description |
|---|---|---|
benchmark_cases.json |
— | 16 synthetic cases (11 original + 4 defense_wins + 1 revise/excluded) |
benchmark_verification.json |
— | 15 KEEP decisions |
evaluation_rubric.json |
— | Scoring rubric, locked before execution |
EXECUTION_PLAN.md |
— | Pre-specified verdict rules for all 5 case categories |
self_debate_poc.py |
E1 | Contaminated protocol, 11 cases, embedded transcripts and scores |
self_debate_experiment2.py |
E2 | Isolated protocol, 15 cases, convergence data |
CRITIQUE.md |
E1 | Critique agent output for 11 original cases |
DEFENSE.md |
E1 | Defense agent output for 11 original cases |
DEBATE.md |
E1 | Transcripts + verdicts + 9 agreed empirical tests |
CONCLUSIONS.md |
E1+E2 | Per-case scoring, aggregate scores, hypothesis verdicts, E2 findings (§7) |
REPORT.md |
E1+E2 | Full technical report covering both experiments |
REPORT_ADDENDUM.md |
E1+E2 | Production analysis + E2 design rationale and delta results |
evaluation_results.json |
E1+E2 | Independent EVALUATOR scores (E1: 11 cases, E2: 15 cases) |
FINAL_SYNTHESIS.md |
E1+E2 | Lead synthesis: findings, failures, rubric gap, iteration 3 recommendations |