Intro0:00
Hi everyone, I'm Sachin Gupta, and I'm a Software Engineer. The title is exactly what it sounds like: your coding agent is creating review debt. Before I start, sit with the title for a second. Notice what it is not saying.
I'm not saying that coding agents are bad. I'm not saying they don't make us faster. I'm saying they're creating a kind of debt that nobody is measuring. And that debt is going to come to you over the next few minutes.
Here is what I'm going to do: I will define what review debt is. I'll walk 5 signal families that are going to compose it. I'll score 3 real pull requests side by side. And I will show you a cross-repo scan of over 500 PRs, which is nothing but 3 public codebases.
So let's go.
The Gap0:49
So look here. Here's the gap nobody is measuring: GitHub's 2025 October's report that covers almost every public pull request on the planet shows that the commits climb 25% year over year. And now, over the same year, comments on the commits drop 27%.
Now, these comments are nothing but the proxy for review activity. Code production volume actually went up, but the review attention went down. They moved in opposite directions. That too in the same year. Now look at the teams for this along the AI adoption curve.
Pharos AI tracks this cohort in their 2026 benchmark. Median PR review time is up by 441.5%. And if you see, like, if you calculate, you'll figure out that the reviewed PRs take 5.4 times longer than what they used to.
And then 31% more PRs are now merged with no review at all. So AI produced AI is producing the code very fast. AI is producing the pull request very fast. But humans cannot responsibly review them at that pace.
This gap is called review debt. It actually accrues quietly. It compounds. Andright now, nobody has a number for it. But by the end of this talk, I will make sure that you will have a certain number.
Vanity Metrics2:12
Now, if you look at this particular slide, here is the story every team is tellingright now. PR per developer are up 16%. That's the Pharos AI acceleration whiplash benchmark. And that too from April 2026. There were, like, 22,000 developers, 4,000 teams.
And the median PR size is up 63%. 44 lines to 72 lines per pull request. That is basically 16 months of long-term data from DX 2026 study, which includes 400 organizations. Now, if you see the cycle time open to merge, that is modestly down.
And it is coming from the same DX study. The framing is very generous. PR throughput grew actually about 8%. And the AI usage rose about 65%. The gain that we see today is real, but it is actually smaller than the hype that is present.
Every one of these numbers are real. None of them is a lie. But every one is a vanity metric. PR count goes up when 1 PR splits into 7 PRs. Median PR size going up is not a benefit.
It's actually a bloating. Cycle time going down when reviewers stop pushing back. These things tell you the speed of production. They do not tell you the speed of trust. Now we will go into the next slide to see more.
Now, if you go looking for the second story, here is what you're going to find: reviewer fatigue. Engineers carry far more review load than a year ago. They're not happier about it. Late-night merges. PRs are sitting unreviewed for 3 days, 4 days, and then they suddenly get a thumbs-up at 11:00 p.m.
Hidden Costs3:43
before a Friday deadline. Test theater. Tests are getting added, but they are actually asserting what the code did, not what the code should do. They lack in behavior, including bugs. Architectural drift. Again, the same problem that is solved in 3 different ways in 3 different files.
Nobody is actually holding up the architectural thread. Finally, incident lag. When something breaks, the bug lands week or months after month after merge. Nobody connects the dot back to the AI author change. These costs don't show up in any dashboard until now.
We'll look into the next slide to know more about it. So now, let me give you the definition. Review debt. It's the accumulating gap between code your agent has produced and the code humans have actually reviewed, trusted, and understood.
Definition4:43
It rhymes with technical debt, but it is more like financial debt because it compounds. It actually accrues interest. But this interest is not money. This interest is paid in human attention. It compounds because of the 3 feedback loops.
First, the agent learns from your codebase: fine-tuning, rag grounding, in-context suggestions. Code that was not deeply reviewed yesterday grounds tomorrow's PR. This debt becomes generative in nature. Second one, reviewers see the architectural call. When most of a PR was generated, attention contracts to syntax and obvious bugs.
Big picture decision moved from review time to never. Third one, velocity expectations reset. Once leadership sees the new throughput, you don't get to hire reviewers in proportion. There is no slack left to pay the debt back. Each loop, on its own, is survivable.
Measuring Debt5:54
Together, you will have a runway. But the next question is: how are you going to measure it? So how do we measure review debt? There are 5 signal families that has, like, 10 deterministic checks. Remember, the keyword here is deterministic.
Every check is computable from a pull request and its repository. No, we don't need any language model. Why? Because LLM, when it acts as a judge, it possibly can break 2 things. Number 1, the score becomes a moving target.
The same PR, basically the score that you got for the same PR, will score differently when your model will change. 2, the score stops being defensible in an engineering review. You cannot put it on a slide. You cannot put it in front of leadership.
So what do you want? You want a number that is traceable to a deterministic computation. Different size and coupling. Second, test evidence gap. Third, directory and ownership spread. Fourth, AI authorship indicators. Fifth, evidence and rational gaps. So these are the 5 families that will have 10 checks under them.
Let's walk each of them. The first one, the first signal that we have is diff size and coupling. This is the simplest one to calculate, basically. It's also the most often misread. What it measures is the net lines change.
The files touched. Whether changes cluster in one module or is it sprawling across many. Why the agent is struggling here? Agents are biased toward fix at the call site. A human engineer routes a fix to the root cause.
That keeps the difference very small. But an agent will reach into many files looking for the same symptom. The reviewer cost of a sprawling difference is not proportional to the size. It is actually much steeper. So the cost pile coupling explodes the mental model, and reviewer has to hold.
We'll look into the second signal, which is test evidence gap.
So what is test evidence gap? Test evidence gap is nothing but test lines added divided by the production's line added per pull request. So AI authored PRs, they ship with a far lower test-to-code ratio. Sometimes there is no test file in place.
And if there is any, it's minimal. So this gap is actually a consistent gap. And the problem with this particular thing is the number. The reason this number is basically brutal is the agent generate test. They generate a lot of test.
But these tests basically assert what the code is doing. It bas it does not generate the test cases what the code should actually do. They lock in the behavior, including the bugs. The ratio does not capture the quality gap.
It just measures whether the test showed up at all. So the deeper signal is the next step that is a layer down. We'll see the next one, which is directory and ownership spread.
So what is directory and ownership spread? Count the distinct code owner teams whose file appear in the difference. Now, what does it mean? Basically, a well-shaped PR concentrates in one team territory. But a sprawling one reaches across many team file.
And the reviewer cost is enormous in this scenario. No single human hold the whole mental order model. You need multiple approvals from multiple engineers in multiple different contexts. The coordination overhead easily exceeds the time the agent save producing the code.
This is where you start to feel the economics of review debt. The agent gave you 3 hours of typing. You spend those 3 hours buying multiparty reviewer attention back. And the next one we are going to see is AI authorship indicators.
So what is AI authorship indicator? Before everyone gets defensive, this is not for the blame. We are not flagging that engineers use coding agents. We made the scores who are PR-shaped, like agent-assisted authorship, get extra reviewer attention. So that way, you know,right, like, okay, this is the PR that is directly coming from the agent.
And there are, like, the very common 3 detection mode. I must, I think everyone must have seen it by now. One is the co-author footer, which is basically one of your strongest signals. You see that co-authored by Copilot.
Second one is the branch name pattern. Generally, you must have seen. It says Codex, Copilot, cursor prefixes. Third one is basic generated by, assisted by, which is nothing but your PR body or commit message phrases. We did actually a real data check on 3 public repos, which comprised of 524 PRs.
I'm not going to name the company. But for the sake, we are just calling it A, B, and C. Now, if you see, the highest signal was the co-author footer. And the second one, the lowest signal, was 0% on the repo C.
Even though it was done by coding agent, but they might have blocked it, saying any co-authored or, like, generated by, etc., etc. The next thing that we are going to see is evidence and rational gaps.
So evidence and rational gaps. I think this is one of the most deterministic that I personally feel. It's the one that destroys review ability the fastest. What it measures, basically. Does the PR explain the why, or just the what?
On the left, if you see, we have an high gap. On theright, we have a low gap. The title says fix flaky test. And all the data that you are seeing here is actually from some public repos. Now, the PR body length is 18 characters.
The commit message says updates. Obviously, I will not be if you gave it to me, I won't be able to review this. Okay, I cannot accept this. But on theright, if you see, when there is actually a low gap, the title actually is telling you what the change is all about.
The body has a symptom, the diagnosis, the change, and the link to the benchmark. Now a reviewer can do the job. So in our regression fixtures and hands code teams, this signal destroys reviewability fastest. In the real open source data, PR bodies follow conventional commit formats.
So it fires most rarely there. But if you see, the regression fixtures are just the demos. Okay, let's see how those 5 signal combined. You will only have one number that is going from 0 to 100. And the exact weights are basically your defaults.
Now, if you are planning to adopt this, I would like you to do this first. Run it backwards over the last 200 PRs that have been merged in your company. Calibrate the weight against your team actual reviewer experience.
The score has to feelright against your actual guts. We you are going to divide it into 4 bands. If you are 0 to 24, which means you have very low review burden. If you have 25 to 49, you are normal.
Proceed with the standard care. 50 to 74, you need evidence from the author before senior review. And if you are 75 and above, definitely it's high split or request more context. Same shape as technical debt categories, but the unit is different.
Now, we are going to see what the scanner actually did.
Now, if you see, this is the clean PR. Unfortunately, I won't be able to give you a live demo today. But I will walk you through a CLI. I want you to show 3 score pull requests side by side.
Scoring PRs13:24
The level where the framework become useful as a repeatable review conversation. This is the first one. If you see, this is what the scanner says when a PR is well-shaped. Score out 0 out of 100. The burden is basically nil.
It's 0. We have a low review burden. The estimated minutes is 6. No checks were fired. And if you look the structure here, that is why the list is empty. Reviewer focus is empty. Author next action is empty.
The framework only generate advice when it has something specific to say. A healthy PR produces a tiny, almost ceremonial report. That's exactly what you want. And the takeaway is most healthy PRs produce 0 noise. They get the work done without making any noise.
This is not a tool that complains by default. Running it on every PR costs you 1 comment that says look good. That's it. Let's see the high debt PR now.
Now, you see, what you see actually on the screen is from a public repo. This is a real scenario from the scanner regression suite. If you see, the score is here, 60 out of 100. It requires evidence. It's on the orange, it says needs evidence.
86 estimated minutes of review effort. Look at the structured output. It's actually not a score. A wire list explaining what fired. A reviewer focus list telling the reviewer what to do next. An author next action list telling the author how to bring the score down.
This is the part most PR quality tool miss. The score alone is useful. The structured advice is what actually moves the team behavior. Now, if you read the bullet 4, it says PR has soft indicators of AI-assisted authorship.
This is information only, not a definitive claim, and not a penalty on its own.
This particular sentence is in the scanner output. The AI indicator check contributes 5 of the 60 points, which is nearly about 8%. The other 55 came from a different size claim mismatch and missing test. Those would be high burden signals on any PR.
Agent authored or not authored. This is not an anti-AI scorecard, basically. This is more of a review burden scorecard. The agent did not cause the score. But the shape of the PR that is created by the agent did this.
Let's see the next one.
This is the PR, basically, which is AI authored. It's very well-shaped. And the score is 7, which is low review burden. Now, if you see the same agent, it has done the same kind of work, but the tests were added.
So the CI is green. The risky path is called out in the PR description. That's why we got the score as 7 out of 100. It's very low burden. Took only 14 minutes. The AI indicator check still fires, but it contributes 2 point.
One, low severity. Second, the framework explicitly says, quoting the report itself, information only, not a definitive claim, and not a penalty on its own. So when your team is going to ask, will this tool penalize us for using coding agents?
No. The answer is on your screen, low review burden. It's a very well-shaped AI PR. We are going to see the next one, which is basically our 3 public repos over 524 PRs. I wanted to show you a 90-day AI search loop across 3 public repos and 524 pull requests.
Cross-Repo Scan17:09
The review burden climbs even when the AI authorship doesn't. If you see this particular scan, we observe 3 things. One of them is the volume is the actual variable. AI authorship was flat, and it was 5 to 20% steady state.
But the review burden was not. If you see, 1 repo accumulated 186 senior reviewer hours in 27 days, and another one took 43. The window length is same, but the volume was not the same. The burden was not the same.
That is what PR volume is. Second is amplifier only holds up under real data, which means AI indicators fired on 5 to 20% of PRs every week across all 3 repos. None of those AI authored PRs disproportionately landed in the high burden band.
The positioning contract holds against real code bases. Third one is complexity drives burden, not authorship, which means across 524 PRs, 4 landed in needs evidence or high bands, which means all 4 were structural changes, which were large migration, SDK rewrites, multi-team refactors.
The framework score complexity fairly. AI-driven volume creates the condition under which these accumulate. So now, what 524 PR look like under the lens? Where does the review debt actually show up? In absolute terms, the scanner saw 524 real pull requests in 3 public repos.
228 senior reviewer hours cumulative across 3 public repos that were scanned over 27 to 90 days windows. Second one is 9 PR per day. Sustained merge rate. A high velocity repo. So if you see, it's all about the volume that is basically driving the burden.
Third one is 5036. These are the minutes that are basically spent on a single PR, which is nothing but 84 hours of review effort estimated for 1 single pull request. The score that we received there was 73, which said it requires an evidence span.
Now, 5 to 20% of these PR every week across every week fire the AI indicator signal. Again, remember, this is volume which is causing the review debt, which is changing the game altogether.
We'll move to the next slide. Measured the problem. We have shown the cost. Now, what do we do about it? So first thing is, you should have 1 logical change per PR. I'm not saying, like, not small PR in the abstract.
Mitigation Habits19:56
1 logical change. That is enough. Second, test ship with the change. Even if the agent wrote the code, even if the agent wrote the test, the human author confirms the test assert what the code should do, not what the code is doing.
What the code is supposed to do. Okay. Third, stay in 1 owner territory. Cross-cutting work splitting into per-team PR. Remain in your own territory. 1 approval, 1 context, 1 mental model. Author writes the why. The agent should not write the PR body.
That's the moment the human author commits to understanding what they are actually shipping. Same review standard for the AI PRs as human PRs. The AI indicator amplifier only fires when other signals are weak. Keep the other 4 strong.
The amplifier is invisible. So make sure there is no exception for AI. None of these is actually requiring you to have a new tool. These are the moves that you already are aware of. You just need to implement it.
Now, how are you planning to adopt this? If you see, we again have 5 steps. Backfill, threshold, surface, aggregate, and talk about it. Backfill. So you run the scorer over your last 200 merged PR. Look at the one, basically, that has the highest score.
Adoption Steps21:16
Second, threshold. Set a, basically, justify line. Default, let's say, you want to give it 50. So any PR scored at 50 or above requires a comment from the author. As simple as that. Surface it. Post the score as a PR comment on every PR.
Don't block it. Just for the visibility purpose, surface it. So that everybody should know what's happening over there. Aggregate weekly per team. Which means the slope of each team deadline is the leading indicator. That's what your engineering manager should watch.
Talk about it. Bring the number to a retrospective. Every roadmap view. In every meeting, you should discuss about that number. Like, what was your score when you did this particular PR? That's it.
Why Measure22:26
Why this number matter? Because of this conversation? Absolutely not. Without a number, what you are just conversing is vibe. But if you have a number, it's actually structured. You can tell, like, okay, with AI coding agents, we have a rollout which has added X percentage of the throughput.
But you need to make sure you are also adding the why points of the review debt that has been occurred over Z weeks. Now, at your current slope, that's roughly N senior engineer hours that you need to talk about.
That moves the discussion from feeling to measurement. So you should always have a number. If you see, 2026, we are adopting things. But 2027 is the year when this conversation will shift to the governance model. And it's actually startingright now.
Can you trust the code that you are shipping? If yes, we are good. If no, then who is accountable when an AI authored change causes an incident? Where is the audit trail? So review debt is basically the bridge between these 2 columns.
It's the first number that lets you have theright-hand side conversation without abandoning the left-hand side gains. We'll look into the final slide now.
Now, 3 things I would like you to take away. First one is, measure the gap. Don't build the tooling yet. Take 20 PRs from the last week. Score them using the 5 signals that we discussed. You will basically get a number so that you will understand, okay, whether the framework is workingright or not.
Takeaways23:45
Try to make the slope visible. The slope of a review debt over time matters more than the level. So plot it weekly. And then discuss it with your team, maybe in a meeting or in a sprint planning, whatever the way you feel like.
Have this conversation. Bring the number to your next review. Like, say that, okay, we do have X throughput, Y debt, and this is the slope. And then you are basically moving away from the vibe culture to the measurement culture.
One quick callout on anti-patterns to avoid. First thing is, approve with comment merges. The AI did the boring part? No. Will we catch it in QA? No. PR are small or not? No. Stop writing LGTM on the PRs.
Make sure whatever we have discussed, the habits that we have discussed, we are going to follow them. This is the entire point of the talk. Thank you very much for listening.





