Bonfire
Architecture

Dual and Triple Workflows

Structured disagreement, not task-splitting. Two or three agents compete on the same problem. A Sage picks the winner.

What it is

For high-stakes work, Bonfire dispatches 2 or 3 Scouts in parallel, each with a different lens or prompt prefix. Their reports land in disjoint file paths. A Sage agent reads all reports and produces a synthesis — not a merge, a decision.

The Sage picks one answer per axis, documents the tradeoff, and hands the synthesis to the next stage.

Where it lives

FileLinesPurpose
workflow/research.py89dual_scout / triple_scout factories
agents/sage/Sage structural prompt

Why this is not task-splitting

Task-splitting asks "which worker gets which sub-problem?" Structured disagreement asks "which of these competing solutions survives synthesis?"

The distinction is load-bearing:

  • Task-splitting gives you a 2x throughput gain on independent work. Nothing more.
  • Structured disagreement gives you quality — two scouts produce genuinely different approaches, the Sage picks the one that survives critique. One of them is always worse; the Sage says so explicitly and documents the tradeoff.

Real example

From the bonfire-website build (BON-278):

  • Scout A flagged "motion budget 3/5, 3-particle cap"
  • Scout B recommended "two-branch render for reduced-motion under SMIL"
  • Scout C found "CSS offset-path, baseline since 2022, retires SMIL entirely"

The synthesis reconciled them: pure CSS (Scout C) makes the two-branch SMIL pattern (Scout B) unnecessary. One scout's work was partially superseded; the synthesis said so explicitly.

Workflow availability

Dual and triple workflows ship on every tier, including free. Tier differentiation happens through model class and vault access, never through workflow access. A free-tier user gets the same dual_scout and triple_scout factories as a paid user.

On this page