AI Agents Quadrupled Our PR Count. Cycle Time Went Up Too. Here's the Math Nobody Warned Me About
Why this matters
If you handed your team AI coding agents and your PR count went up 4x while delivery still feels stuck — or somehow feels slower — stop blaming your review culture. It's not that. It's math. Little's Law explains exactly why this happens, and more usefully, it tells you what to fix instead of who to nag.
The dashboard contradiction
Three months after we gave every engineer at PhoenixDX an AI coding agent, I pulled up the dashboard expecting a victory lap. PRs opened per day: up roughly 4x. Lines changed: up even more. Everyone was shipping. Then I checked the number that actually matters to customers — cycle time, PR opened to merged and deployed — and it was up too. Not flat. Up. The same team that felt more productive than it had ever felt was, by the only measure that counts, moving slower.
Nobody was fooling themselves. Every engineer really was faster individually — the agent handled the boilerplate, the tests, the first draft of the migration. The dashboard wasn't showing a productivity problem. It was showing a queueing problem, and it stayed invisible right up until you put cycle time next to PR volume instead of staring at PR volume alone.
Throughput and speed are not the same word
Most teams buying agent tooling right now measure "PRs shipped" or "commits per engineer" and call it throughput. That's not throughput — it's production rate, how fast work enters the system. It says nothing about how fast work leaves the system, which is what your customers and your roadmap actually feel. These two numbers can move in opposite directions at the same time, and the moment you drop an AI agent upstream of a fixed-capacity review process, they usually do.
- ▹Production rate: how fast new work is created (agent output, PRs opened, commits pushed)
- ▹Throughput: how fast work is completed and leaves the system (PRs merged and deployed per day)
- ▹Cycle time / latency: how long a single unit of work sits in the system from start to finish
- ▹An agent multiplies the first number. It does nothing to the second by default. The third one is the one your team feels every single day.
Little's Law: the one tool for today
Little's Law is a queueing theory result so simple it feels almost too obvious to name — and it's inescapable. It holds for any stable system: a coffee shop line, a Kubernetes request queue, your PR pipeline. No derivation required, just the shape of it:
WIP = Throughput × Latency
rearranged, the form you actually use:
Latency = WIP / ThroughputRead it as: the work sitting in your system right now (WIP — work in progress, your open PRs) equals how fast work completes, times how long each item takes. Flood the front of a pipeline with more WIP while the completion rate doesn't rise to match, and latency — cycle time — is mathematically forced up. There's no version of this where it doesn't happen. It's not a heuristic your team can out-hustle. It's an identity, the same way conservation of mass is for a queue.
Where the bottleneck actually sits
An AI coding agent sits upstream of exactly one fixed-capacity stage in almost every team's pipeline: human code review. The agent doesn't review its own PR, doesn't approve its own merge, doesn't carry the institutional judgment about whether a change is safe to ship. That's still a person, still working an 8-hour day, still with the same attention span they had the week before the agent showed up.
So input to review jumps 4x. Review capacity — how many PRs a human can meaningfully evaluate in a day — stays flat, because you didn't hire more reviewers or change how review works. WIP has exactly one place left to go: it piles up in the review queue, and every PR sitting in that queue is racking up cycle time whether anyone's looking at it or not.
The PhoenixDX numbers
These are rounded and illustrative, but the shape is real, and it's the shape I'd bet on for most teams that bolt agents onto a pipeline without touching review:
- ▹Before agents: ~5 PRs/day team-wide, review queue depth ~4 PRs waiting at any time, cycle time ~1 day
- ▹After agents: ~20 PRs/day opened, review queue depth ~16 PRs waiting at any time, cycle time ~3 days
- ▹Throughput — PRs actually merged per day — barely moved, maybe 5 to 6, because that number is capped by reviewer attention, not by how fast code gets written
- ▹Run both through Little's Law: WIP/Throughput ≈ 4/5 ≈ 0.8 days before, 16/6 ≈ 2.7 days after. Cycle time roughly tripled — exactly what the queue depth already told us, before we'd even measured the rest.
Every agent-output metric — PR count, commits, lines of code — went up and looked like a win on any dashboard that stops at production rate. The metric the business actually feels went the other way. That gap is the whole lesson.
The general principle
Add a fast producer upstream of a fixed-capacity stage, and you are not shipping faster — you are building a buffer. Doesn't matter whether the producer is an AI coding agent in front of human review, an LLM inference layer in front of a rate-limited downstream API, or a fleet of autonomous agents in front of a single approval gate. A solution architect's job is to spot the fixed-capacity stage before rolling out the fast producer — not after the cycle time complaints start landing in Slack.
This shows up everywhere in AI-first systems, not just PR review: a load balancer spraying requests at LLM inference workers with fixed GPU capacity queues exactly the same way; a multi-agent pipeline where one slow verifier gates five fast generator agents blows up the same way — just measured in seconds instead of days.
The fix that actually works
"Review faster" is not a fix. It's asking humans to absorb a 4x load increase through willpower, which either burns them out or quietly degrades review quality — often both. The actual fix is matching review capacity to agent output, structurally:
- ▹Parallel reviewers — split review load across more people or rotate a dedicated review shift, so capacity scales with input instead of sitting fixed
- ▹Smaller PRs — cap the unit of review so each item costs less attention; this is the old "keep PRs small" rule, except now it's load-bearing instead of a nice-to-have
- ▹Staged auto-merge for low-risk changes — let a policy (test coverage, blast radius, file ownership) auto-merge the low-stakes slice of agent output, so human attention goes only where judgment is actually needed
- ▹Track WIP and cycle time on the dashboard right next to PR count, so the queue is visible before it becomes a complaint
Notice what the three real fixes have in common: they change the capacity or the unit size at the bottleneck stage. None of them tell the agent to produce less — that would just be throttling the one part of the system that's actually working.
Tomorrow
This same latency-vs-throughput tension doesn't stop at the team level — it shows back up inside a single multi-agent pipeline, where one agent's output is another agent's input queue. Tomorrow we go inside that pipeline and look at where WIP piles up between agents, and why a "fast" multi-agent system can still have brutal tail latency.
Extend your knowledge
- ▹Read the original formal statement of Little's Law (John Little, 1961) if you want the queueing-theory rigor behind the one-line version taught here
- ▹Look at your own team's dashboard: plot PR-opened rate and merge-rate on the same chart for the last quarter — if they've diverged since agent adoption, you already have your WIP problem
- ▹If you use trunk-based development, check whether your PR size distribution shifted after agents started writing first drafts — larger average diffs make the review bottleneck worse even before volume is considered
- ▹Look into your CI/CD platform's auto-merge policies (GitHub's branch protection + required checks, or a merge queue) as the concrete mechanism for staged auto-merge
Discussion
Chat with Chi Cong (AI) about this article. Your conversation is private to you — you can publish a summary for others when you're done.