{"slug": "26-repos-in-29-days-with-an-ai-pipeline-what-actually-broke", "title": "26 Repos in 29 Days With an AI Pipeline: What Actually Broke", "summary": "A developer built 26 repositories, 1,549 commits, and 335 live pages in 29 days using an AI pipeline with Claude Code. The project revealed structural failure modes like SEO cannibalization and URL convention drift, rather than syntax or build errors. The developer emphasizes that the model optimizes individual pages but misses site-wide consistency, requiring pre-written conventions and automated audits.", "body_md": "This was originally published on\n\n[the LK Forge blog], where the commit chart is interactive and you can play the AI games it talks about.\n\nBetween June 5 and July 3, 2026, I took an empty domain to **26 repositories, 1,549 commits, and 335 live pages** — one developer, working with Claude Code. The interesting part isn't the volume. It's *which* failure modes showed up, because none of them were the ones the AI-coding debate argues about.\n\n| Repositories | 26 |\n| Days | 29 |\n| Commits | 1,549 |\n| Pages shipped | 335 |\n\nCommit cadence: **~53/day average**, **peak 122 on June 20**, exactly **one** zero-commit day in the sprint. The two heaviest days at the tail (114 each) were a site-wide URL-structure migration — which is itself one of the failure stories below.\n\nDeliberately boring: one developer, Claude Code in the terminal, git for everything, 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.\n\nEvery session ran 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. That verification step is what earns its keep — every failure below was caught by a check, not by luck.\n\n**Working classical-AI engines, first try or close.** The 2048 solver is real expectimax search with a corner-snake heuristic and adaptive depth. Before publishing any performance number, I ran the exact production code through 250 headless self-play games: it reaches the 2048 tile in **69.6% of games at ~0.5ms per move**. The tic-tac-toe opponent is minimax with alpha-beta; the pathfinding in Color Lines is BFS. Textbook algorithms, correctly implemented, shipped in days. That part of the hype is real.\n\n**Volume with consistency.** 335 pages sharing one brand system, one URL convention, one schema pattern. Once a convention was written into a project memory file, the model applied it across dozens of pages without drift. Those memory files turned out to be the highest-leverage artifact in the whole pipeline.\n\n**Audits at a depth a human won't sustain.** Full link-graph crawls, redirect-chain verification across hundreds of URLs, per-page canonical checks against live HTTP. The model does the 400-URL tedium without getting bored — which matters, because tedium is where site-wide bugs hide.\n\nNot one failure was a syntax error, a broken build, or code that didn't run. Every real problem was **structural** — invisible in any single diff, only visible when you look at the whole system.\n\nAsked for a word-tools hub, the pipeline built one — at `/word-tools/`\n\n, while the existing tools lived under `/tools/`\n\n. Two pages on the same domain targeting the same queries: textbook SEO cannibalization, self-inflicted. Search Console showed both URLs impressing for the same terms before I consolidated with a 301. Each page was locally correct; nobody was watching the query-level picture.\n\n**Lesson: the model optimizes the page you asked for, not the site you already have.**\n\nSome tools were built as flat files (`page.html`\n\n), others as directories (`page/index.html`\n\n). On Cloudflare's asset serving those get opposite trailing-slash behavior — so the site accumulated canonical mismatches, two-hop redirect chains, and Search Console redirect errors. The fix consumed the two biggest commit days of the sprint and produced a written URL convention plus a pre-deploy crawl checker that now gates every release.\n\n**Lesson: conventions the model must follow have to be written before repo #2, not after repo #20.**\n\nGame repos are mirrored into the hub site for deployment. Over weeks, SEO improvements were applied to the production mirror and never back-ported to source. The trap armed itself: the obvious \"sync\" — copy source over mirror — would have silently destroyed live metadata. It was caught only because a diff-before-copy check is now mandatory.\n\n**Lesson: any two copies of the same file will diverge, and the AI won't notice unless a check forces the comparison.**\n\nThe first link-graph audit reported a wave of orphaned pages. False alarm: it compared absolute URLs against unresolved relative hrefs. A later canonical audit reported 123 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 caught the same way: probe the live site before believing static analysis.\n\n**Lesson: verify the verifier. An AI-written check inherits every blind spot of the AI that wrote it.**\n\nThe sprint produced 44 working sessions and 826MB of transcripts. When I audited the token bill, the headline wasn't 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.\n\nThe 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 you to notice.\n\nThe fix cost nothing: clear context between tasks, keep durable knowledge in small memory files, 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.\n\nOver the last 28 days the site drew **207 clicks from 7,320 impressions** across 257 pages with search data. For a domain about five weeks old, that's a normal, healthy trajectory — and nobody's growth-hack screenshot.\n\nThe 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 didn't beat one page with something real on it.\n\nEvery one exists because its absence caused a real incident above. That's the only rule-making process that works.\n\n*The live version, the interactive commit chart, and the AI games are at lkforge.com. The 2048 solver writeup with the full benchmark is here.*", "url": "https://wpnews.pro/news/26-repos-in-29-days-with-an-ai-pipeline-what-actually-broke", "canonical_source": "https://dev.to/lucian_lkb_1f009d/26-repos-in-29-days-with-an-ai-pipeline-what-actually-broke-4jlm", "published_at": "2026-07-12 14:20:35+00:00", "updated_at": "2026-07-12 14:45:52.490729+00:00", "lang": "en", "topics": ["artificial-intelligence", "developer-tools", "ai-tools", "ai-agents"], "entities": ["Claude Code", "Cloudflare Workers", "Astro", "LK Forge", "Search Console"], "alternates": {"html": "https://wpnews.pro/news/26-repos-in-29-days-with-an-ai-pipeline-what-actually-broke", "markdown": "https://wpnews.pro/news/26-repos-in-29-days-with-an-ai-pipeline-what-actually-broke.md", "text": "https://wpnews.pro/news/26-repos-in-29-days-with-an-ai-pipeline-what-actually-broke.txt", "jsonld": "https://wpnews.pro/news/26-repos-in-29-days-with-an-ai-pipeline-what-actually-broke.jsonld"}}