Context
With the org and the docs repo already in place (ADRs 0001 and 0002), the first truly architectural decisions emerge: hosting, authentication, versioning format, branching strategy. Without a formal mechanism, those decisions would be captured as Slack messages, PR comments, or the individual memory of whoever made them. That is fragile: when someone leaves, when an AI agent takes over a module, or simply when six months pass, the "why" is lost.
The Architecture Decision Record format (Michael Nygard, 2011) already solved this problem for many teams. The question is not whether to adopt it, but how much ceremony to apply.
Decision
Every significant architectural or organizational decision is documented as an Architecture Decision Record (ADR) inside internal-docs/docs/adrs/, sequentially numbered, immutable once accepted, and discussed in advance via GitHub Discussions when applicable.
Consequences
- Institutional memory: decisions (and the reasoning behind them) survive changes in people, AI agents, or tools.
- Change traceability: if a decision is reversed, it is made explicit through a new ADR that
supersedesthe previous one. - Simpler onboarding: new contributors read the ADRs and understand the rationale behind the current state without having to ask.
- Discipline when proposing large changes: requiring an ADR forces the evaluation of alternatives and consequences before implementing.
- Process overhead: every "big" decision adds overhead (writing, reviewing, merging). Mitigated by scoping to decisions that cross repos, modules, or people.
- Risk of obsolescence: if no one reviews old ADRs, contradictions can accumulate; mitigated by the immutability + supersede rule.
Alternatives considered
- Freeform documentation in READMEs or wikis: faster to write but lacks structure and immutability; decisions dilute and no one knows which version is current.
- Issues labeled
decision: leverages GitHub's UI but issues get closed and drop out of the main flow; there is no stable numbering or renderable content either. - Slack/Notion for decisions: ephemeral or disconnected from the code; decisions are lost or inaccessible to agents that only read the repo.
- MADR format vs. Nygard plain: we chose a simple variant (Context / Decision / Consequences / Alternatives / References) that prioritizes brevity over exhaustiveness; we can enrich the template later if needed.
References
- Documenting Architecture Decisions — Michael Nygard, 2011 — the original post that introduced the format.
- adr.github.io — community and catalog of variants.
- MADR — Markdown Architectural Decision Records, a variant with rich frontmatter.
docs/adrs/template.md— canonical template used in this repo.- ADR-0021 — dev/qa/main branching strategy — addresses the branching strategy decision called out in this ADR's Context section.