AI Engineer World's Fair 2026

The Death of the Code Review: What the Data Actually Says — Laurie Voss, Arize AI

Read the talk

The Death of the Code Review: What the Data Actually Says

Selected presentation frame from The Death of the Code Review: What the Data Actually Says — Laurie Voss, Arize AI at 126 secondsOpen full source frame
A slide reads, “Coding 8x faster to ship 1.3x faster is a gigantic waste of effort.”

Laurie Voss examines the gap between generating code and shipping software, the mechanisms behind automated review, and the human judgment needed to build systems worth trusting.

From a talk by Laurie Voss

At a glance

Ideas worth remembering

  • Faster generation shifts the constraint toward deciding which changes deserve to ship; human inspection has attention and burnout limits.

  • Mergeability includes regression safety, scope, test quality and maintainability. Passing existing tests establishes only part of that decision.

  • Automated reviewers combine repeated passes, selective findings, tool-assisted investigation and repair, while human acceptance supplies feedback for improvement.

  • Removing humans from individual approvals leaves human judgment in the harness, whose reviewers also need inspection for blind spots and manipulation.

  • Build review systems around explicit quality standards and domain context, then observe production trajectories to check what the shipped system actually does.

741% more code, 30% more software

Code can arrive much faster than a team can decide whether to trust it. Laurie Voss, Head of Developer Relations at Arize AI and co-founder of npm Inc., opens with a study tracking more than 100,000 GitHub developers and matching their activity against telemetry showing when they began using AI. Developers who enabled autonomous agents wrote 741% more code, while shipped software increased by only 30%. In Voss’s account, the study identifies review as the bottleneck between those outcomes.

Generating a change and accepting responsibility for it consume different resources. Agents increase the amount of code entering the pipeline; they do not automatically increase the capacity of the people checking it. Establishing trust remains expensive, particularly when a change touches sensitive code or can damage systems beyond the immediate task.

The migration examples make that imbalance concrete. Voss cites Stripe and Anthropic launch materials reporting a 50-million-line Ruby migration in one day, against an estimate of more than two months of team work. Bun reported moving more than a million lines from Zig to Rust in six days. Generating changes at that scale creates an urgent question: what would justify accepting them?

0:120:42
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:12 · section reference included

A 10,000-line PR meets a human attention limit

The obvious response is to assign developers more review work, perhaps making it their entire job. But sustained inspection has limits. Voss cites a Cisco study conducted over ten months, covering 2,500 reviews and 3.2 million lines of code. Reviewers became less effective at finding defects beyond roughly 400 lines in one sitting, with effectiveness dropping sharply above 450 lines per hour. These figures describe that study’s conditions rather than a universal limit for every codebase.

Follow one 10,000-line agent PR through that constraint. At 450 lines per hour, reading it requires more than 22 hours; Voss estimates three or four working days for a real review. That is one change from one agent. Running several agents increases incoming work without increasing a reviewer’s attention, while turning developers into full-time reviewers adds the burnout problem. “Review harder” does not close the throughput gap.

Selected presentation frame from The Death of the Code Review: What the Data Actually Says — Laurie Voss, Arize AI at 253 secondsOpen full source frame
A slide says it takes three to four days to review a 10k-line pull request.

An alternative changes the unit of human work. Peter Steinberger’s proposal is to design the loops that prompt coding agents, rather than continually prompting them yourself. Voss connects this with Andrej Karpathy’s argument for removing humans from the execution loop. The engineering question becomes whether the loop can inspect enough of the system to make a trustworthy decision.

3:123:42
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

3:12 · section reference included

Passing the grader does not settle “Would you merge this?”

OpenAI’s internal-product experiment takes loop design seriously. Starting from an empty repository, agents produced about a million lines of code and approximately 1,500 merged PRs over five months, with three engineers. Even the agent-review scaffolding was agent-written. Human PR review was optional, and most review work happened between agents. The product’s purpose and source were not disclosed in the account Voss describes, limiting what other teams can conclude about where the approach transfers.

The bet is that loop design can substitute for direct inspection. Its effectiveness depends on visibility: a check can judge only what it can observe. Tests supply an inexpensive proxy for quality, but passing the tests establishes less than a maintainer’s decision to merge.

