Put the extra gates in the harness
Cheap drafts do not justify a
cheaper review. Cherny’s rule
is the useful inversion: agent
production code should clear a
higher bar than human code,
because volume hides drift.
Humans used to catch a bad
import, a missing test, and a
weird parser on the way through
a pull request. Agents land
ten of those before lunch.
Line-by-line reading does not
keep up. Automated gates have
to.
Two places the bar actually
lives. First, the serving
stack. A model id is a label.
The provider is the runtime:
different tool parsers, vision
that pretends to work, effort
knobs that no-op, and 200s
with empty content. If your
evals ran on first-party and
prod falls back to whoever is
cheap tonight, you did not
evaluate the system you ship.
Pin what you can, record which
host answered, and treat “no
content, no tool call” as a
hard fail. Second, the
outbound loop. Threat actors
already close a rebuild cycle
against static detections.
Your own agents will do a
friendlier version of the same
thing: retry, rewrite, probe
again. If the only check is a
signature or a happy-path
unit test, the loop will walk
around it.
So the extra gates are not
“read every line.” They are
lint and tests that run on
every patch, property checks
on the invariants you named
yesterday, a fuzzer or
end-to-end pass that the agent
cannot skip, and a provider
pin plus empty-completion
retry in the client. Stop
condition for reviewers: if
the gates are green on the
stack you actually serve, and
the extra surface is named,
ship. “Find every possible
problem” is how a higher bar
becomes a rewrite. The bar
is the checklist, not the
vibes.
Checklist
-
Agent patches get more
automated gates than human
patches, not fewer.
-
Record provider, not just
model id. Eval from where
prod runs.
-
HTTP 200 with empty content
and no tool call is a
failure. Retry or throw.
-
Do not treat router fallback
as the same model. Pin or
budget the variance.
-
Prefer invariant and
behavior checks over
signatures the loop can
rewrite past.
-
Reviewer stop: gates green
on the served stack, extra
surface named. Then ship.
This morning: pick one agent
path. Log which host answered.
Fail closed on empty
completions. Add one check
the agent cannot satisfy by
rewriting the same test.