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
An ADR is a dated claim about a moment
The classic format is four fields: context, decision, consequences, status. Its defining property is immutability. You do not edit ADR-0012 when the world changes, you write ADR-0031 and mark the old one superseded. That is what makes an ADR corpus valuable years later: it is the only place the reasoning survives, including the options that were rejected and why.
Nothing in that format is derivable from source code. Why the team picked one queue over another, which constraint made the boring choice the right one, which risk was accepted knowingly: none of it is in the repository, and no generator will produce it.
A generated doc is a claim about right now
The generated architecture doc has the opposite contract. It has no status field because there is only ever one version, the one matching the current commit of the tracked branch. It carries no reasoning, only what the files show: which components exist, how data moves, how the thing deploys, what lives in which directory.
It also only moves when the system moves. Each sync hashes the structure that feeds the document before regenerating anything, so a week of commits touching tests, comments, and prose leaves it untouched. When the document does change, something in the system changed, which is a signal an ADR corpus cannot give you and a wiki page never gave anyone.
That makes it useless as a record and excellent as a mirror. Read it the day you write an ADR and you get an accurate account of the starting state, which is the context field most ADRs fill in from memory.
A split that survives contact
Put state in the generated doc and reasoning in the ADR. When a decision is topological, link the ADR to the living diagram rather than pasting a still, so the record says what changed and the picture shows what exists. A live embed is one markdown line and needs no account to view, which matters because ADRs get read by people outside the team, and by people reading the repository years later.
If you want to freeze a picture next to a specific decision, export the canvas as PNG or JPEG and attach the still deliberately, with the date on it. The point is that the freeze becomes a choice rather than an accident.
Keep the ADR index in the repository where the decisions were made, and keep the generated doc regenerating on the branch. When the two disagree, that disagreement is information: either something drifted, or a decision was made that nobody recorded. Both are worth a conversation before the next design starts.
Concretely, the embed line sits in the context section, where the reader needs the starting state and where a screenshot would otherwise go.
<!-- docs/adr/0031-move-session-store-to-redis.md --> # 31. Move the session store to Redis Date: 2026-08-21 Status: accepted, supersedes ADR-0012 ## Context Sessions are held in the primary Postgres instance, which couples session reads to the write path of the checkout flow. The system as it stands today:  ## Decision ... ## Consequences ...
FAQ
Should generated docs replace our ADRs?
Should an ADR contain an architecture diagram?
What happens when the ADR and the generated doc disagree?
Can Datadef write our ADRs for us?
Where should each document live?