Original Reddit post

we’ve been building a real SaaS for the past month. Next.js 16, React 19, Drizzle/Postgres, Better Auth, a Hono API migration, background cron jobs, AI generation flows, admin and employee dashboards, content drafts, browse queues, anti-repetition memory. the whole mess. early on, Claude Code was genuinely impressive. we were iterating daily, changing requirements, features getting added, removed, rewritten and what not. in that phase it kept momentum high it was fast and we weren’t naive about the hallucination problem. CLAUDE.md , migration docs, STATUS.md , HANDOFF.md , DECISIONS.md , API inventories, explicit “do not touch” sections. every session started by reading the same files. every session updated handoff notes. we literally wrote into the repo: “Claude Code sessions lose conversational context over time, so the repo must hold migration memory, not the chat.” for a while it worked. the early stage was fast and honestly kind of insane. the problem started once the repo got complex enough that nothing was local anymore. the repo at this point was a mess. intentionally. we had old Next routes, new Hono routes, callers that were migrated, callers that weren’t, business logic in three different places depending on when we wrote it, cron routes we literally could not delete yet because production still pointed to them, schema that moved but had to keep old import paths alive so nothing broke. this is just what a migration looks like when you’re doing it live on a real product. Claude did not understand that. it would look at one part of the system and assume the whole thing worked the same way. fix the new API path and forget the old route still had callers. move a service and silently cross a package boundary. update the frontend and quietly kill session behavior somewhere downstream. see a file that looked old and clean it up, not knowing we left it there on purpose because we hadn’t cut over yet. after the 4.7 update things got worse. noticeably. like something shifted in how it handles ambiguity. before, it at least felt like it was staying inside the lines we drew. now it just wants to finish. it’ll tell you it read a file when it pattern-matched from something nearby. it’ll say it followed the workflow and technically it did, just not in any way that mattered. wrong conclusions, held more confidently. our mistake was keeping it central after the project crossed a complexity threshold. Claude Code is great when the task is bounded. scaffolding, mechanical refactors, moving code into a known pattern. 0 to 1, or 1 to 0.7 of a production system. but it is not a principal engineer. it doesn’t own architectural memory. it doesn’t understand migration risk unless the risk is literally in front of it. it doesn’t know which compatibility path matters in production. it optimizes for finishing the prompt. we should have switched earlier from “Claude builds features” to “Claude performs narrow patches.” atp its just absolute mess, and rawdogging code with minimal claude code usage. fuck this shit submitted by /u/Tr0jAn14

Originally posted by u/Tr0jAn14 on r/ClaudeCode