The Double-Critique Gate

ByJTT's living review framework — nothing is "done" until two independent critics from different model families pass it.

What it is

A standing rule for every reviewable result — an experiment, a social post, a page, a significant file, a major decision: it ships only when the Gauntlet passes. The Gauntlet is a process, not a fixed count: critics are deployed against the result until they are genuinely satisfied. Today that means a primary critic + an adversarial critic from different model families, acting independently (no debate round-trips), both averaging ≥ 7/10 on a deterministic, evidence-based rubric. One "needs work" ⇒ back for revision, then re-critiqued. As the research evolves, so does the Gauntlet — the count and the gates can grow (the name stays: it's the process that matters).

The Gauntlet is itself put through the Gauntlet — the framework is critiqued and improved the same way it reviews everything else. This page is its living record.

Newest version

Version timeline

v1.1.0

Evolvable name + self-versioning

2026-08-15 · PASS (8.2 + 7.8)

  • Changed: renamed to ByJTT Gauntlet; added framework/ module, CHANGELOG, timeline, MIT open-source.
  • Why: a fixed name would misdescribe the process as it grows; versioning makes the framework auditable.
  • Evidence: meta-gauntlet — the framework itself passed its own critics (8.2 + 7.8).
v1.0.0

Initial framework — two-critic gate

2026-08-15 · PASS (8.8 + 8.8)

  • Changed: 2 independent critics, different families, numeric gate ≥ 7/10, archive in critiques/.
  • Why: research-based count — diversity beats count, debate fatigue, collective delusion.
  • Evidence: first deployment caught 5+ real bugs in 3 rounds.

Open source

The Gauntlet is MIT-licensed and lives in the public repo (framework/, critic.sh, PROTOCOL.md). Anyone building with AI can adopt it: copy the harness + protocol, run ./critic.sh file:<path> against their own results, and ship only when the gate passes. Fork it, improve it, put it through its own gauntlet.

Cost / quality effectiveness

MetricValueRead
Runs to date5Framework is actively used, not decorative
Bugs caught (first deployment)5+Layout bugs, WCAG focus failure, backdrop regression, token gaps
Rounds to PASS (first deployment)3 (REVISE → REVISE → PASS)The loop works — critics drove real fixes
Gate scores8.8 (v1.0.0) · 8.2 + 7.8 (v1.1.0 meta)Self-validating — the framework passed its own gate
Cost per run~2 model invocations, ~120–300k tokensCheaper than a human review cycle; repeatable
Quality per costHigh5+ real bugs per ~2 model runs per artifact

These stats are recorded per version in framework/framework.json as the framework runs — the effectiveness data is part of the framework's own changelog, so the timeline shows whether each version actually improved things.

Why two critics (the researched answer)

How it runs

./critic.sh exp:suika · ./critic.sh post:/tmp/draft.txt · ./critic.sh page:https://… · ./critic.sh file:api/leaderboard.js

Proven in the field (first deployment)

Deployed against the experiment nav CSS on 2026-08-15. Three gate rounds:

  1. Round 1 — REVISE: primary found no design tokens, missing focus states, magic numbers. Adversary found two real layout bugs (half-width desktop tab bar; footer hidden behind the bar on notched iPhones).
  2. Round 2 — REVISE: after fixes, the adversary caught my own fix introducing a regression (a backdrop-filter fallback that made the bar fully opaque) plus an invisible keyboard focus (WCAG 2.4.7 failure) and half-finished tokenization.
  3. Round 3 — PASS (8.8 + 8.8): all issues resolved, both critics confirm. The framework caught 5+ real bugs that a single same-family review missed.

A living, self-improving framework

This framework improves itself: every critique archives its findings, and recurring patterns feed back into the rules (the rubric, the gate threshold, the prompt). It is itself documented as a lesson — the same transparency we demand of everything else. If the research shifts (new papers on multi-agent evaluation), the framework's "why" updates too — the protocol is a living document, not a fixed one.

See the status page for live metrics, and the lessons log for how this framework was born.