5.1 KiB
5.1 KiB
title, description, tags
| title | description | tags | ||||
|---|---|---|---|---|---|---|
| ADR Authoring | MADR format structure and best practices for Architecture Decision Records |
|
ADR Authoring
Metadata
Purpose: Provide MADR template structure and ADR best practices Version: 1.0.0
ADR Template
# ADR-XXX: [Short Decision Title]
**Status:** [Proposed/Accepted/Superseded/Rejected]
**Date:** YYYY-MM-DD
**Deciders:** [Names or roles]
**Maturity Level:** [Experimental/Prototype/Production]
**Handoff Impact:** [None/Low/Medium/High]
## Context
[What is the issue we're addressing? What stage of the project are we in?
What business problem or research question drives this decision?]
## Decision Drivers
- [Driver 1: e.g., Must achieve 95% accuracy for business case]
- [Driver 2: e.g., Inference latency must be <100ms]
- [Driver 3: e.g., Solution must be interpretable for business users]
- [Driver 4: e.g., Limited to X budget/compute resources]
## Options Considered
### Option 1: [Name]
**Description:** [Brief explanation]
**Pros:**
- [Advantage 1]
- [Advantage 2]
**Cons:**
- [Disadvantage 1]
- [Disadvantage 2]
**Evaluation Results:** [Benchmark numbers, if applicable]
### Option 2: [Name] ⭐ SELECTED
**Description:** [Brief explanation]
**Pros:**
- [Advantage 1]
- [Advantage 2]
**Cons:**
- [Disadvantage 1]
- [Disadvantage 2]
**Evaluation Results:** [Benchmark numbers, if applicable]
## Decision
We will [clear, active voice statement of what we're doing].
[For production decisions] This will be handed off to [team name] with the following support: [describe transition plan].
## Consequences
### Positive Outcomes
- [What becomes easier or better]
- [Capabilities we gain]
### Negative Outcomes
- [What becomes harder]
- [Capabilities we sacrifice]
### Risks & Mitigation
- **Risk:** [Potential problem]
**Mitigation:** [How we'll address it]
### Implications for Business Team *(if applicable)*
- **What they need to know:** [Critical context for maintenance]
- **What they can modify:** [Safe changes they can make independently]
- **What requires re-engagement:** [Changes that need our team's input]
- **Required expertise:** [Skills needed to maintain this]
## Related ADRs
- Supersedes: [ADR-XXX if replacing an older decision]
- Related to: [ADR-YYY if connected to other decisions]
- Informed by: [ADR-ZZZ if building on previous work]
## References
[Links to detailed documentation, code, experiments, papers, etc.]
Naming and Numbering
Filename format: XXX-title-in-kebab-case.md
Sequential numbering: 001, 002, 003, etc.
Storage location: adr/ directory (Personal standard)
IMPORTANT:
- All ADRs MUST be stored in
adr/directory - If the
adr/directory does not exist, create it first:mkdir -p adr - Do NOT store ADRs in
docs/adr/or any other location
Maturity Levels
Experimental (Tier 1):
- Algorithm selection, feature engineering, evaluation metrics
- Review: Author + 1 peer (1-2 days)
Prototype (Tier 2):
- Infrastructure choices, in-market test design, data pipelines
- Review: Author + technical lead + 1 developer (3-5 days)
Production (Tier 3):
- Production architecture, monitoring, retraining strategies
- Review: Author + technical lead + business rep (5-7 days with meeting)
Handoff Impact Levels
- None: Internal research decision, no handoff
- Low: Minor impact on business team maintenance
- Medium: Requires business team understanding
- High: Critical for business team success, requires training
Status Lifecycle
- Proposed - Under review, not yet accepted
- Accepted - Approved and active
- Rejected - Considered but not chosen
- Superseded - Replaced by a newer ADR (reference the new ADR number)
Best Practices
Title:
- Describes the decision, not the problem
- Noun phrase (e.g., "Use of PostgreSQL for feature store")
Context:
- What problem are we solving?
- What constraints exist?
- Why does this matter?
Decision Drivers:
- List 3-5 key factors influencing the decision
- Be specific (e.g., "Team has PostgreSQL expertise")
Considered Options:
- Always include at least 2-3 alternatives
- Show you explored options
Consequences:
- Be honest about trade-offs
- List both positive and negative impacts
- Include neutral consequences too
Links:
- Reference related ADRs
- Link to external documentation
- Show decision relationships
When to Write ADRs
Always write for:
- Core methodology choices (algorithms, model architecture)
- Data architecture (storage, pipelines, schemas)
- Infrastructure decisions (cloud, framework, deployment)
- Evaluation approach changes
- Decisions persisting to production
- Significant pivots
- Failed experiments (status: Rejected)
Use judgment for:
- Temporary workarounds (if marked non-permanent)
- Tool choices for exploration (if not affecting deliverables)
- Hyperparameter decisions (unless novel or critical)
Don't write for:
- Individual experiment runs
- Personal workflow preferences
- Notebook organization
- Obvious/trivial choices
Rule of thumb: If someone might ask "why did we do it this way?" 6 months from now, write an ADR.