Skip to main content
← All posts

Is it realistic to release code without reading it?

Modulo Team

autonomy

Is it realistic to release code without reading it?

The question comes up in every conversation about AI coding agents. If an agent writes the code, and another agent reviews the code, and a third agent deploys the code - who reads it? The honest answer is: it depends on what you mean by "read."

What does not work

The naive approach is to skip human review entirely and trust the agent's own tests. This fails because agents are good at writing tests that pass, not tests that catch their own mistakes. An agent that generates a buggy function will also generate a test that validates the buggy behavior.

The other extreme - require a human to read every line an agent writes - scales poorly. If an agent produces 500 lines of changes per PR and a human reads every line, the human is the bottleneck. The agent has not saved time; it has just changed who does the typing.

What works

The correction loop changes the risk calculation. Here is the pattern:

  1. An agent produces a change and opens a PR.
  2. Deterministic gates check the diff for secrets, schema violations, and quality thresholds.
  3. If a gate catches a problem, a new run is spawned with the gate's evidence as context. The agent fixes the issue and produces a new diff.
  4. The original PR stays as it was - the audit trail records both the failure and the fix.
  5. Only after all gates pass does the PR reach a human reviewer.

The human does not read every line. They read the gate evidence and the diff summary. If the gates are well-configured, the human's job shifts from "find the bug" to "does this change make sense at the design level?" That is a much more valuable use of their time.

How Modulo handles this

This is exactly how Modulo's correction loop works. When a gate catches a problem, the run produces a new run with the feedback attached. The original stays as evidence. The human reviewer sees the gate results, the original output, and the corrected output - and decides whether the design is right, not whether there is a typo.

We run our own delivery on Modulo, and the numbers are public. The process either catches problems before merge or it does not, and you can check.

The principles behind this: correction never rewrites history - a failed output produces a new run with feedback attached, and the original stays as it was - and deterministic gates catch failures before they reach a human reviewer.