<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Lucian (LKB)</title>
    <description>The latest articles on DEV Community by Lucian (LKB) (@lucian_lkb_1f009d).</description>
    <link>https://dev.to/lucian_lkb_1f009d</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4026097%2Feb9247a0-cd26-41b9-9613-ddcb120a9d66.jpg</url>
      <title>DEV Community: Lucian (LKB)</title>
      <link>https://dev.to/lucian_lkb_1f009d</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/lucian_lkb_1f009d"/>
    <language>en</language>
    <item>
      <title>26 Repos in 29 Days With an AI Pipeline: What Actually Broke</title>
      <dc:creator>Lucian (LKB)</dc:creator>
      <pubDate>Sun, 12 Jul 2026 14:20:35 +0000</pubDate>
      <link>https://dev.to/lucian_lkb_1f009d/26-repos-in-29-days-with-an-ai-pipeline-what-actually-broke-4jlm</link>
      <guid>https://dev.to/lucian_lkb_1f009d/26-repos-in-29-days-with-an-ai-pipeline-what-actually-broke-4jlm</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;This was originally published on &lt;a href="https://lkforge.com/blog/26-repos-in-29-days/" rel="noopener noreferrer"&gt;the LK Forge blog&lt;/a&gt;, where the commit chart is interactive and you can play the AI games it talks about.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Between June 5 and July 3, 2026, I took an empty domain to &lt;strong&gt;26 repositories, 1,549 commits, and 335 live pages&lt;/strong&gt; — one developer, working with Claude Code. The interesting part isn't the volume. It's &lt;em&gt;which&lt;/em&gt; failure modes showed up, because none of them were the ones the AI-coding debate argues about.&lt;/p&gt;

&lt;h2&gt;
  
  
  The numbers
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Repositories&lt;/td&gt;
&lt;td&gt;26&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Days&lt;/td&gt;
&lt;td&gt;29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Commits&lt;/td&gt;
&lt;td&gt;1,549&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pages shipped&lt;/td&gt;
&lt;td&gt;335&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Commit cadence: &lt;strong&gt;~53/day average&lt;/strong&gt;, &lt;strong&gt;peak 122 on June 20&lt;/strong&gt;, exactly &lt;strong&gt;one&lt;/strong&gt; 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  The setup
&lt;/h2&gt;

&lt;p&gt;Deliberately 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.&lt;/p&gt;

&lt;p&gt;Every 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the pipeline was genuinely good at
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Working classical-AI engines, first try or close.&lt;/strong&gt; 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 &lt;strong&gt;69.6% of games at ~0.5ms per move&lt;/strong&gt;. 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Volume with consistency.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Audits at a depth a human won't sustain.&lt;/strong&gt; 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually broke
&lt;/h2&gt;

&lt;p&gt;Not one failure was a syntax error, a broken build, or code that didn't run. Every real problem was &lt;strong&gt;structural&lt;/strong&gt; — invisible in any single diff, only visible when you look at the whole system.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. The pipeline competed with itself
&lt;/h3&gt;

&lt;p&gt;Asked for a word-tools hub, the pipeline built one — at &lt;code&gt;/word-tools/&lt;/code&gt;, while the existing tools lived under &lt;code&gt;/tools/&lt;/code&gt;. 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson: the model optimizes the page you asked for, not the site you already have.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Twenty-six repos, two URL conventions, weeks of cleanup
&lt;/h3&gt;

&lt;p&gt;Some tools were built as flat files (&lt;code&gt;page.html&lt;/code&gt;), others as directories (&lt;code&gt;page/index.html&lt;/code&gt;). 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson: conventions the model must follow have to be written before repo #2, not after repo #20.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Source and production drifted apart silently
&lt;/h3&gt;

&lt;p&gt;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 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson: any two copies of the same file will diverge, and the AI won't notice unless a check forces the comparison.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. The verification tools lied too
&lt;/h3&gt;

&lt;p&gt;The 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 &lt;em&gt;audit tooling&lt;/em&gt; — 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.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lesson: verify the verifier. An AI-written check inherits every blind spot of the AI that wrote it.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The economics: 93% of the cost was re-reading, not writing
&lt;/h2&gt;

&lt;p&gt;The sprint produced 44 working sessions and 826MB of transcripts. When I audited the token bill, the headline wasn't generation cost: &lt;strong&gt;roughly 93% of token consumption was cached context being re-read&lt;/strong&gt;, turn after turn, inside marathon sessions that should have been split up.&lt;/p&gt;

&lt;p&gt;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 you to notice.&lt;/p&gt;

&lt;p&gt;The 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.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it earned (honest version)
&lt;/h2&gt;

&lt;p&gt;Over the last 28 days the site drew &lt;strong&gt;207 clicks from 7,320 impressions&lt;/strong&gt; 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.&lt;/p&gt;

&lt;p&gt;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 didn't beat one page with something real on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The rules that survived
&lt;/h2&gt;

&lt;p&gt;Every one exists because its absence caused a real incident above. That's the only rule-making process that works.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Benchmark before you publish a number.&lt;/strong&gt; If it isn't measured, it doesn't ship.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Diff before you copy.&lt;/strong&gt; No exceptions for "they should be identical."&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Probe live before believing static analysis.&lt;/strong&gt; An audit result is a hypothesis until production confirms it over HTTP.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Write conventions down before scaling them&lt;/strong&gt; — in a memory file the model loads every session, not in your head.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;One session, one task.&lt;/strong&gt; Context is the real cost center.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check the whole site, not the diff.&lt;/strong&gt; Cannibalization, drift, and convention splits are invisible at diff level.&lt;/li&gt;
&lt;/ol&gt;




&lt;p&gt;&lt;em&gt;The live version, the interactive commit chart, and the AI games are at &lt;a href="https://lkforge.com/blog/26-repos-in-29-days/" rel="noopener noreferrer"&gt;lkforge.com&lt;/a&gt;. The 2048 solver writeup with the full benchmark is &lt;a href="https://lkforge.com/games/2048/blog-how-the-ai-solver-works" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>showdev</category>
      <category>productivity</category>
    </item>
  </channel>
</rss>
