Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Architecture decision records

Note

Reference: accepted. The index of every architecture decision in the project.

An architecture decision record (ADR) captures one significant decision: the context, the options considered, the choice, and its consequences. ADRs are never deleted. A decision that changes is superseded by a new ADR that links back to it.

When to write an ADR

Write an ADR when a decision:

  • constrains how several components or future contributors work,
  • is expensive to reverse,
  • chooses between credible alternatives, or
  • changes a previous ADR.

Changes to accepted specifications, new action-type namespaces, and policy-language features go through the RFC process, and the RFC produces the ADR.

Statuses

StatusMeaning
proposedA recommendation is written but not yet ratified, or its confirmation step is still pending
acceptedThe decision is in effect
deferredThe question is recognized but intentionally postponed to a named milestone
supersededReplaced by a later ADR, which is linked
deprecatedNo longer relevant, with no replacement

Process

  1. Copy the template to NNNN-short-title.md using the next free number.
  2. Open a pull request with status proposed, and add the record to the index below.
  3. A maintainer accepts the decision by changing its status when the pull request merges, following GOVERNANCE.md.
  4. To change a decision, write a new ADR that supersedes the old one, and update both records.

Index

Project

ADRTitleStatus
0001Record architecture decisionsaccepted
0002Rust for product and toolingaccepted
0003Project name: Shiinaccepted
0004Apache-2.0 license and DCOaccepted
0005Governance modelaccepted
0006Vulnerability reportingaccepted
0007No telemetryaccepted
0008mdBook documentationaccepted

Engine semantics

Policy, classification, intent, and risk

Deployment, API, adapters, and approvals

Evidence

ADRTitleStatus
0029Hash-chained JSON Lines audit logaccepted
0030Audit durabilityaccepted
0031DSSE and Ed25519 receiptsaccepted
0032Signing key storageaccepted
0033Enforcement levelsaccepted

Rust engineering

ADRTitleStatus
0034Edition, MSRV, and toolchainaccepted
0035Workspace layoutaccepted
0036Error handlingaccepted
0037Unsafe code policyaccepted
0038Supply chain policyaccepted
0039Release toolingaccepted
0040Platform support tiersaccepted

Deferred

ADRTitleStatus
0041Remote approver transportdeferred to v0.6
0042Language bindingsdeferred until after 1.0