AI Engineer World's Fair 2026
ReviewDebt: a practical framework for scoring every pull request — Sachin Gupta, eBay
Loading slides…
Read the talk
ReviewDebt: a practical framework for scoring every pull request
Coding agents can increase code production faster than teams can establish trust. ReviewDebt turns the shape and evidence of a pull request into a repeatable review conversation.
From a talk by Sachin Gupta
Before you start: Familiarity with pull requests, CI tests, and code ownership is sufficient; no prior knowledge of ReviewDebt is required.
Code production can outrun review
What happens when a team produces more code while giving each change less human attention? Sachin Gupta opens with that gap, citing GitHub’s 2025 Octoverse figures: commits increased approximately 25% year over year, while comments on commits decreased 27%. He uses commit comments as a proxy for review activity. That proxy needs a boundary: GitHub’s separate issue/PR-comment measure was essentially flat, so fewer commit comments alone cannot establish a decline in overall review attention.
The review bottleneck appears more directly in Faros’s 2026 engineering telemetry. Faros reports median time in review increasing 441.5%, or about 5.4 times the baseline, and 31.3% more PRs merging without review. Its methodological explanation describes comparisons between each organization’s lowest and highest AI-adoption periods across two years, rather than a simple year-over-year comparison. These are correlations; the unreviewed-merge figure is a relative increase, not the share of all PRs merged without review.
The concern is compatible with coding agents making engineers faster. ReviewDebt is the gap between producing a change and establishing that humans can responsibly trust it. Gupta’s framework makes that gap discussable through five signal families, three scanner walkthroughs, and a scan of public repositories.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Why the gap compounds
More precisely, ReviewDebt is the accumulating gap between code an agent has produced and code humans have reviewed, trusted, and understood. Its interest is paid in human attention. Three feedback loops make the debt harder to repay as it grows.
First, insufficiently reviewed code becomes material for the next change. Fine-tuning, retrieval-augmented grounding, and in-context suggestions all allow yesterday’s implementation to shape tomorrow’s PR. A questionable pattern can therefore reproduce through the repository. Second, when most of a PR is generated, reviewers can narrow their attention to syntax and obvious bugs. Architectural decisions then move from review time to never. Third, leadership resets its expectations around the new throughput without adding proportional review capacity. The slack needed to revisit old decisions disappears. Each loop is survivable on its own; together, they can sustain continued accumulation.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Measure review burden from the PR
The scoring contract is deliberately deterministic: five signal families contain ten checks computable from a pull request and its repository. An LLM judge would introduce another moving part. Changing the model could change the score for the same PR, making the result harder to defend in an engineering review. A useful score should instead lead back to identifiable properties of the change. The families are diff size and coupling, test evidence, directory and ownership spread, AI-authorship indicators, and evidence and rationale.
Diff size and coupling starts with net lines changed, files touched, and whether the changes cluster within one module or spread across many. Gupta describes a recurring failure mode in which an agent fixes the same symptom at multiple call sites instead of moving the fix to its root cause. That distinction matters more than line count alone: a reviewer must hold the relationships between the changed files in mind. As coupling grows, review effort can rise more steeply than the size of the diff.
Test evidence gap uses a simple per-PR ratio:
Gupta describes AI-authored changes arriving with minimal tests or no test files. Yet generating more tests does not automatically close the gap: a test can faithfully encode an implementation’s current behavior while preserving its bugs. The ratio measures test presence, not whether the assertions express the intended behavior. Human review still has to establish the latter.
Directory and ownership spread counts the distinct code-owner teams whose files appear in the diff. A change contained within one team’s territory may fit one reviewer’s mental model. A cross-team change requires several people to reconstruct different contexts and coordinate their approvals. The typing time saved by an agent can be consumed by the cost of assembling that attention.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Turn the score into a review action
The combined score runs from 0 to 100. Its weights are defaults to calibrate against a team’s actual review experience, not universal constants. Gupta recommends scoring the last 200 merged PRs and checking whether the highest scores correspond to changes reviewers found burdensome. The presentation specifies the signal families and action bands, but not the complete ten-check formulas, default weights, or conversion to reviewer minutes.
| Score | Review action |
|---|---|
| 0–24 | Very low review burden |
| 25–49 | Normal review; standard care |
| 50–74 | Request author evidence before senior review |
| 75–100 | Split the PR or request more context |
These bands turn a number into a next step. A high score should explain what information or restructuring would make review tractable.
The action policy can be represented independently of the underlying scorer:
typescript
type ReviewAction =
| "low-burden"
| "standard-review"
| "request-evidence"
| "split-or-request-context";
function reviewAction(score: number): ReviewAction {
if (!Number.isFinite(score) || score < 0 || score > 100) {
throw new RangeError("ReviewDebt score must be between 0 and 100");
}
if (score < 25) return "low-burden";
if (score < 50) return "standard-review";
if (score < 75) return "request-evidence";
return "split-or-request-context";
}
Keeping the action mapping separate makes the operational decision explicit without pretending that the score itself supplies all the evidence a reviewer needs.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Three PRs, three review conversations
The demonstration proceeds through prepared CLI reports rather than a live scanner run. The clean PR scores 0/100, with an estimated six minutes of review effort and no checks fired. Its Why, Reviewer Focus, and Author Next Actions sections are empty. That absence is intentional: the scanner should generate advice only when it has a specific concern, leaving healthy changes with a minimal report.
The next example, described as public-repository material used in the scanner’s regression suite, scores 60/100 in the Needs Evidence band, with an estimated 86 minutes of review effort. Here the report has three useful jobs: explain which checks fired, tell the reviewer where to focus, and tell the author what to change or supply next. The score establishes urgency; the structured advice makes it actionable.
The report labels soft AI-authorship indicators as “information only, not a definitive claim and not a penalty on its own.” Nevertheless, the AI-indicator check contributes five of the 60 points; the remaining 55 come from diff size, claim mismatch, and missing tests. The intended distinction is conditional amplification rather than a standalone penalty for using an agent. The exact conditional rule is not specified, but most of this example’s burden comes from properties that would also make a human-authored PR difficult to review.
The third PR is AI-authored and well-shaped. Gupta describes the same agent doing similar work, now with tests added, green CI, and the risky path called out in the description. It scores 7/100, in the low-burden band, and displays 14 minutes of review effort. That figure is presented as scanner output, not an established measurement of elapsed human review. The AI indicator still fires at low severity and contributes two points, while the report retains its information-only qualification. AI assistance and low review burden can coexist when the change carries the evidence needed to evaluate it.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Volume accumulates burden even when authorship markers stay flat
The broader scan covers 524 PRs across three public repositories. Gupta initially introduces it as a 90-day view. The central observation is that review burden can rise while detected AI-authorship indicators remain relatively steady. He reports 186 estimated senior-reviewer hours for one repository over 27 days, versus 43 hours for another, describing equal windows with different PR volumes. Those figures are effort estimates from the framework, not time-tracking records.
Gupta reports that AI indicators fired on 5–20% of PRs weekly across the three repositories, without disproportionate concentration in the high-burden bands. Only four of the 524 PRs reached Needs Evidence or High, and all four involved structural work: large migrations, SDK rewrites, or multi-team refactors. Marker prevalence describes detected disclosure, not the true proportion of AI-authored code. Within this scan, complexity distinguishes the hardest individual reviews, while volume determines how much review work accumulates.
The aggregate figures need to be read with their reporting limits. Gupta gives a total of 228 estimated senior-reviewer hours across the three repositories, now specifying observation windows of 27–90 days. That total does not reconcile with the earlier 186- and 43-hour figures, which already sum to 229 hours before a third repository is included. The presentation does not resolve the discrepancy, so the aggregate cannot support a precise staffing calculation. Separately, he reports a sustained merge rate of nine PRs per day for the high-velocity repository.
The most extreme individual PR has an estimated review effort of 5,036 minutes—about 84 hours—while scoring 73 in Needs Evidence. This separates two outputs that should not be conflated: a bounded score used to route review and an effort estimate used to describe workload. A score below the highest band can still accompany a very large review task. Gupta’s operational concern is the accumulation of that work as PR volume increases, not a claim that every AI-assisted PR is unusually difficult.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Make the change easier to understand
The immediate interventions follow the signal families and require no new tooling:
- One logical change per PR: optimize for a coherent review task, rather than smallness in the abstract.
- Tests ship with the change: even when an agent writes both implementation and tests, the human author confirms that the assertions capture intended behavior.
- One owner territory: split cross-cutting work into team-specific PRs where possible, keeping each review within one context and mental model.
- The human author writes the why: Gupta treats the PR description as the moment the author commits to understanding what is being shipped.
- The same review standard applies to everyone: AI-authored and human-authored changes need the same evidence. Gupta describes the authorship amplifier as activating when other signals are weak; strengthening the other four families addresses the underlying burden.
These practices reduce the work a reviewer must reconstruct before making a responsible decision.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Surface the score without blocking the work
A rollout can fit into the existing PR workflow:
- Backfill: score the last 200 merged PRs and inspect the highest-scoring changes.
- Set a justification threshold: Gupta suggests 50 as a starting point; an author supplies a comment for a PR at or above that score.
- Surface the result: post a score comment on every PR for visibility, without making the scanner a merge blocker.
- Aggregate weekly by team: watch the slope of the debt line, not just individual scores.
- Discuss the result: bring it into retrospectives and roadmap reviews so review capacity becomes part of planning.
The justification threshold creates a conversation about evidence. It does not have to become an automatic rejection rule.
That conversation can connect delivery gains to their human cost: an AI rollout added X% throughput, while Y review-debt points accumulated over Z weeks; at the current slope, the associated workload is approximately N senior-engineer hours. The hours component requires a locally credible effort estimate. Its purpose is to make staffing and prioritization discussable alongside production gains.
Gupta forecasts a shift from adoption in 2026 toward governance in 2027. The questions then become concrete: can the team trust the code it ships, who is accountable when an AI-authored change causes an incident, and where is the audit trail? ReviewDebt is intended to connect those questions to everyday review decisions while retaining the productivity gains of coding agents.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Start with twenty PRs and an honest review
Before building the tooling, take 20 PRs from the previous week and score them manually using the five signal families. That small exercise tests whether the framework identifies the review problems the team actually recognizes. Then plot the results weekly: Gupta emphasizes the slope more than the current level. Bring throughput, debt, and the direction of change into the next review or sprint-planning discussion.
The measurement only matters if it changes review behavior. An approve-with-comment merge is not a substitute for resolving a concern. Saying the AI did the boring part, expecting QA to catch the problem, or pointing to smaller PRs does not establish that someone understands the change. Gupta closes by asking engineers to stop reflexive LGTM approvals and apply the habits that make a PR reviewable. The responsibility remains with the people shipping the code.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Resources
From the talk
Faros’s summary of its 2026 engineering telemetry report covering throughput, review, and downstream quality.
DX’s analysis of AI-authorship estimates and median pull-request size across more than 400 companies.
Findings and discussion from DX’s longitudinal study of AI adoption and engineering throughput.
Full transcript
Loading transcript…