A gold acceleration curve climbing steeply from 1,000 manual PRs to a glowing 2,000 milestone

2000 Pull Requests

2 min read
milestone agentic ai

I started RoleReady in August 2025. The first thousand merged pull requests took about seven months. The second took four.

How it used to go

For the first thousand, the loop was ordinary. I wrote the code, opened the PR, reviewed the diff myself, and merged it. The pace was whatever I could type into an editor in a day. When I crossed 1,000 in March, I called the count “mostly a record of showing up.” A thousand PRs by hand is just persistence.

The loop changed

Somewhere between 1,000 and 2,000, shipping stopped being me at a keyboard and started being me with a crew.

I hand an AI firstmate a goal. It breaks the work into tasks and sends out crewmate agents, each in its own git worktree. One agent takes a branch, digs into the code, writes the change, runs the tests, opens a PR, and when the work is within my standing authority, merges it to main itself. A few agents do not write code at all. They read the repo, trace the call sites, and report back so the next agent does not start cold. The firstmate keeps the streams from stepping on each other.

I am one of the slower parts of that pipeline now. The agents row. I steer.

The numbers

  • A focused session lands 40-plus merged PRs. Reviewed, tested, and merged, not just commits.
  • Tests run on every one before merge. That used to be the thing I quietly skipped at 1am. The agents do not skip it, because they do not get tired.
  • Small, atomic changes are the norm now. Big risky mega-PRs have mostly disappeared.

The contribution graph on this site has a tooltip: “agentic flow means this is meaningless tho!” I wrote that before the count got this steep. A 272-commit day tells you how many streams were running, not how hard I worked.

The rough edges

The agents move at machine speed, which means they break things at machine speed too. I have shipped production bugs I would never have written by hand. A recent one was an unmemoized selector that recomputed on every render. An agent “fixed” something next to it and missed the selector, because the selector was not its job.

A crewmate can find a failing case, open a fix, run the tests, and merge before I finish reading the original report. Good for recovery. Also how a bad pattern spreads across the codebase in an afternoon if the first copy looked fine. Guardrails matter more than they used to.

My typing stopped being the bottleneck. My judgment did not, and I am trying to keep it ahead of the agents.