ADR process
Architecture Decision Records (ADRs) capture the significant technical decisions made in Krate: what was decided, why, and what the consequences are.
When to write an ADR
Write an ADR when you make a decision that:
- Affects multiple crates, phases, or contributors
- Is difficult or costly to reverse
- Would otherwise be invisible in code
Examples that need an ADR:
- Choosing a new dependency for the runtime
- Changing the WIT versioning strategy
- Adding a new UAPI module
- Changing the bundle format
Examples that do not need an ADR:
- Bug fixes
- Test additions
- Documentation updates
- Refactors that don't change observable behavior
Process
- Copy
docs/adr/template.mdtodocs/adr/NNNN-short-title.md(next sequential number). - Fill out every section. Be honest about alternatives rejected.
- Open a PR titled
ADR: <title>. - Minimum 2 maintainers approve, or 1 approve + 7 days open.
- Merged ADRs are immutable. To supersede an ADR, write a new one that
references the old one with
Supersedes: ADR-NNNN.
Index
| ADR | Title | Status |
|---|---|---|
| ADR-0001 | Rust for the Krate runtime | Accepted |
| ADR-0002 | Wasmtime as runtime engine | Accepted |
| ADR-0003 | Component Model from day one | Accepted |
| ADR-0006 | WIT versioning strategy | Accepted |
| ADR-0007 | UCap v0.1 soft enforcement | Accepted |
| ADR-0008 | Host async runtime | Accepted |
| ADR-0009 | Sandbox link-semantics guardrails | Accepted |
| ADR-0010 | Locale and timezone discovery fallbacks | Accepted |
| ADR-0011 | Phase 2 benchmark regression policy | Accepted |
| ADR-0012 | Adapter crate split per host OS | Accepted |
| ADR-0013 | Widget lowering strategy | Proposed |
| ADR-0014 | Layout engine uses Taffy | Proposed |