How to Propose, Accept, Supersede, or Deprecate an ADR
How to Propose, Accept, Supersede, or Deprecate an ADR
Section titled “How to Propose, Accept, Supersede, or Deprecate an ADR”Manage an Architectural Decision Record’s lifecycle in mif-rs, from first
draft through to acceptance or eventual supersession.
Prerequisites
Section titled “Prerequisites”- A change with real, considered alternatives — not a task or a requirement (see ADR-0001).
- Familiarity with the Structured MADR format this repository uses (via the
mif-docs:adrskill), not plain MADR.
Propose a new ADR
Section titled “Propose a new ADR”- Create a new file in
docs/adr/namedNNNN-title-with-dashes.md, using the next sequential number. - Author it with the
mif-docs:adrskill so it carries the required Structured MADR sections and MIF frontmatter. - Set
status: proposedin the frontmatter. - Open a pull request.
Accept an ADR
Section titled “Accept an ADR”- After discussion and approval on the pull request, change
statustoaccepted. - Merge the pull request.
Supersede an ADR
Section titled “Supersede an ADR”- Create a new ADR (per “Propose a new ADR” above) that documents the replacement decision.
- In the old ADR’s frontmatter, set
status: supersededand add arelationshipsentry of typesuperseded-bypointing at the new ADR. - Set the new ADR’s
statustoacceptedonce approved.
Deprecate an ADR
Section titled “Deprecate an ADR”- If a decision is no longer relevant but has no direct replacement, set
status: deprecatedin its frontmatter. - Add a note in the ADR’s
## Auditsection explaining why.
An accepted ADR’s outcome is never edited in place — a changed decision gets a new, superseding ADR instead.
ADR Index
Section titled “ADR Index”- ADR-0001 — Use Architectural Decision Records
- ADR-0002 — Documentation Directory Structure
- ADR-0003 — Virtual Cargo Workspace, Not a Root Package
- ADR-0004 — Library Crates Never Depend on the Binary Crates
- ADR-0005 — Per-Crate thiserror Error Enums, No Shared Top-Level Error Type
- ADR-0006 — Vendor the Canonical JSON Schema at Compile Time, Not Fetch at Validate Time
- ADR-0007 — Generic Frontmatter Pass-Through, Not a Curated Field List
- ADR-0008 — Hand-Written Core Types, Not Schema-to-Rust Codegen
- ADR-0009 — Pedantic, Nursery, and Cargo Clippy Lint Groups, Workspace-Wide
- ADR-0010 — Release Profile:
panic = "abort", strip, and Thin LTO - ADR-0011 — Ban openssl and atty; Use rustls and std::io::IsTerminal
- ADR-0012 — cargo-chef Multi-Stage Docker Build for Dependency-Layer Caching
- ADR-0013 — Chainguard glibc-dynamic as the Container Runtime Base, Superseding distroless/cc-debian12
- ADR-0014 — GHCR Package Visibility: Manual, Not Automated
- ADR-0015 — Local Embeddings and a SQLite Brute-Force Vector Store
- ADR-0016 — Lefthook Git Hooks: Fast Pre-Commit, Full CI-Parity Pre-Push
- ADR-0017 — RFC 9457 Error-Type URIs Hosted on This Repository’s Own GitHub Pages Site
- ADR-0018 — Publish rustdoc Alongside the Starlight Site in One Pages Deployment
- ADR-0019 — Ship the Research-Harness Ontology Engine as mif-rh Crates Inside the mif-rs Workspace
- ADR-0020 — mif-rh-mcp Speaks stdio-Only MCP Transport