Line-by-line review does not scale to agent output. Rachel Laycock’s point: if every line an agent writes waits for a senior engineer, the result is a new bottleneck, not a faster team.

Give each job a home

Review has been carrying too many jobs at once. Give each one a better home:

  • Machine-checkable rules: tests, static analysis, security scanning and architecture checks gate every change.
  • Design and learning: agree on the approach before implementation, through pairing or a short design session.
  • Human review by exception: architectural shifts, security boundaries, a large blast radius, or unfamiliar critical code.

When agents open forty small pull requests a day, automated checks gate all forty, and the two that touch payment authorization get a named reviewer.

Test at the lowest level

A test pyramid: a few end-to-end tests for key journeys at the top, some integration tests at the seams in the middle, and many fast unit tests at the base.
Open full-size diagram ↗

Most checks belong where they are fast and precise. Add a test for every escaped defect at the lowest level that can catch it, and fix flaky tests instead of rerunning them. Check the checks, too: mutation testing shows whether a suite would notice a planted fault.

Make architecture rules testable

Link each important rule to its ADR and enforce it with a dependency check, contract test or schema validation. When domain code must not reference database infrastructure, a dependency check catches the new reference in the pull request and points the author to the rule. A green check proves only that the encoded checks passed. People still own tradeoffs, and every exception gets a reason, an owner and a review date.

Reviewing fewer lines only works if understanding lives somewhere else. Keep people close to the design, and watch escaped defects and rework.

Related: Linus and Ringelmann · Context engineering