Two thousand pull requests in 151 days
engineeringJuly 11, 20264 min read
By

Two thousand pull requests in 151 days

Pull request #2000 merged into this repo on a Friday evening, thirteen seconds after it opened. Here is the confetti, plus the honest footnotes: what the number actually counts, why the pace holds, and what it does not prove.

Pull request #2000 merged into this site's repo at 18:21 UTC on a Friday in July, thirteen seconds after it opened. Pull request #1 merged 151 days earlier, in the second week of February. Between those two timestamps the counter burned through roughly thirteen numbers a day, every day, into one Next.js monolith that is also my personal website. This post is the celebration, confetti included. It is also the honest version: what the number actually counts, why the pace has not torn the place apart, and what it does not prove.

merged · July 11, 2026 · 18:21 UTC
#0
pull requests into one repo, and counting
0
days from PR #1 to PR #2000
0
pull requests merged so far
0s
how long #2000 sat open before merging
0+
tests green on the way in
The milestone band. Every number is real, pulled from the GitHub API the evening #2000 merged. The button does what it says.

What number 2,000 actually counts

First, the footnote that keeps the confetti honest. GitHub numbers issues and pull requests on one shared line, so #2000 is the two-thousandth number the repo has spent, not the two-thousandth pull request. Of the 2,001 numbers used by the time I sat down to write this, 1,680 went to pull requests and the rest to issues, and 1,669 of those pull requests merged. A purist can hold the applause until the two-thousandth literal PR, due sometime around number 2,380 at the current mix.

I am throwing the confetti now anyway, for two reasons. Number 2000 happened to land on a real merged pull request rather than an issue, which felt like the repo cooperating. And the ratio buried in that pile is the statistic I actually care about: a 99.3 percent merge rate. Almost nothing gets opened here that is not intended to land.

From error boundaries to a design editor

The two endpoint PRs tell the story better than the count does. PR #1, February 10: unit tests for three game logic modules, error boundaries, a skip-to-content link. The boring, load-bearing stuff a repo ships when it intends to be maintained rather than admired. PR #2000, July 11: an opt-in cloud store so Atelier, the site's edit-the-site-from-the-site design tool, can carry an in-progress draft across devices.

The distance between those two descriptions is the real milestone. The numbers in between built the games, the essays, the household tools, the research corpora, and the pipelines that now draft, gate, and publish most of what you are reading. Nearly every one of those PRs was written by an AI agent working inside this repo and merged by one human, a setup I have documented in the parallel-agents build log and the concurrent-sessions post. The unit of work here is the pull request: one branch, one intention, one merge, even when the diff is a single line.

Two thousand pull requests is not a velocity story. It is what the counter reads when merging becomes the cheapest safe thing the repo can do.

Why the pace holds

The honest answer is gates, not heroics. Every PR runs a suite that is now north of 7,800 unit tests, and game-touching changes pass a deterministic playtest gate that boots the production build and taps through the library on a simulated phone. Content has gates of its own: this very post had to pass a merge test that forbids em dashes and checks the stated read time against the word count. Even the crons that keep the site alive get audited for silently doing nothing.

Several Claude Code sessions run against main in parallel, and main moves twenty to sixty commits on a busy day. The convention that keeps that from being chaos is deliberately dull: registries append, conflicts resolve keep-both, and nothing merges red. When merging is cheap and safe, batch size falls, and the PR count climbs as a side effect. The count is the exhaust, not the goal.

What two thousand is not

It is not two thousand features. A fair share of those PRs exist to fix the PR before them, and the milestone itself makes the point: #2001, merged about twenty minutes later, spent part of its diff repairing a build break that #2000 shipped. For exactly one PR of the celebration window, main did not build.

Review here also does not mean a second human. It means the gate suite plus one person reading diffs that agents wrote, which works for a personal platform and is not a claim about what a team with users and revenue should do. And a PR count measures batch size, not value; I could double it tomorrow by splitting every change in half, and the site would be no better. What the number does measure honestly is how cheap change has become, and cheap change is the property everything else here depends on.

Here is to the next thousand

The site already has surfaces built for looking back: the changelog writes itself a weekly issue, and there is a daily comic strip whose literal premise is a human and his agents building a site that will not stop building itself. Milestone posts are rarer, and this one earns its confetti. If you want to see what all those merges add up to, the live system map is the picture; if you want to watch the counter move, the pull request list updates most hours of most days.

The counter was at 2,001 before I finished writing this. Here is to the next thousand.

Experience it yourselfSee what two thousand merges built: the live system map
ShareXLinkedInHacker NewsEmail

Get the next one

An occasional note when something genuinely new ships here — essays, free tools, projects. No schedule, no filler, easy out.

Need something like this built?

I design and ship AI tools, full-stack apps, and data pipelines — end to end, to production. Tell me the problem in a sentence; I'll give you an honest read on fit within a day.

Work with me →