Selected presentation frame from The Death of the Code Review: What the Data Actually Says — Laurie Voss, Arize AI at 422 secondsOpen full source frame
A slide reads, “Passes tests is not the same as mergeable.”

METR tested that gap by hiring four active maintainers from projects represented in SWE-bench to inspect PRs that had already passed its grader. Maintainers considered only about half mergeable. Rejections included code-quality problems and changes that broke behavior outside the test suite. The agents could not revise their work after feedback, so this measures first-pass mergeability rather than the eventual outcome of an iterative contribution. For the question of removing humans entirely, however, requiring maintainer feedback would restore the checkpoint being tested.

Cognition’s FrontierCode is introduced around the maintainer’s actual question: “Would you merge this?” Voss describes more than 20 maintainers creating 150 tasks from their repositories, each representing more than 40 hours of expert work. The evaluation broadens the decision beyond the requested behavior:

  • Behavioral correctness: Does the change do what the task requires?
  • Regression safety: Does it preserve other behavior?
  • Scope discipline: Does it stay within the intended task?
  • Test quality: Are its checks useful?
  • Maintainability: Is the resulting code suitable for the repository’s future?

The reported contrast is striking: 88% on SWE-bench Pro versus 29% on the hardest slice of a maintainer-oriented evaluation, with another model scoring under 6% on that slice. The benchmark attribution is unresolved because this passage alternates between FrontierCode and Frontier Bench; the model identities are also uncertain. These figures therefore support the reported contrast between test performance and mergeability, without establishing a verified model-by-benchmark comparison. They also describe different benchmark conditions, rather than a controlled test of one isolated review skill.

5:135:43
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

5:13 · section reference included

A review standard can become a training signal

A mergeability benchmark would do more than rank models. Voss draws on Sarah Guo’s explanation of why coding models improved quickly: compilers and test suites provide cheap verification. A training process can repeatedly generate candidates, check them and use the results to improve subsequent behavior. Making maintainability, scope discipline or regression safety similarly checkable would give model trainers additional targets.

Selected presentation frame from The Death of the Code Review: What the Data Actually Says — Laurie Voss, Arize AI at 591 secondsOpen full source frame
A slide reads, “Anything cheap to verify gets beaten, gets trained on.”

That makes writing the rubric consequential. Behavior rewarded by today’s evaluator can become behavior produced by tomorrow’s model. Voss points to CriticGPT, trained by OpenAI in 2024 to find bugs in model-written code, as prior work: humans assisted by the model outperformed either humans or the model alone. Better review assistance can improve the feedback used to train coding systems.

Completeness remains the hard part. A machine-checkable rubric can capture useful parts of human review without capturing every reason a maintainer would reject a change. Voss treats a comprehensive mergeability standard as future work, then turns to the narrower review systems already operating in production.

9:129:42
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

9:12 · section reference included

Automated reviewers must earn attention before they can repair code

Automated review is already a substantial production workload. Voss reports 60 million reviews by GitHub Copilot’s reviewer, accounting for more than one in five reviews on GitHub. That establishes widespread use; useful individual findings still require careful engineering.

Cursor’s architecture exposes several mechanisms for improving those findings:

  • Repeated inspection: Its first reviewer ran eight passes over each diff and shuffled reviewer order because order affected the results.
  • Agreement filtering: Multiple passes can discard false positives. Voss cites a Peking University study reporting up to a 44% improvement in review quality from keeping findings on which passes agreed.
  • Directed investigation: The rebuilt reviewer reasons over the diff, calls tools and chooses where to dig.
  • Default suspicion: The model needed instructions to assume something might be wrong, rather than accept plausible-looking code at first glance.

False positives matter because every reported issue spends a developer’s attention. Repeatedly flagging correct code teaches people to ignore the tool. Default suspicion addresses a separate failure: declining to investigate because the change looks reasonable. A useful reviewer must search actively while keeping its eventual reports selective.

Review is also joining repair. Cursor’s reviewer can spawn a fix agent from a finding, write a patch and return a diff for human approval. Running the code to demonstrate that the reported bug is real is described as a next step Cursor wants to take. Repair reduces the work between finding and resolution, but approving the patch remains a human decision.

