A recent paper, The End of Code Review: Coding Agents Supersede Human Inspection, decomposes peer review into four stated functions — defect detection, style enforcement, knowledge transfer, awareness — shows an agent can perform each, and concludes the human reviewer is substitutable. John Allspaw’s reply names the pattern: the substitution myth, where the loss happens at step one, in the decomposition itself.
What doesn’t survive being broken into functions:
- Reviewer confusion is the finding. When an experienced engineer says “I don’t understand this,” that is the signal — too complex, wrong abstraction, unclear intent. An LLM always “understands” in the sense of being able to process the code, so it can never supply legitimate human incomprehension.
- “Should this change exist at all?” Should this be two PRs? Does this fix the symptom or the problem? Review is often the last or only moment anyone challenges necessity, and the paper assumes necessity and treats review as verification.
- Seeing what isn’t there. A contract changed but the error handling didn’t. Absence blindness is exactly the failure class LLMs are poor at, and the paper doesn’t mention missingness at all.
- Calibrated attention to who wrote it. A junior’s first commit to a payments module gets different scrutiny than a veteran’s routine refactor. The paper treats all diffs as equivalent inputs.
- Review is coactive, not transmission. Discussion is joint cognitive work: both parties end with shared understanding neither had before. A generated summary changes nobody’s mental model.
- Context that lives outside the repo. Last Tuesday’s incident, a downstream consumer about to deprecate an interface, a legal instruction not to log a field. The paper assumes the codebase is the complete context. It never is.
- Skin in the game. Being personally accountable for approving a change shapes how you review it; an agent signing off bears no consequence. The paper acknowledges ethics, then redirects it to “requirements engineering and post-deployment monitoring.”
The generalisable lesson is the three-step shape: decompose human work into measurable functions, show a machine replicates those functions, declare the human redundant. Nothing is hidden in step one — the tacit parts simply never enter the argument, so they can’t be found missing later.
Allspaw’s reframing is the part to keep: code review is not primarily detection. It’s also coordination, sensemaking, and governance.