Continuous Review: Verify During Development
Why waiting until the PR gate is too late. How continuous verification during development reduces review burden and catches problems early
The PR gate is too late
Most teams treat code review as a gate at the end: write code, open a PR, wait for a reviewer. That worked when humans wrote every line and PRs were small. It doesn't work when AI agents generate hundreds of changes across a feature branch before anyone looks at the result.
By the time a PR is open, the problems are already baked in. Structural drift happened three commits ago. A guard clause was removed in the second commit and never noticed. The auth boundary widened in a refactor that looked like cleanup. The reviewer sees a wall of changes and either skims or spends an hour reconstructing what happened.
Waiting until the PR is up to start verifying is like waiting until the building is finished to check the foundation.
Review during development, not after
The teams shipping safely with AI don't save all their review for the end. They verify continuously, during the development cycle itself.
That means running verification after each meaningful change, not just before merge. When an AI agent finishes a task, the developer checks what actually changed before moving to the next prompt. When a feature branch has five commits, each one has been verified before the next one builds on top of it.
This isn't "review more." It's review earlier, when the context is fresh, the changes are small, and the cost of fixing a problem is minutes instead of hours.
A CTO running 1,000+ PRs per week from AI agents described it: "Someone needs to watch the kids. That's CI/CD. That's the new battlefield." But CI/CD runs at the end. The real leverage is verification during the session, before the branch is even pushed.
From spec to merge: verification at every stage
A continuous review cycle has checkpoints at each stage, not just the last one.
During planning. Before writing any code, the spec defines what "correct" means. What should change, what shouldn't, what constraints apply. Without this, there's no way to verify whether the implementation matches the intent. An architect described the problem: "I start every review by reconstructing what 'correct' currently means for that area of the codebase." If that reconstruction happens before development starts, the review at the end gets simpler.
During implementation. After each significant change, verification runs locally. The developer sees what structurally changed, what the risk signals are, and whether anything was missed. Problems are caught when they're one commit old, not twenty. This is where most issues are cheapest to fix and where the developer still has full context of what they intended.
Before push. A final local verification pass covers the full diff against the base branch. This is the developer's own quality gate before involving others. It catches accumulation effects that individual commit reviews might miss: small changes that compound into a large blast radius.
In CI. The same verification runs automatically on every PR. This isn't the first time anyone sees the results. It's the last check, confirming that what the developer already verified locally still holds. If CI is the first time problems surface, the process upstream failed.
Why CI alone isn't enough
CI catches problems, but it catches them at the most expensive point. The branch is pushed, the PR is open, a reviewer is assigned. If CI flags something, you're now in a fix-push-wait cycle that adds hours or days.
More importantly, CI runs after the developer has lost context. If a problem was introduced three commits ago, the developer has already moved on. Reconstructing why they made that change and what the right fix is takes longer than it would have at the time.
CI is necessary. It's the safety net. But it shouldn't be the primary mechanism for catching issues. The primary mechanism should be local verification during development, with CI confirming what was already verified.
The compounding effect
When verification runs continuously, each review is small. A single commit is easy to understand, easy to verify, easy to fix. When verification only runs at the end, the reviewer faces the accumulated complexity of every change at once.
This is the same principle behind small PRs, but applied to the verification process itself. Small, continuous checks are easier than one large review. The total time spent reviewing might be the same or less, but the quality of each review is higher because the scope is manageable and the context is fresh.
Teams that verify continuously report spending less time on final PR review, not more. The CI gate becomes a confirmation step, not a discovery step. Reviewers focus on intent and architecture instead of reconstructing what happened.