See it as a diagram
Everything below, as a diagram you can edit. Describe yours and see it in seconds.
No account needed · Editable canvas, not a picture
Cause 1: nothing triggers the update
The most common cause is an information-flow gap: the engineer merging a change has no prompt, no checklist item, and no CI nudge connecting the merge to the page it invalidates. The page does not go stale when someone declines to update it; it goes stale because no moment ever arrives in which updating it is anyone's next action. Wikis fail here structurally, since nothing about editing code ever surfaces a Confluence page.
The fix is wiring triggers into the paths changes already travel: a CI check that notices architecture-shaped diffs without docs changes, an incident postmortem field asking which docs lied, a PR template line for affected pages. The trigger does not update anything; it creates the moment.
# CI step: create the missing trigger. # Warn when architecture-shaped paths change and docs do not. changed=$(git diff --name-only origin/main...HEAD) if echo "$changed" | grep -qE '^(services|infra)/' \ && ! echo "$changed" | grep -qE '^docs/'; then echo "::warning::Architecture paths changed but docs/ was not touched." echo "::warning::Update the affected page or stamp it as still accurate." fi
Cause 2: no owner, or the wrong one
An unowned page can be triggered forever and still rot, because the trigger fires into a void. The wrong owner is subtler and nearly as damaging: a central architect who learns about changes weeks late, or a departed engineer whose name still sits in the header. Either way, the trigger has no hands.
The fix is one named accountable person per page, recorded as queryable metadata rather than prose, with reassignment wired into offboarding. The full argument for why the owning team beats every alternative is in who owns architecture documentation.
Cause 3: a copy of a copy
Some content is born stale because it duplicates a source maintained elsewhere: the architecture diagram pasted as a screenshot into three wiki spaces, the config table retyped from the repo, the endpoint list copied from the API spec. Every copy adds a place the next change must be propagated to, and propagation to the second copy is where it reliably stops.
The fix is structural: one authoritative source, referenced everywhere else instead of copied. For diagrams concretely, that means pages embed a live image URL such as https://datadef.io/api/embed/my-platform-a1b2c3d4 rather than pasting an export; the source diagram changes once and every page showing it follows within minutes, though the project must be shared public for the embed URL to exist. The general pattern is the subject of a single source of truth for architecture.
Cause 4: the update costs more than it returns
Some pages have triggers, owners, and no copies, and still rot, because each update is expensive: 45 minutes of redrawing boxes, or re-verifying a sprawling page end to end. The engineer facing that cost mid-deadline makes a locally rational call to skip it, and the page decays one rational decision at a time.
The fix is dropping the cost, not raising the pressure. Reviews defined as verify-and-stamp cost minutes. Oversized pages get split or culled. And the diagram case, the single most expensive manual update, is where generation changes the economics: an agent connected to the Datadef MCP server can redraw the diagram from what it reads in the repository, one command after a merge or a scheduled CI job, with the honest caveats that nothing watches the repo automatically and API access is on paid plans. When to regenerate an architecture diagram covers picking those moments.
Diagnosing which cause you have
The causes leave different fingerprints. Uniformly old pages across the wiki point to missing triggers. Islands of quality around active maintainers, with rot everywhere else, point to ownership gaps. The same diagram wrong in three places is the copy problem by definition. Pages people visibly complain about but never fix point to update cost. Most wikis have two of the four at once, and the fixes stack cleanly in that order: triggers first, then owners, then de-duplication, then cost.
The four fixes on one line
FAQ
Why does documentation go stale?
What is the most common cause of outdated docs?
Does docs-as-code stop documentation from going stale?
How do you stop documentation from going stale?
Is stale documentation worse than no documentation?