A retry policy nobody discussed can sit quietly in production for months, then fail at two in the morning under load conditions no one tested. The real risk in AI-generated code is not the bug count. It is the pile of unstated decisions that shipped alongside the working feature.
The Details:
When a prompt is loose, a model fills every gap with a plausible default: three retries, a thirty-second timeout, UTC as the clock, case-insensitive matching. Each choice looks fine in isolation, so it sails through review, because reviewers check whether code runs, not whether its embedded choices were ever intended.
A default becomes load-bearing the moment something depends on it. Users adapt to the behavior without knowing it exists, other systems integrate against it, and data accumulates in the shape it created. What was once a guess turns into a contract, and reversing it stops being an edit and becomes a migration.
The rationale for these choices rarely lives anywhere durable. It is not in the commit history or the design doc; it is in a chat session that scrolled away last week. Since nobody wrote the decision down, nobody can search for it later, which means the system's logic outlives the memory of why it exists.
The fix is to interrogate the code twice: before generation, ask the model to list every default it plans to bake in, and promote the ones that matter into named constants, config values, or pinned tests. After generation, hunt for bare numbers, silent fallback branches, and swallowed exceptions, and ask of each one whether it was chosen or merely defaulted.
Bottom Line: A default nobody chose is still a design decision, and the team that names it before shipping owns its system; the team that doesn't inherits a mystery.
Enjoy this article?
Listen to the Claude Code Conversations radio show or join the community.