Generated work arrives labelled done, so the only options are to accept all of it or read all of it, and under time pressure everyone accepts.
Critic Gate
Located Findings Before the Accept
A second model reviews the first model’s work and returns findings anchored to specific spans of the output — each with a severity and a written rationale — sitting in front of the accept action a human still has to take. Unlike Second Opinion it produces no rival answer at all; consensus is not the signal, located defects are. Unlike AI Provenance, which marks spans by authorship, it marks them by defect. The dismissal rate is shown on purpose: a critic nobody trusts gets rubber-stamped, and that has to be measurable.
Metaphor
Code Review
Interaction
Finding Review, Per-Item Dismiss, Blocked Accept
Use case
AI-Written Code, Generated Policy, Drafted Contracts, Agent Output Review
Control mechanisms
Span-Anchored Findings · Severity · Written Rationale · Dismissal Rate
Reference examples
CodeRabbit · Cursor Bugbot · GitHub Copilot code review
Interactive Example
The live side-by-side is the comparison.
This prototype already contains the contrast between the status-quo approach and the pattern response. The left column names the failure mode of the naive baseline (fixed dispatch, label-as-done, hidden hierarchy, uniform friction); the right column is the move.
Generated is not reviewed. A green check makes them look identical.
The migration arrives with a “generated ✓” badge and a merge button and nothing in between. Reading all fifteen lines properly is the only defence, which under time pressure means the badge does the deciding. Lines 6–9 backfill 41 million rows inside the transaction that already holds an ACCESS EXCLUSIVE lock — four minutes of blocked writes, invisible at a glance.
A second model reads the same diff and returns findings pinned to lines, each with a severity and a written argument: what it costs, measured, plus a fix specific enough to act on. Accept stays blocked at three unresolved. Each finding is taken or dismissed on its own, so a reviewer can act on the two that matter without swallowing the third.
The honest half is the counter underneath: noise rate 22.5%, nine dismissed of forty. A critic nobody trusts gets rubber-stamped, and rubber-stamping looks exactly like review from the outside. Making the dismissal rate visible is what keeps the gate accountable to the people it interrupts — an unread gate is worse than no gate.
A gate that is always cleared is not a gate. It is a delay with a green button at the end.
DOPE Lens
How this pattern improves AI interaction quality.
Observability
The gate states what is unresolved before the accept is available, and counts dismissals so a noisy critic shows up as a number rather than a feeling
Directability
Findings are accepted or dismissed one at a time, so a reviewer can take the two that matter without swallowing or discarding the set
Predictability
Accept stays blocked until every finding is resolved or explicitly dismissed — the gate’s condition is stated, not implied
Explainability
Each finding names where it lands, how severe it is, and why — a written rationale on a span, not a score on a document
Fit
Where it earns its place.
when
The output is low-stakes or trivially reversible; a blocking gate on a throwaway draft is friction with no payoff.
In the wild
Where this pattern already ships.
The pattern is shipping but still maturing across products. Entries below show how different teams have approached it; expect variation as the space settles.
Reference implementations
CodeRabbit · Cursor Bugbot · GitHub Copilot code review
Detailed write-ups for each implementation are in progress.
Research Frame
Why this pattern exists, and where it breaks.
Put a second model between generation and acceptance, and have it return findings anchored to spans — severity, rationale, suggested fix — that block the accept until each is resolved or dismissed.
A naive pipeline treats generation as completion; nothing sits between the output and the merge button, and no record exists of what was checked.
A critic that flags everything gets rubber-stamped — which is why the dismissal rate has to be visible: an unread gate is worse than no gate, because it looks like review.
Common questions
What people ask about this pattern.
When should I avoid the Critic Gate pattern?
+
The output is low-stakes or trivially reversible; a blocking gate on a throwaway draft is friction with no payoff.
What problem does Critic Gate solve?
+
Generated work arrives labelled done, so the only options are to accept all of it or read all of it, and under time pressure everyone accepts.
Why is chat the wrong fit for this?
+
A naive pipeline treats generation as completion; nothing sits between the output and the merge button, and no record exists of what was checked.
Related Patterns
Curated connections, not just neighbors.
Hand-picked relationships — what this pattern pairs with in practice, what it replaces, what it builds on, and what builds on it.
Often paired with
AI Provenance
AI Provenance marks spans by who drafted them and whether a human has reviewed them; Critic Gate marks spans by defect.
Alternative to
Second Opinion
Second Opinion asks the second model for a rival answer and weighs agreement; Critic Gate asks it for located defects.
Extends
Approval Gates
Approval Gates pause for human sign-off; Critic Gate adds span-anchored findings from a second model that must be cleared first.