← Back to patterns
Trust & Verification
Emerging

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.

Loading Demo

Preparing the interactive example for this pattern.

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.

Avoid
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.

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.

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.