26 Repos in 29 Days With an AI Pipeline: What Actually Broke
Between June 5 and July 3, 2026, this site went from an empty domain to 26 repositories, 1,549 commits, and 335 live pages — built by one developer working with Claude Code. The interesting part is not the volume. It is which failure modes showed up, because none of them were the ones the AI-coding debate argues about.
· 10 min read · all numbers from git logs, session transcripts, and Search Console
The Numbers
Commits per day, all repositories
Average ~53 commits/day. Peak: 122 on June 20. The single empty bar is June 18 — the only zero-commit day in the sprint. The two 114-commit days at the end are a site-wide URL-structure migration (more on that below).
The Setup
The pipeline is deliberately boring: one developer, Claude Code in the terminal, git for everything, and a static-first architecture. Games and tools are self-contained repos of vanilla HTML/CSS/JS; the hub site is Astro. Everything deploys to Cloudflare Workers with static assets at the edge — no backend, no database, nothing to babysit at 3am.
Each session followed the same loop: describe the goal, let the model plan and build, review the diff, make it verify its own work against the live site, commit. The verification step is the part that earns its keep — every failure story below was caught by a check, not by luck.
What the Pipeline Was Genuinely Good At
Working classical-AI engines, first try or close to it. The 2048 solver is a real expectimax search with a corner-snake heuristic and adaptive depth. Before publishing any performance number for it, we ran the exact production code through 250 headless self-play games: it reaches the 2048 tile in 69.6% of games at ~0.5 ms per move. The tic-tac-toe opponent is minimax with alpha-beta pruning; the pathfinding in Color Lines is BFS. These are textbook algorithms, correctly implemented, shipped in days — that part of the hype is real. The full solver internals are written up in How the 2048 AI Solver Works.
Volume with consistency. 335 pages sharing one brand system, one URL convention, one schema pattern. Once a convention was written down in a project memory file, the model applied it across dozens of pages without drift. The memory files turned out to be the highest-leverage artifact in the whole pipeline.
Audits at a depth a human would not sustain. Full link-graph crawls, redirect-chain verification across hundreds of URLs, per-page canonical checks against live HTTP responses. The model does the 400-URL tedium without getting bored — which matters, because tedium is where site-wide bugs hide.
What Actually Broke
Not one failure was a syntax error, a broken build, or code that did not run. Every real problem was structural — the kind that is invisible in any single diff and only shows up when you look at the system as a whole.
1. The pipeline competed with itself
Asked for a word-tools hub, the pipeline happily built one — at /word-tools/, while the existing tools lived under /tools/. Two pages on the same domain targeting the same queries: classic SEO cannibalization, self-inflicted. Search Console showed both URLs impressing for the same terms before we consolidated with a 301 and a sitemap exclusion. Each page was locally correct; nobody was watching the query-level picture. Lesson: the model optimizes the page you asked for, not the site you already have.
2. Twenty-six repos, two URL conventions, weeks of cleanup
Some tools were built as flat files (page.html), others as directories (page/index.html). On Cloudflare's asset serving those get opposite trailing-slash behavior — so the site accumulated canonical mismatches, two-hop redirect chains, and a batch of Search Console redirect errors. The fix consumed the two biggest commit days of the sprint (114 each) and produced a written URL convention plus a pre-deploy crawl checker that now gates every release. Lesson: conventions the model must follow have to be written before repo #2, not after repo #20.
3. Source and production drifted apart silently
Game repos are mirrored into the hub site for deployment. Over weeks, SEO improvements were applied to the production mirror and never back-ported to the source repos. The trap armed itself: the obvious "sync" operation — copy source over mirror — would have silently destroyed live metadata. It was caught only because a diff-before-copy check is now mandatory; the fix was to back-port until source and mirror were byte-identical. Lesson: any two copies of the same file will diverge, and the AI will not notice unless a check forces the comparison.
4. The verification tools lied too
The first link-graph audit reported a wave of orphaned pages. False alarm: the crawler compared absolute URLs against unresolved relative hrefs. A later canonical audit reported 123 canonical mismatches — also false, because the checker assumed file paths equal serving paths, and the CDN serves clean URLs. In both cases the audit tooling — also AI-written — had the bug, and acting on its output would have "fixed" a healthy site into a broken one. Both were caught the same way: probe the live site before believing a static analysis. Lesson: verify the verifier. An AI-written check inherits every blind spot of the AI that wrote it.
The Economics: 93% of the Cost Was Re-Reading, Not Writing
The sprint produced 44 working sessions and 826 MB of session transcripts. When the token bill was audited, the headline finding was not generation cost: roughly 93% of token consumption was cached context being re-read, turn after turn, inside marathon sessions that should have been split up.
The mechanics are mundane. A long session accumulates giant context; every subsequent turn re-reads it; a session that drifts across three unrelated tasks pays the full history of tasks one and two as a tax on task three. The model never complains, so nothing forces the human to notice.
The fix cost nothing: clear context between tasks, keep durable knowledge in small memory files the next session can load in a few hundred tokens, and treat "one session = one task" as the default. If you run an AI coding workflow and have never audited where the tokens actually go, that single check is probably worth more than any prompt engineering.
What It Earned (Honest Version)
Over the last 28 days the site drew 207 clicks from 7,320 impressions across 257 pages with search data. For a domain that is about five weeks old, that is a normal, healthy trajectory — Google is testing pages at positions 20–80 and promoting the ones that prove out — and it is nobody's growth-hack screenshot.
The detail worth reporting: the single biggest click-earner after the homepage is the 2048 game with the visible AI solver — the page where the most genuine engineering lives. Search demand followed the depth, not the page count. 300 thin pages did not beat one page with something real on it.
The Rules That Survived
Every one of these exists because its absence caused a real incident above. That is the only rule-making process that works.
- Benchmark before you publish a number. Any performance claim on the site must come from a measurement you can re-run. If it is not measured, it does not ship.
- Diff before you copy. Any operation that overwrites one copy of a file with another gets a diff first, every time, no exceptions for "they should be identical."
- Probe live before believing static analysis. An audit result is a hypothesis until the production site confirms it over HTTP.
- Write conventions down before scaling them. URL structure, schema patterns, brand tokens — in a memory file the model loads every session, not in anyone's head.
- One session, one task. Context is the real cost center. Clear it between tasks and keep durable knowledge in small files.
- Check the whole site, not the diff. Cannibalization, drift, and convention splits are invisible at diff level. Schedule audits that look at the system.
See the Output Yourself
The clearest artifact of the sprint is the 2048 solver — watch the expectimax search play live, then read how it works under the hood.