firehose> #llmops

Bounded Negotiation with Fallback

When two agents argue over one artifact until they agree, "until they agree" is not a termination condition — so the loop needs a round cap and a defined action for what happens when the cap is hit. The pattern has three parts and all three are load-bearing: a cap (5 rounds of plan negotiation, 2 rounds of review-and-repair), a success exit (consensus reached, artifact frozen), and a fallback — the deterministic thing that happens when the rounds run out. In grill-me-codex the fallback is unusually clean: after two failed repair rounds the reviewing model stops asking the builder to fix it and fixes it itself — "I want to drive. It'll take the wheel and start writing the code." Not an error, not an escalation to a human, not an infinite retry: a pre-declared change of strategy.

The cap exists because independent models are not guaranteed to converge — that is the point of making them independent (Cross-Model Independence). Two genuinely uncorrelated critics can disagree forever, each round costs tokens and wall-clock, and the operator is usually not watching. Without a bound, the strongest property of the pattern (real disagreement) becomes its worst failure mode (a non-terminating, billed argument). Note the caps are asymmetric and that asymmetry is informative: five rounds for planning, where disagreement is cheap and valuable, and only two for repair, where a builder that has twice failed to follow a review is evidence the delegation itself has failed, not that it needs a third try.

The companion discipline is that a bounded argument must be auditable after the fact: the negotiation writes its transcript to a file (PLAN-REVIEW-LOG.md) and records resolutions with reasons ("12 findings… 11 accepted, 1 scoped down with logged reason"). An operator who did not watch eight minutes of two models arguing needs the disagreement and its resolution to survive as an artifact — otherwise the cap silently truncates work and the run reads as clean consensus when it was actually a timeout. This is Decision Log applied to machine-machine argument, and it is how the pattern honours "no silent caps."

Claims


Linked from