What we counted
A bug counts here if all four are true: (1) it shipped through the AI-assisted leg of a paired session, (2) the solo-control leg did not produce the same defect, (3) post-merge regression tests or panel review caught it within 30 days, and (4) the candidate's replay shows the AI suggestion that introduced it.
1,876
AI-introduced bugs
Across 4,200 paired sessions
44.6%
Of all defects shipped
Vs 19.1% solo baseline
12
Distinct bug classes
Mutually exclusive taxonomy
3.2
Mean lines to introduce
Surprisingly low
The taxonomy
Twelve classes cover 96% of cases. Stale-context errors — the AI proposing code against an out-of-date schema, type, or function signature — dominate by volume.
How class shifts by language
The same AI pair fails differently by language. Stale-context errors dominate in TypeScript (fast-moving libraries, schema churn). Wrong-invariant errors spike in Go (silent error returns swallowed in suggestions). Python sees the largest share of plausible-nonsense — code that compiles and reads well but is semantically wrong.
The patterns to watch for
Five code patterns generated 38% of all observed AI-introduced bugs. None of them are exotic — they are the patterns AI is most willing to write at a confident tone.
| # | Pattern | Share | Modal class |
|---|---|---|---|
| 1 | Adapter wrapping a third-party SDK | 11.4% | Stale context |
| 2 | Generic error handler with retry | 8.2% | Silent retry / swallow |
| 3 | Permission check inside business logic | 6.9% | Auth boundary drift |
| 4 | Date / timezone normalization | 6.1% | Wrong invariant |
| 5 | Streaming response transform | 5.4% | Race / ordering |
What we'd change
Reviewers who learned to inspect these five patterns first cut their AI-paired regression rate by 47% in eight weeks. The class taxonomy is in the scoring rubric.