An AI model can write locally correct code in every single session and still leave you with a codebase that fragments into dialects, because correctness and consistency are judged on completely different scales.
The Details:
Each coding session works from local context only: the open file, a few related files, and the immediate request. It never sees the whole system, so when five reasonable ways to handle an error or name a helper exist, it picks one that works. The next session picks a different one that also works. Neither choice is wrong, but now two patterns exist where one used to.
Sessions have no memory of the reasoning behind old code, only the code itself. The model reconstructs intent from surface patterns, so it will faithfully copy a shortcut that was written under deadline pressure eight months ago. That accident becomes house style, not because anyone chose it, but because it was the nearest example in context.
Growth makes this worse, not better. A twenty file repo is basically fully visible to the model. A two thousand file repo is sampled by retrieval, meaning conventions get decided by which files happened to match a search, not by design or review.
Documentation alone does not fix this because it is advisory: when a written rule conflicts with the code sitting in front of the model, the concrete code wins. A linter, a shared base class, or a failing test works because the rule lives in the build itself, catching drift the moment it happens rather than relying on anyone remembering a document.
Bottom Line: Coherence never emerges from a pile of correct decisions; it has to be encoded somewhere mechanical, or it quietly gets averaged away one reasonable commit at a time.
Enjoy this article?
Listen to the Claude Code Conversations radio show or join the community.