Where does the human remain when review produces a repair? The flow below follows a diff through investigation, a finding and a proposed patch. The checkpoint has moved: the developer receives a repair to approve, while the reviewer and fix agent perform the intervening work.

Other vendors address different parts of the problem:

  • CodeRabbit: Voss reports more than 13 million requests reviewed, illustrating the scale of dedicated review services.
  • Greptile: A repository-wide graph helps the reviewer follow a change into distant code.
  • Graphite: Accepted and rejected suggestions form an evaluation set for improving the reviewer.

Human acceptance supplies the common feedback signal. Cursor calls its measure the resolution rate and reports raising it from 52% to over 70%. These companies tune their harnesses against developers’ judgments at scale. Acceptance tells them whether people take a suggestion; it does not independently prove the resulting software correct. Humans still review the reviews.

A review finding becomes a proposed repair

Code diffThe proposed change enters review.
Investigate and reportReason over the diff, call tools and decide where to dig.
Fix agentWrite a patch from the review finding.
Human approvalInspect and approve the returned repair diff.
Investigation and patch generation happen before the human checkpoint; the developer still approves the returned diff.
Read the diagram as text
  • Code diff. The proposed change enters review.
  • Investigate and report. Reason over the diff, call tools and decide where to dig.
  • Fix agent. Write a patch from the review finding.
  • Human approval. Inspect and approve the returned repair diff.
  • Code diff → Investigate and report: Inspect.
  • Investigate and report → Fix agent: Spawn from a finding.
  • Fix agent → Human approval: Return a patch.
11:1111:41
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

11:11 · section reference included

Bun’s port exposes what a passing test suite leaves unresolved

Nicholas Carlini’s C compiler experiment separates being “in the loop” from being “on the loop.” Sixteen agents built a compiler in Rust over about 2,000 sessions, and it could compile the Linux kernel. Humans did not approve each code change, but a human built the test harness and feedback systems that judged the work. Removing per-change approval still left human judgment embedded in the machinery.

Bun’s migration develops the earlier throughput example into a review problem. Agents ported about a million lines from Zig to Rust in six days. The existing test suite served as the gate, and 99.8% of it passed. When the agents deleted the old Zig code in one giant PR, another robot flagged the deletion as “AI slop.” The mismatch is funny, but also useful: judging whether a diff looks plausible is different from checking whether a migration has completed.

Closer inspection changed what the passing tests meant. Voss reports 13,044 unsafe blocks in the Rust port, compared with roughly 74 in a comparable human-written codebase. In her explanation, these blocks place responsibility for memory-safety assumptions on the author. Their count does not prove that many defects exist; it identifies safety obligations that successful public-interface tests do not establish.

Selected presentation frame from The Death of the Code Review: What the Data Actually Says — Laurie Voss, Arize AI at 1014 secondsOpen full source frame
A slide reads, “Thirteen thousand assertions nobody checked,” with smaller figures beneath.

The sequence matters. Agents changed the implementation language. Existing tests checked much of the observable behavior, and those tests largely passed. Inspection then revealed thousands of internal safety assertions outside what the suite was designed to assess. Behavioral compatibility and unresolved safety obligations can coexist. The gate did real work, but it could not answer every question raised by the new implementation.

14:4215:12
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

14:42 · section reference included

OpenAI moved review into execution, logs and recurring cleanup

Returning to OpenAI’s experiment reveals the infrastructure behind optional human review. Codex reviews its changes, calls additional agents to review those reviews and continues until every agent reviewer is satisfied. The system can boot at every change, letting an agent run it, inspect the UI and check whether a bug was fixed. Access to the logging stack adds information that a diff alone cannot supply.

What can this review loop see? The diagram separates the proposed change from the running application and its logs, then shows additional agents inspecting the review. Agreement supplies the stopping condition. Execution and logging broaden the evidence available before the reviewers reach it.

Accumulated low-quality code required another mechanism. For a period, humans spent every Friday cleaning up “AI slop.” That recurring manual work did not scale, so agents were trained to identify and remove it. The response was to improve the inspection and cleanup system rather than ask the same people to try harder.

Experience can still force a reversal. Voss recounts Dexter Horthy spending six months advocating shipping without reading the code, then publicly retracting that advice after large parts of the system had to be ripped out and replaced. His plea, “Please, please read the code,” gives an operational counterexample to assuming that successful generation makes inspection unnecessary.

