---
title: "The pull request nobody could review"
description: "An agent's 3,100-line pull request passed every test and was approved in 25 minutes. It had quietly changed how money rounds. Why AI-DLC caps the unit of work."
type: Field note
url: https://sunilkumar.ai/notes/the-pull-request-nobody-could-review/
author: Sunil Kumar (https://sunilkumar.ai/about/)
datePublished: 2026-09-06
pillar: Field notes
tags: [ai-dlc, code-review, engineering-teams]
license: CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
---

# The pull request nobody could review

An agent's 3,100-line pull request passed every test and was approved in 25 minutes. It had quietly changed how money rounds. Why AI-DLC caps the unit of work.

A claims platform for an insurer, third month of an [AI-DLC](/ideas/ai-dlc/) engagement. Five people in the pod, agents opening most of the pull requests, and a feeling in the room that the hard part was behind us. The ticket was ordinary: let a claim be settled in two or more partial payments instead of one. It named three modules.

The agent finished it on a Tuesday night. 3,100 lines across 47 files. All 212 tests green, 38 of them new and written by the agent. A tidy description on top. The senior engineer on review opened it at nine the next morning, read the description, read the new tests, scrolled the diff for twenty-five minutes and pressed approve.

You know this pull request. You have approved it. So have I. Nobody reads 3,100 lines at nine in the morning, and the tests were green.

Twelve days later the client's head of finance stopped a settlement batch. Thirty-eight thousand settlements, and the reconciliation against the ledger was out by $61. She rang the CTO. The CTO rang me. Sixty-one dollars is not a lot of money. A reconciliation has to be out by nothing.

It took two people most of a day to find. To make partial payments add up to the claim total, the agent had changed the shared money helper to round each line item before summing, instead of summing once and rounding at the end. That made its own tests pass. It also moved roughly one settlement in nine by a cent or two, on every product on the platform, not just claims. The ticket had not mentioned rounding. The description had not mentioned the helper. The diff had. File 31 of 47, line 2,140.

The fix was one line and a revert. The retro was harder. Nobody blamed the engineer; he had done what every reviewer on the team had done for two months, and he was the first to say so. Nobody blamed the agent either. It had taken the ticket literally and made everything green, which is exactly what we ask agents to do. The fault was in the process, and the process was ours. We had let the unit of work be "the ticket", so a piece of work a person would have spread over a week arrived as one thing a person could not read in a morning. We had a gate on the board called review of intent. We had been waving things through it.

Three rules came out of that retro, and every pod at Ailoitte runs them now.

One: a unit is small enough to review in twenty minutes, and the agent splits its own work to fit. On that platform the median pull request dropped from 3,100 lines to about 260. There were more of them, thirty-one a week instead of nine, and every one was read.

Two: the acceptance tests are written and accepted at the plan gate, before any code, and the agent may not edit an existing test. If it needs to, it stops and says why. The rounding change would have broken a test it was not allowed to touch, and the story would have ended on the Tuesday night.

Three: every pull request carries a section the agent has to fill in: files touched outside the ticket's scope, and why. Empty is fine. Not empty means a conversation before approval. In the first month one pull request in six had something in it. Two of those would have been incidents.

![The same 3,100 lines drawn twice. Left: one pull request as a single block of 47 files, with line 2,140 marked in garnet where the money helper changed, read for 25 minutes and approved, $61 out twelve days later. Right: twelve units of about 260 lines, each passing a review-of-intent gate in twenty minutes; unit 8 is flagged because it touches the money helper outside the ticket's scope, so there is a conversation before approval.](../../assets/images/notes/pull-request-nobody-could-review-units.png)

_The same change, once as one pull request and once as twelve units. Nothing about the code is different. What changed is that a person could read each piece, and the piece that touched money said so. The figure is free to share: [download it as a PNG](/images/social/pull-request-nobody-could-review-units.png) (1600px wide, CC BY 4.0)._

What I would do again: cap the unit, not the speed. What I would not do again: treat green tests as a review. A test suite written by the thing under review proves that the thing agrees with itself, the same trap as [an evaluation set written by the team that built the agent](/notes/the-evaluation-set-that-measured-the-wrong-thing/). The [review of intent](/playbooks/sdlc-vs-ai-dlc/), the one question "does this do what was asked and nothing else", stays a human job. Our job is to keep the work small enough for a human to do it.


---
Sunil Kumar, Co-founder and CEO, Ailoitte Technologies. https://sunilkumar.ai/about/
