Ask a model to fix an off-by-one error and you often get the bug fix plus rewritten input validation, renamed variables, new helper functions and a different plotting path. The diff is huge, and the reviewer now has to re-understand a function that previously worked. This is the over-editing problem: the output is functionally correct but structurally diverges from the original far more than the minimal fix requires, as documented in a study of 400 corrupted BigCodeBench problems where the correct edit was constructed as the exact reversal of a single operator flip or boolean swap (nrehiew.github.io).
The important detail for anyone writing conventions is why tests do not catch it. Over-editing is a brownfield failure: the code compiles, the tests pass, and nothing in CI flags that the model rewrote half the module. The study makes the point directly, that over-editing is invisible to test suites even though it degrades codebase quality over time (nrehiew.github.io). Practitioners describe the same failure and report that the fixes which stick are the ones recorded in the project's own instruction files, not one-off prompt corrections (news.ycombinator.com).
Where the generic behavior comes from
A model has no memory of your repository. It has seen millions of functions, and the statistical center of that corpus is a reasonably defensive, reasonably verbose style that is probably not yours. When it touches a file, the cheapest continuation it can produce is the pattern it has seen most: explicit null checks, type conversion helpers, defensive validation. Nothing about the task asked for those, but nothing in the context forbade them either.
Stack Overflow's guidance for agent coding standards frames the gap as onboarding without tacit knowledge: a human junior learns conventions by watching nearby code and absorbing patterns nobody wrote down, while an agent arrives with none of that and takes nothing for granted (stackoverflow.blog). If your front end uses Express, an agent with no context may produce React, because both are plausible completions of "build a web UI."
The scope problem is the same problem
The pattern shows up in autonomous pipelines too. One practitioner running parallel implementation agents found that instruction-only requests like "only change what the task requires" helped a little and not nearly enough, because from inside the task, renaming a confusing variable feels like doing a good job. The conclusion is the useful part: instructions describe intent, while a guarantee needs a mechanism (dev.to). Conventions files are the intent layer. Hooks and diff budgets are the mechanism layer. You need both, and the intent layer has to be good enough that the mechanism does not fire constantly.



