Repository navigation
Restructure ADRs into short decision records #3744
Copy link
Copy link
Open
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation
Description
Purpose
ADRs must record decisions, not implementations. Today docs/adr/ has 33 ADRs and 689 KB. Several ADRs are 40–94 KB and mix the decision with file maps, measurements, rollout plans, and amendment history. Contributors and agents cannot find the current decision quickly, and the implementation detail gets stale.
Required behavior
- Add
docs/adr/FORMAT.mdwith the authoring rules. Give it its own byte budget in the agent-guidance test. - Split the
AGENTS.mdroute: "Read architecture decisions" goes todocs/adr/README.md. "Write or amend an ADR" goes todocs/adr/FORMAT.md. - Write an ADR only if the decision is hard to reverse, surprising without context, and the result of a real trade-off.
- An ADR contains the decision (API, data flow, invariants, constraints, boundaries), why, the rejected alternatives with reasons, and the consequences and open gaps. Exact names (commands, wire fields, typed reasons) stay when they explain the decision.
- An ADR does not contain implementation inventories, measurements, rollout or migration plans, PR logs, or status change-logs. Each moves to its owner: registries, types, and gates; package docs and help;
docs/evidence/; or an umbrella issue. - An ADR is a living record. The decision states the current truth. An optional dated "Decision history" line records a real change of direction, with its reason and a link. A new ADR is written only when the problem or the scope changes.
- Proposals live in umbrella issues. An ADR is written when a decision is accepted.
Completion conditions
- Each ADR has one classification: keep, merge, move to evidence, or convert to an issue.
- Each kept decision is checked against the code. If the code changed for a good reason, the ADR states the new decision and its reason. If the code drifted by mistake, an issue records it.
- Each PR has a migration ledger: old section → kept, moved to a named owner, or deleted with a reason.
- Each PR updates the code comments that cite the ADR sections that it changes.
- A size gate (about 8 KB for each ADR) runs last, with no allowlist.
Dependencies
- Blocked by docs(adr): write ADRs 0001–0011 and 0013–0017 in ASD-STE100 #3729, docs(adr): write runtime and architecture ADRs in ASD-STE100 #3731, and the stale-facts PR that stacks on them.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
documentationImprovements or additions to documentationImprovements or additions to documentation
Activity
thymikee commentedon Oct 16, 2026
Decision: classification of the ADRs (maintainer, 2026-10-16).
docs/evidence/. It is a measurement, not a decision.docs/evidence/. Keep only a general decision, if one passes the three-condition test.docs/evidence/. Merge their lasting decisions into ADR 0019.thymikee commentedon Oct 16, 2026
Decision: results of the ADR decision audit (maintainer, 2026-10-16).
Four read-only audits checked each decision of each kept ADR against the code at
bd4fd688e7. About 33 differences are deliberate: the ADR text follows the code, with one dated "Decision history" line when the direction changed. These differences are real drift, and the code gets fixed:--recordcorrections.Error.packages/daemon/src/sessions/.Text-only drift (ADRs 0007, 0011, 0012, 0025) is corrected in the restructure.
ADR 0012 splits into about five short ADRs, one for each independent decision: no unattended selector rewriting; resolution disclosure; portable target identity; resume and divergence; repair ownership. Each contract that lives only in ADR 0012 gets an owner before it leaves the ADR.
The classification in the first
Decision:comment still fits: every kept ADR passes the three-condition test.thymikee commentedon Oct 16, 2026
Current state: 2026-10-16.
Merged:
Open, ready for review:
--recordcorrections).Ready, not opened:
docs/adr-stale-facts: 21 stale facts in ADRs and code comments. It opens after docs(adr): write ADRs 0001–0011 and 0013–0017 in ASD-STE100 #3729 and docs(adr): write runtime and architecture ADRs in ASD-STE100 #3731 merge.Next step: after #3729, #3731, and the stale-facts PR merge, add
docs/adr/FORMAT.mdand the twoAGENTS.mdroutes. Then start the pilot on ADR 0003/0008 and the split of ADR 0012.