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.

Framing

The problem

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.

The pattern

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.

Why chat breaks here

A naive pipeline treats generation as completion; nothing sits between the output and the merge button, and no record exists of what was checked.

Risks

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.

Avoid when

The output is low-stakes or trivially reversible; a blocking gate on a throwaway draft is friction with no payoff.

DOPE evaluation

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

In the wild

  • CodeRabbit
  • Cursor Bugbot
  • GitHub Copilot code review

FAQ

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.

Browse all patterns