ADR Recovery
Overview
Section titled “Overview”You introduce the practice today. The decisions were made over the previous several years, by people who may have left, for reasons nobody wrote down.
This topic is about reconstructing them — and about the discipline that separates a useful reconstruction from a fabrication, which is the whole difficulty.
Why it is worth doing at all
Section titled “Why it is worth doing at all”Module 8’s size argument: past about a hundred and fifty engineers, nobody holds the whole picture. The accumulated effect is that every cross-cutting change begins with an archaeology phase, and the same architectural questions get re-litigated because their answers were never recorded.
Recovery attacks that directly. But it is expensive and the value is uneven, so the selection matters more than the technique.
Recover the decisions that are currently being questioned. A record that stops a recurring argument pays for itself immediately. A record of a settled decision nobody disputes is archaeology for its own sake.
That one heuristic does most of the work: follow the arguments, not the architecture.
The method
Section titled “The method”graph TD A["<b>1 · Pick decisions being<br/>re-litigated now</b>"] --> B["<b>2 · Reconstruct the<br/>constraints of the time</b><br/><i>not today's</i>"] B --> C["<b>3 · Interview whoever<br/>was there, separately</b>"] C --> D["<b>4 · Mark it reconstructed</b><br/>with evidence and confidence"] D --> E["<b>5 · Record 'no rationale<br/>found' where true</b>"] classDef first fill:#5B8FB9,stroke:#4A7A9E,stroke-width:2px,color:#ffffff classDef hard fill:#E8A33D,stroke:#C4832A,stroke-width:2px,color:#ffffff classDef honest fill:#7D9A4E,stroke:#5F7A38,stroke-width:2px,color:#ffffff class A first class B,C hard class D,E honest
Five steps. The second is where most recoveries go wrong, and the last two are what make the output trustworthy rather than merely plausible.
Reconstruct the constraints of the time. The hard step. A decision that looks indefensible today was often correct against constraints that no longer exist — a dependency that has since been removed, a deadline that has passed, a team that no longer exists, a product requirement that was dropped. Judging a past decision against present constraints produces a record that is both wrong and insulting to whoever made it.
Sources that help: the commit history around the change, the dates, what else was happening that quarter, and whatever written trail exists in tickets or chat.
Interview whoever was there, separately. Module 8’s technique: the differences between accounts are informative. Two people remembering different reasons usually means there were two reasons, or that the real reason was something neither wants to state.
Mark it reconstructed. Non-negotiable. A recovered record carries a visible label — reconstructed from commit history and two interviews; confidence moderate — and never presents itself as contemporaneous. A reconstruction passed off as a record is a fabrication with a template, and when it is found to be wrong it discredits the entire set.
Record “no rationale found” where that is the truth. The most useful finding and the most politically delicate.
When there was no decision
Section titled “When there was no decision”Some things turn out to have no reasoning at all. Nobody chose; it accreted. A boundary exists because of the order two people happened to work in, and Module 8’s Conway analysis predicts exactly this.
Recording that is valuable: it tells a future engineer that the arrangement is not load-bearing, which is precisely what they need to know before changing it. A boundary with a recorded reason must be respected; a boundary with “no rationale found; appears to follow the extraction order” can be reconsidered on its merits.
The delicacy is in the framing. “No rationale recorded” is a statement about the documentation. “This was done badly” is a statement about colleagues, it is probably unfair given the constraints of the time, and it will cost you the cooperation you need for the next twenty records. Module 8’s consistency point applies: you are building a record, not an indictment.
Where AI helps, and where it does not
Section titled “Where AI helps, and where it does not”Module 7 covered this and it applies directly. A model pointed at a repository will propose candidate rationales quickly — it can read the code, the history and the structure, and generate plausible reasons a boundary exists.
Treat the output as hypotheses to verify, not findings. It is confidently wrong in ways that are hard to detect precisely because the output is plausible, and a reconstruction is the worst possible place for a fluent guess. The verification is a human who was there, and where no such human exists, the honest status is “no rationale found”.
What it is genuinely good for: speed on the mechanical part — enumerating what decisions appear to have been made, so you can choose which to pursue.
Feeds the workbook
Section titled “Feeds the workbook”This is the ADR set artifact, which is meant to be uncomfortable. Mark every reconstructed record as such, and include at least one honest “no rationale found” — that entry demonstrates the discipline better than a dozen confident ones.
→ Records explain. Something still has to describe how the system actually works. — The HLD and the proposal