When generation is free, knowing which AI code to discard is the skill

MIT and Wharton data shows massive upstream code gains that fade before release. The highest-leverage move is killing bad agent diffs before they reach a human reviewer.

SaifullahSaifullah
3 min read
When generation is free, knowing which AI code to discard is the skill

Last month an async agent opened four pull requests for a single ticket. Two reimplemented helpers we already had. One changed formatting across the repo. Only the smallest diff matched the acceptance criteria.

I closed three without guilt. That is the work now.

Direct answer: when AI makes typing cheap, curation becomes the scarce skill. Most agent output should die in CI or in a maintainer's first five-minute skim, not in a video call about style.

The funnel math behind discard

The

NBER working paper on AI coding tools

tracks more than 100,000 GitHub developers from commits through releases. Async agents can raise pull request volume sharply while releases move only modestly. AlphaSignal's Sunday deep dive on the same research puts the user-facing label on it: humans still own merge.

That is not a moral failure. It is queue physics. Every diff a human opens competes with customer bugs and roadmap work. Flooding the queue with "maybe useful" code is how teams lose weeks.

Read the full attenuation breakdown in AI agents write 741% more code if you want the table of LOC versus release gains.

Funnel diagram where many agent-generated branches narrow to few merged releases

Signals I use in the first five minutes

Before I read line by line, I check cheap heuristics. If any fail, I request changes or close.

SignalDiscard or restart?
Diff size >> issue scopeRestart with tighter prompt
No test updates for behavior changeDiscard until tests exist
Touches auth, billing, or migrations without owner tagHold for named human
Duplicates existing moduleDiscard; point agent at canonical file
Drive-by refactors in unrelated foldersStrip or close

This is the practical side of From SDLC to ADLC : orchestration includes saying no at machine speed.

What belongs in a discard policy

Teams that scale agents without a written discard lane burn out reviewers. I keep the policy short and public in the repo:

  1. Draft by default. Agents open draft PRs until CI is green and scope is checked.
  2. One issue, one intent. Multi-feature bundles get closed with a link to split issues.
  3. No hero merges on Fridays. High-risk paths wait for business hours owners.
  4. Revert is normal. A fast revert beats a slow debate when the spec was wrong.

Some maintainers have gone further and limited public pull requests when agent spam exceeded capacity. You do not need that drama if internal discard culture is strong.

Maintainer closing low-quality agent pull requests in a GitHub queue

What I would ship

If I were advising a team drowning in agent PRs this week:

  1. Add a PR size bot that flags diffs over N lines without a large-change label.
  2. Require a spec link in every agent PR template field (GitHub Spec Kit or internal doc).
  3. Measure reviewer touches per merged agent PR. Rising touches mean your discard lane is too loose.

For production agent workflows, pair discard rules with runtime validation patterns like those in Greptile TREX and runtime proof so what survives the first cut still proves behavior.

Workflow chart from agent output through automated filters to human merge

Product and distribution still win

The same research bundle notes a marketplace paradox: more apps ship while aggregate downloads stay flat in early windows. Discarding bad code does not fix distribution. It only stops you from mistaking activity for product progress.

If your bottleneck is users, not typing, spend the saved review hours on conversion-focused web and SEO or a focused ops automation audit at /ops-audit.

Need help drawing the line between agent exploration and merge-ready work on your stack? Book a free discovery call.

Share this post

Related posts