
A solo developer using AI coding agents hit a CI bottleneck after generating 500,000 lines of code.
By selecting only tests that could be affected by each change, queue time dropped from 7 hours 35 minutes to 35 minutes.
The gain came mostly from reduced queueing under load, not faster tests.
What happened
A solo engineer using coding agents pushed a hobby project to ~500,000 lines of code and generated changes faster than CI could verify them—a scaling problem the author previously encountered only at large organizations like Shopify. By implementing test selection (running only tests a change could affect rather than the full suite), the author cut p95 total CI time from ~7 hours 35 minutes to 35 minutes.
Why it matters
The bottleneck was not test execution speed but queueing delay. With a single runner near capacity, modest reductions in work per change produced disproportionately large reductions in queue time—the 92% improvement came mostly from fewer changes waiting, not faster tests. This shows how AI agents' speed of code generation can force infrastructure rethinking even in tiny teams.
What to watch
The approach relies on useful code boundaries (route files, API files, packages) and a conservative selector that records uncertainty rather than assuming safety. The author still runs the full suite every night and now has capacity headroom; adding runners is deferred until workload genuinely exceeds one machine.
Ask the AI about this article →
The author encountered an unexpected scaling dynamic: one engineer with coding agents produced changes fast enough to recreate a CI throughput problem normally seen in large engineering teams. The bottleneck was not inherent to the codebase size but to the *rate* of incoming changes overwhelming a fixed verification capacity.
The root issue was contention. With one runner and multiple changes queued, each taking ~20 minutes, the queue could grow to hours while the runner cycled through work. Traditional scaling—adding runners—addresses throughput but not the underlying problem: every change still triggers the same test suite, so capacity demand grows with change rate. The author's prior experience at Shopify showed that this approach works but becomes expensive.
Test selection inverted the problem. By reducing work per change (from ~20 minutes to a couple of minutes for localized changes), the runner no longer ran near capacity. Queueing vanished, and spare capacity returned. The 92% reduction in p95 total time was almost entirely from eliminating wait, not from faster execution. This works because TypeScript's compiler provides cheap static dependency information, avoiding the runtime-tracing overhead the author had to manage at Shopify.
The approach has prerequisites: the codebase must have clear boundaries (routes, APIs, packages) that the selector can use to map changes to tests. It also requires conservatism—recording uncertainty rather than assuming safety—and nightly full runs to catch boundary-crossing bugs and refresh runtime data. Under those conditions, verification cost scales with change scope rather than change rate.
AI-summarized, only the topics you pick — one digest a day via Email, Slack, or Discord.
Free · takes 30 seconds · unsubscribe anytime
Ask AI anything about this article. Q&As are published on this page for other readers too.
Palo Alto Networks' Unit 42 expanded its Frontier AI Exposure Analysis service by integrating Anthropic's Clau…

SpaceXAI released Grok 4.6—its latest flagship model—on Google Cloud's Vertex AI platform on August 21, 2026…

PepsiCo's sustainability team has restructured how it publishes environmental and social data, moving away fro…

Google Cloud announced Grok 4.6, its latest flagship model, is now available on Vertex AI through Model Garden

Salesforce reported $11.13 billion in revenue (up 13%) with Agentforce and Data 360 reaching $3.4 billion in A…

SpaceX's AI division has launched Grok 4.6, its latest large language model, on Google Cloud's Vertex AI platf…