Some reasons to preserve code live outside its tests. Voss uses a module with three external users and an obscure cron job depending on that module as examples. A change can satisfy the visible task while deleting something another system still needs. Human checkpoints therefore tend to survive where correctness is expensive to establish, consequences are large or someone must accept responsibility for the result.

Execution evidence feeds a loop of reviews

Proposed changeCodex reviews its own changes.
Bootable applicationevidence — Run the changed system, inspect the UI and check the bug.
Logging stackevidence — Expose runtime information to the agent.
Codex reviewInspect the change using available evidence.
Additional agent reviewsReview the reviews; continue until all reviewers are satisfied.
The running application and logs broaden what Codex can inspect; additional agents review its reviews until all reviewers are satisfied.
Read the diagram as text
  • Proposed change. Codex reviews its own changes.
  • Bootable application. evidence — Run the changed system, inspect the UI and check the bug.
  • Logging stack. evidence — Expose runtime information to the agent.
  • Codex review. Inspect the change using available evidence.
  • Additional agent reviews. Review the reviews; continue until all reviewers are satisfied.
  • Proposed change → Bootable application: Boot at each change.
  • Proposed change → Codex review: Inspect own changes.
  • Bootable application → Codex review: UI and bug behavior.
  • Logging stack → Codex review: Runtime evidence.
  • Codex review → Additional agent reviews: Call more reviewers.
  • Additional agent reviews → Codex review: Continue until satisfied.
17:2817:58
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

17:28 · section reference included

The code under review can influence the reviewer

Moving human judgment into a review system creates another review task: checking that system itself. Voss cites Anthropic’s automated security reviewer README warning that the action is not hardened against prompt injection and should review only trusted PRs. A reviewer reading attacker-controlled material can be influenced by that material while deciding whether it is safe.

In a study Voss describes, vulnerable code presented with an innocent-looking commit message fooled an autonomous review agent in 88% of attempts, compared with 35% for human reviewers receiving the same attempts. These rates belong to that attack setup, rather than automated review generally. Within it, the framing influenced acceptance despite the underlying vulnerability.

Selected presentation frame from The Death of the Code Review: What the Data Actually Says — Laurie Voss, Arize AI at 1268 secondsOpen full source frame
A slide reads, “Automated reviewers can be misled 88% of the time.”

Confident presentation compounds the problem because coding agents can supply reassuring explanations alongside faulty code. The review system has to evaluate the change without inheriting its author’s confidence. Evaluating reviewers is itself unsettled: Voss notes benchmark scaffolds leaking answers and disagreement over how to measure review quality. The grader needs scrutiny alongside the code it grades.

20:2920:59
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

20:29 · section reference included

Production is the last reviewer; the practical work is the harness

Once pre-merge review is automated, production behavior becomes the final check against reality. Voss calls it the “last reviewer standing.” The useful object of inspection is the trajectory: what the system actually did, step by step, while interacting with the real world. A passing pre-release test cannot substitute for observing those consequences after deployment.

Selected presentation frame from The Death of the Code Review: What the Data Actually Says — Laurie Voss, Arize AI at 1310 secondsOpen full source frame
A slide reads, “The last reviewer is production.”

Code review becomes an engineered system with several things to inspect: benchmarks, classifiers, rubrics, test suites and evaluations. Humans move from reading every line to designing and supervising those mechanisms. Each layer still needs someone to decide whether it deserves trust.

The closing instruction—“stop reviewing PRs”—is deliberately provocative after the failures just described. Voss’s practical recommendation is to spend human judgment building a reliable review harness: codify what good means, supply company context and domain knowledge, and give agents rules and evaluations they can work against. The earlier exceptions still matter. Expensive correctness checks, large consequences and accountability justify human intervention.

The proposed payoff is greater shipping capacity from judgment applied higher in the system, rather than repeated over every diff. This is a direction for teams to pursue, not a measured speedup guaranteed by the examples. The goal is to explain, with evidence, why the software you shipped deserves trust.

22:0022:30
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

22:00 · section reference included

Resources

Transcript download
Read the transcript and explore slides

Loading transcript and slides…