Why it matters: AI assistants reuse whatever infrastructure they can see in your codebase, and that reuse silently wires components together in ways no test suite or pull request catches until production breaks.
The Details:
- When an AI tool builds a new feature, it looks for existing patterns rather than inventing new ones. It connects to the Redis instance already running, follows the established log format, and reads the environment variable already defined. This looks like good engineering discipline, but it is actually an uninformed coupling decision, because the model has no way to know that three other services parse that log string or that a midnight cron job depends on that variable.
- Human developers create the same hidden dependencies, but tribal memory usually catches them. Someone on the team remembers not to touch a shared file because the billing job reads it. AI assistants carry none of that memory, and they can generate a dozen components in an afternoon, each quietly inheriting shared seams that nobody documented and nobody reviewed.
- A renamed log line can silently kill an alert that depended on the exact phrase. A renamed cache prefix can break a batch job that invalidated keys by that prefix, leaving stale data until a customer complains. Both changes pass every test, because nobody treated a string as a contract.
- The fix is procedural: keep a living inventory of every shared cache, log format, and environment variable with an owner attached, require pull requests to state what shared resource a new component touches, and give new components their own namespace by default instead of shared access.
Bottom Line: The seams were always there. AI just builds fast enough to expose every one your team never wrote down.