AGENTIC ENGINEERING
Gauntlet Loops
A builder makes the thing. A separate critic with fresh context judges the thing itself and is allowed to reject it. The largest gap goes back. Repeat until the work wins. This is how we build DCENT_ADE.
What A Gauntlet Loop Is
A gauntlet loop is an adversarial build cycle. A builder produces a real artifact. A separate critic receives fresh context, gets handed the artifact itself, and decides whether it clears a bar written down before the work started. If the work loses, the single largest gap goes back to a builder and the loop runs again.
Four properties make it a gauntlet rather than a review. The critic is separate. Its context is fresh. It judges the artifact, not the story about the artifact. And it has real authority to reject. Remove any one of those and you still have a workflow. You no longer have an adversary.
The failure it fixes is familiar. An agent finishes a task and reports success. The report is fluent, structured and confident, and often describes intent rather than what landed on disk. A loop with no adversary converges on whatever the builder already believes. Gauntlet loops exist to close the distance between implemented and actually good, and the only reliable way to close it is to let something with no stake in the work say no.
It is a specialization of loop engineering. A plain loop asks whether the work is finished. A gauntlet loop asks whether it is good, which is a different question with a different stopping condition. Run panels of critics in parallel and it becomes graph engineering. The full ladder sits on the agentic engineering hub.
How One Round Actually Runs
The loop is small. Most of the engineering is in the setup, and almost every failure comes from skipping step one.
- Write the bar before anything exists. A bar written afterwards is a description of the artifact. Point at something concrete and inspectable: a product you want to beat, a spec, a screenshot, a golden file, a baseline measured before the change.
- The builder produces a real artifact. Not a plan, not a diff summary. Something that runs, renders or fails on its own.
- Package the evidence. Pixels, logs, test output, a git range, a recording of a failure being induced and recovered from.
- Hand a fresh critic the artifact and the bar, and nothing else. No builder history, no rationale, no list of known limitations. Those are the inputs that talk a critic out of a rejection.
- The critic reproduces, then rules. A claim it cannot reproduce did not happen. The verdict is a binary pick against the bar plus one named largest gap.
- The largest gap goes back. One gap, to a builder, with the artifact. Smaller gaps get recorded and deliberately left alone.
- Stop on a rule written in advance. Not on a feeling that it is probably fine now.
$ tree -L 1 gauntlet/round-03
gauntlet/round-03
|-- bar.md <- written before the builder started
|-- builder-out/ <- the artifact itself, runnable
|-- evidence/ <- pixels, logs, test output, git range
|-- critic-brief.md <- everything the critic is allowed to see
`-- verdict.txt <- PASS or REJECT, plus one largest gap
$ cat gauntlet/round-03/critic-brief.md
ROLE you are the critic. you did not build this.
BAR bar.md. read it first. it is not negotiable this round.
ARTIFACT builder-out/. run it yourself.
EVIDENCE evidence/ is corroboration, not proof. verify what you use.
OUTPUT verdict.txt. REJECT is a valid and expected answer.
RULE if you cannot reproduce a claim, it did not happen.
RULE do not read builder notes. they are not in this directory
for a reason.
Why Fresh Context Is Load-Bearing
When an agent builds something, it builds a picture of what the thing is supposed to be. That picture lives in the context window next to the code. Ask the same session to review the result and it compares the artifact against its own picture rather than against the requirement. If it misread the requirement, the review confirms the misreading. The error and the check come from the same well.
Research has been unkind to the alternative. Huang and colleagues tested intrinsic self-correction, where a model revises its own answer with no external signal, and found performance often degrades rather than improves. Self-Refine, where one model generates, critiques and refines, does produce gains, but later work documents a persistent self-bias: models favour text they produced. The LLM-as-a-judge paper named the same effect from the judging side, alongside position and verbosity bias.
Fresh context is the cheapest fix available and not a complete one. A different model family is better, because two instances of the same model make correlated mistakes. If you can change only one variable, change the context. The critic should be able to look at the artifact and ask what this even is, which is the question the builder can no longer ask. Context engineering and gauntlet loops are the same problem from two ends: one context is curated for building, the other for judging, and mixing them is a defect.
Judge The Artifact, Not The Story About It
This rule carries the most weight and gets abandoned first, because reading a summary is fast and running the artifact is slow. A build report is a compressed, self-authored account written by the party with the most reason to be generous. It is a useful pointer. It is never the evidence. The practical test is whether the critic could reach the same verdict with the report deleted. If not, the critic is grading prose.
| The builder says | What the critic accepts instead |
|---|---|
| The layout is fixed. | A render at the widths named in the bar, captured by the critic. |
| Tests pass. | The command, its exit code and its output, run in the critic's shell. |
| I merged the branch. | git log and the diff range, produced by the critic, not quoted to it. |
| Performance improved. | Before and after on the same machine with the same input. |
| It recovers from the failure. | The failure induced live, and the recovery observed happening. |
| It works on the target device. | The device, connected, doing it. |
| Edge cases are handled. | The edge case, entered by hand, producing the stated behaviour. |
For us this is a product constraint, not a preference. DCENT_ADE is built under development rules that reject fake agents, simulated activity, fabricated telemetry and optimistic availability indicators. An environment that lies about agent state makes every gauntlet loop inside it worthless, because the evidence layer is the thing being faked. The awareness layer reads busy, idle, awaiting input and finished from real terminal behaviour, not from a status field somebody set hopefully. The catalog execution layer refuses to claim a Git merge it does not perform. Claiming it would have been cheaper, and it would have shipped the exact defect a gauntlet exists to catch into the tool that runs the gauntlets.
$ cat gauntlet/round-03/verdict.txt
VERDICT REJECT
BAR MET no
REPRO yes. built and ran locally. 3 window sizes.
LARGEST GAP
Resizing the window drops the last row of the PTY scrollback.
Reproduced by hand at 80x24, 120x40 and full screen.
No test covers resize at all.
The build report says resize handled. The artifact disagrees.
The artifact wins.
SMALLER GAPS (recorded, do not fix this round)
tab label truncation at narrow widths
focus ring contrast on the split handle
NOTE
Bar is still the right bar. Do not renegotiate it to pass.
Writing A Bar You Can Actually Lose Against
Most gauntlet loops fail here. The bar says make it excellent, or match industry standards, or ship production quality. None of those can be lost against, so the critic approves, and the loop degrades into an expensive way of agreeing with yourself.
A losable bar has three properties. It names something that exists outside the loop. The critic can inspect it without asking the builder for anything. And there is a plausible world in which the work fails it. If you cannot describe what failure would look like, you have written an aspiration.
Blind comparison is the sharpest form. Put the artifact and the reference side by side with the labels stripped and ask which is better. A binary pick is much harder to fudge than a score out of ten, because a score can be nudged and a pick cannot. That framing comes from Matt Shumer’s public write-up of the technique, and it is a genuine improvement on what we were doing before we read it.
Daniel Kahneman’s adversarial collaboration supplies the other half. Opposing researchers agree in advance on what result each would accept as evidence against their own position. Do the same before the builder starts: write down what would make you reject, while you have nothing invested in passing. A bar renegotiated after the artifact exists is not a bar, and the urge to soften it is the most common way these loops die.
The bar is itself a prompt artifact, so it benefits from the prompt engineering rung: explicit acceptance criteria, worked examples of pass and fail, and reuse across rounds so the standard does not drift.
Send Back The Largest Gap, Not The Easiest One
Hand a builder a list of eight problems and it will fix the six cheap ones, report a strong round, and leave the architectural one untouched. Every round after that inherits the same defect, now buried under polish. The loop looks productive right up until the real problem surfaces and the work stacked on top of it has to be thrown away.
One gap per round is a forcing function. It makes the critic rank rather than enumerate, which is the harder and more useful judgment. Largest means largest distance from the bar, not longest to fix. A structural flaw that takes an hour beats a cosmetic flaw that takes a minute, every time.
Record the smaller gaps and leave them. Half of them disappear when the largest one is fixed properly, and the survivors are better understood by then. This ordering also keeps each round’s diff reviewable by a person, which matters when the loop ends at a merge gate with a human on it.
When The Critic And The Builder Are Wrong Together
Fresh context stops the critic inheriting the builder’s reasoning. It does nothing about a wrong assumption they both hold because they were trained on the same internet. If both parties believe an API works a certain way, the artifact will implement that belief and the critic will confirm it. The loop converges, confidently, on a bug.
Adding more critics is the obvious move and it is weaker than it looks. A recent Apple study of nine frontier judges drawn from seven model families found their errors correlated enough that the panel carried roughly two independent votes’ worth of information, and its accuracy barely beat the best single judge. Nine opinions, two votes. Scaling up similar reviewers buys agreement, not independence.
What works is critics that differ in what they are looking for, not just in weights. Give each one a lens and a mandate to find the worst instance of its own concern. A security critic and a performance critic disagree about the same artifact in useful ways. Six copies of a general reviewer produce the same paragraph six times.
Two mechanisms keep a panel honest. First, majority-refute rather than majority-approve: if any critic produces a reproducible failure, the artifact loses even if the rest passed it. Approval needs consensus, rejection needs one. The asymmetry is deliberate, because a demonstrated failure is evidence while an approval is only the absence of one. Second, anchor the panel to something that cannot be talked around. A test suite, a compiler, a device, a real measurement. Model consensus is an opinion. A failing test is a fact.
How Many Rounds, And When To Stop
Returns are front-loaded. The Self-Refine authors reported most of their gains in the early iterations, and that matches what we see. Round one removes the obvious defects, round two removes the ones the obvious defects were hiding, and by round five the critic is mostly rearranging opinions. Refinement is also not monotonic: a revised version is not reliably better than the one it replaced, so keep every round’s artifact instead of overwriting it.
Pick a stop rule before you start. Four work well. Stop when the artifact wins the blind comparison twice with different critics. Stop when the largest gap two rounds running is cosmetic, which means the bar has been met and the critic is inventing work. Stop when the budget is spent, which is a legitimate answer and should be logged as one. Stop when the same gap returns a third time, because that is oscillation, and it means the bar and the artifact are in conflict rather than the artifact being wrong.
Never stop on a fixed round count alone. Three rounds is a schedule, not a quality signal. Termination, oscillation detection and cost control are the core of loop engineering and they apply here unchanged.
Endless rejection is a bar problem, not a critic problem. Require every rejection to name a specific reproducible gap. A rejection that cannot point at the artifact is not a rejection, and three vague ones in a row mean the bar is unreachable or badly written. That signal is one of the more valuable things a gauntlet loop produces.
Gauntlet Loops Versus RALPH Loops
These are not rivals, and picking the wrong one is expensive in both directions. RALPH, from Geoffrey Huntley, reruns the same prompt against a fresh context in a shell loop and lets the filesystem and git history carry the state. There is no adversary. The pushback comes from the compiler, the type system and the test suite, which Huntley calls deterministic back pressure. It is cheap, unglamorous, and on well-defined work it is effective in a way that annoys people expecting something more sophisticated.
A gauntlet loop adds a party whose job is to say no. That costs real tokens and real wall time. You are buying judgment, and you only need judgment when the definition of done and the definition of good have come apart.
| RALPH loop | Gauntlet loop | |
|---|---|---|
| Shape | Same prompt, fresh context, repeat | Build, independent critic judges, largest gap goes back |
| Adversary | None. The repo and the compiler push back | A separate critic whose job is to reject |
| Best at | Grinding through defined work: migrations, coverage, backlogs | Work where done and good are different questions |
| Fails at | Quality nobody defined. It converges on adequate | Cheap bulk work. The critic overhead is not worth paying |
| Cost per unit | Low. Its whole point is being cheap enough to leave running | Higher. Judgment is the thing you are paying for |
| Stops when | Budget runs out or the task list empties | The bar is met blind, or the gaps stop being real |
| Origin | Geoffrey Huntley, 2025 | Named publicly by Matt Shumer, 2026. The method is far older |
Where This Sits On The Ladder
Below It
Loop engineering gives you the cycle, the termination conditions and the cost controls. A gauntlet is that machinery with an adversary bolted into the observe step.
Beside It
Harness engineering decides which agent, model, tools and isolation the critic runs under. A critic sharing the builder’s worktree is not independent, whatever its prompt says.
Above It
Graph engineering takes over the moment panels run in parallel. Fan out to critics, join on verdicts, gate the merge, route the largest gap back.
That last shape is what DCENT_ADE was built around. Its Mission Control roles run Coordinator to Scouts to Builders to Reviewers, then human approval, then integration and delivery. Claims stop two builders taking the same work. Worktree isolation keeps a critic from grading a tree the builder is still editing. Review packets are the evidence bundle in a defined form, and MergeGate is the gate a human co-signs. The architecture exists to make the honest version of this loop the convenient one, because the dishonest version is always cheaper in the moment.
Shoulders We Stand On
We run this as our standing build doctrine. We did not invent adversarial review, and we did not publish the name first. Both facts belong on a page whose whole argument is that claims should match reality.
The name is Matt Shumer’s. He named the Gauntlet Loop publicly in mid-2026 while building a browser-based first-person shooter from a single prompt, and his formulation contributed the blind comparison against a named, fetchable reference and the binary pick instead of a score. We had been running the same shape internally against DCENT_ADE. We are not going to overstate that in either direction. Credit lands where it lands.
The method is older than either of us. Michael Fagan formalized design and code inspection at IBM in 1976, and what made it stick was the finding that structured inspection by people who did not write the code caught defects unit testing missed. Ian Goodfellow’s generative adversarial networks put a generator and a discriminator in a minimax game in 2014, the same architecture with gradients instead of prompts. Karl Cobbe and colleagues at OpenAI trained verifiers in 2021 to rank candidate solutions, establishing that a separate judge can beat a bigger generator. Ethan Perez and colleagues published red teaming language models with language models in 2022, and red teaming itself is older still, borrowed from military and security practice.
The agent-era work is worth reading directly. Self-Refine established the generate, critique, refine cycle. Reflexion turned a verbal self-critique into episodic memory across attempts. Du and colleagues showed multi-agent debate improving factuality, and later work catalogued how debate degrades into premature consensus. OpenAI’s CriticGPT trained a model specifically to find bugs in another model’s code, and reviewers helped by it outperformed reviewers working alone in a clear majority of cases. Verga and colleagues showed panels of smaller diverse judges beating a single large one, and the correlated-errors work since showed how fast that advantage collapses when judges resemble each other. Daniel Kahneman and Anne Treisman contributed adversarial collaboration, the source of the discipline of agreeing on the evidence before the argument.
What we add is operational rather than conceptual: running this every day against a real product, with the evidence rules enforced instead of aspirational, and reporting what breaks. The tooling we build for it is free and open, as-is, with no paid tier and nothing held back. If it saves you real time or you use it commercially, a voluntary subscription or donation is expected and never enforced. That lives at d-central.tech/fund.
Related products, repair, and setup paths
- how D-Central diagnoses ASIC repairs
- ASIC troubleshooting library
- ASIC manuals and repair guides
- replacement hashboards
- ASIC control boards
- ASIC power supplies
- S19 family replacement hashboard
- C52 replacement control board
- APW12 S19 power supply
- compare specs in the ASIC miner database
- compare ASIC miner specs
- ASIC miner database
- ASIC repair services
- Antminer S19 specs and profitability
- buy a tested Antminer S19
- Antminer S19 maintenance guide
- Antminer S19 repair service
- Antminer S21 specs
- Bitmain Antminer S21
- Antminer S21 maintenance guide
- BM1370BC S21 Pro chip
Last reviewed August 13, 2026.
