CONVERGED
Three consecutive decisive duel verdicts (WIN or LOSS — not a lateral, not a Gate 1 death) that produced no WIN and no net new entries. Nothing left to improve. Stop.
A build loop where quality can only click forward. The Gauntlet Loop with a memory and a brake. What you ship is the champion, by round id and commit SHA — not the working tree.
The Ratchet Loop is the Gauntlet Loop with a memory and a brake. Give an agent a goal and a real bar it can inspect. Let it split the work. For every piece, run a builder and a separate harsh critic with fresh context. Loop until it wins or you stop it. That method is correct. This one keeps all of it.
It has one structural hole. The critic is deliberately amnesiac. Fresh context every round stops it defending its own previous verdict — and also means nothing re-checks what last round already got right. Round 9 fixes lighting and silently breaks the contrast that passed in round 3. The critic looks only at lighting. The loop reports progress. When you stop, you ship whatever the working tree happened to hold — not the best thing the loop ever built.
Every property a critic passes that survives mutation-based admission becomes a frozen, re-runnable check that every later round must clear. Every round must beat the previous accepted round head-to-head, blind, in both presentation orders. What you ship is the champion, by SHA. A ratchet turns one way.
Two honest qualifications. “Frozen” applies to kind: command entries.
Taste properties (kind: witness) are drift-detectors, not ratchet teeth. And not
every passed property becomes a check. Admission rejects candidates that cannot prove they
discriminate. Coverage is admitted over passed, so the gap is visible.
The Ratchet Loop is scaffolding. It is worth it only when the run is long enough that silent backslide is likely — roughly more than ~6 rounds, or more than ~3 pieces improved in parallel. Below that, run the plain Gauntlet Loop. A promoting Ratchet round costs roughly 4–8× a plain Gauntlet round. Set a hard budget before you start. You are the brake.
The composition is new. Most of the parts are not. Goal and inspectable bar, builder/critic split, and blind A/B come from Matt Shumer’s Gauntlet Loop. Named / Fetchable / Comparable is robonuggets. Mutation testing is DeMillo, Lipton & Sayward, 1978. Champion/challenger promotion is standard eval practice.
What is actually new is applying a mutation-based admission test to auto-generated regression checks, so a loop that writes its own suite cannot pad it with checks that prove nothing.
gauntlet/.Unchanged from the Gauntlet Loop, and still the load-bearing part. A bar must be Named (a specific thing, not a category), Fetchable (the critic can open, run, read or measure it), and Comparable (both can sit side by side and a judge can pick one). If there is no bar, finding one is round zero’s only job. Do not start building.
The criterion list is given, not derived. Setup copies it verbatim. It is immutable thereafter. Re-cutting it is a redesign that needs a human.
The champion on disk does not move until the challenger wins both gates. Round 0 runs no gates — it seeds the ratchet. Gates begin at round 1. Each independently judgeable piece runs its own serial Ratchet Loop over one shared, frozen criterion list.
Machine-checkable only. Taste does not live here. The Warden builds the challenger from a clean checkout of the committed SHA, never from the live working tree, and runs every binding entry. One FAIL fails the round. Not “mostly passing.” Not “the regression is acceptable given the improvement” — that sentence is forbidden.
The Preparer builds both candidates from clean checkouts. Judges commit first, then see unlabelled slates, order swapped. No scores out of anything, ever. Scores drift upward every round; that is the failure this method exists to catch. WIN in both orders promotes. A split is a lateral. A loss in both orders discards.
A regression suite the loop writes for itself is worthless if the loop can pad it. A candidate is admitted only if it is stable, detects its own property on a targeted mutant, is not a change-detector, can be re-derived from its own description, and names a criterion rather than an implementation detail. If round 0 admits zero binding entries, halt. An empty ratchet makes every later Gate 1 pass vacuously.
The champion, named by its round id and commit SHA. Not the working tree. Not the last thing built. Report the champion round, the ratchet with per-entry verdicts, coverage as admitted/passed, the duel record, and the ledger.
Three consecutive decisive duel verdicts (WIN or LOSS — not a lateral, not a Gate 1 death) that produced no WIN and no net new entries. Nothing left to improve. Stop.
Three consecutive Gate 1 failures. The gate never opened. Halt and escalate.
Over promoted rounds only, regressions at or above new passes for two consecutive rounds, or a floor-anchor loss. More rounds are making it worse. Stop.
No promotion in five consecutive rounds, however those rounds ended. The loop is spending without advancing. Halt and escalate. STALLED is the backstop that makes the other three safe.
CONVERGED and DEGRADING arm only after five rounds. JAMMED and STALLED are not delayed. Reaching a max-round or max-spend cap delivers the current champion and stops. When nobody is there: write the escalation to the ledger, deliver the current champion, and stop.
| Round type | What it spends | Multiple |
|---|---|---|
| Non-promoting (dies at Gate 1) | One cold build + witness judges | ~1.5× |
| Promoting, no new entries | + two cold builds + two judges + calibration | ~3× |
| Promoting, new entries | + mutants, stability runs, re-derivation | ~4–8× |
| Scatter (after a lateral) | + two branch builds + two duels | ~6× |
Admission dominates a promoting round. That is the price of a regression suite you can trust. On writing, research and data work, command entries are scarce and the machinery costs the most exactly where it works least. Run the plain Gauntlet Loop there.