ADRs record point-in-time decisions that affected Wright's observable product/compiler contract or component boundaries. They preserve rationale and consequences; they are not a database of current implementation reality.
Current architecture contracts are routed from docs/architecture/README.md. Source, Cargo metadata, tests, CI, integrations, and real-project runs establish implementation reality. An Accepted ADR means the decision was approved at that point in project history; it does not by itself prove that current code still conforms to the decision.
- Files use a zero-padded sequence and a short title, for example
0003-ir-boundary.md. - An ADR starts as
Proposedand becomesAcceptedwhen the decision is approved. SupersededADRs remain for history and link to the decision that replaces them.- An accepted ADR is not rewritten to hide history. A material change gets a new ADR when the rationale/decision history is worth preserving, while the current invariant is reflected in
docs/architecture/or another focused current contract. - Decisions state their scope, consequences, compatibility impact, and scope boundaries. Historical implementation mechanisms may remain in the record without becoming current architecture authority.
- Do not use ADR status to encode current release versions, feature counts, migration progress, or Issue/PR state.
The post-ADR-0010 decision inventory records the candidate classification and source decisions for the backfill set covered by its audit date.
- ADR template
- ADR-0001: Project scope (superseded by ADR-0008)
- ADR-0002: Compatibility strategy
- ADR-0003: IR boundary
- ADR-0004: OverPy licensing and clean-room boundary
- ADR-0005: Opy HIR v1 frontend protocol
- ADR-0006: Rust IR core: typed IDs, arenas, and two-layer models
- ADR-0007: OverPy reference pinning policy
- ADR-0008: Tooling-first semantic platform rebaseline
- ADR-0009: Language ownership and licensing boundaries
- ADR-0010: Independent language implementations and Wright integration
- ADR-0011: Distinct check, lint, and analyze workflows
- ADR-0012: First-party provider distribution and local activation
- ADR-0013: Entry-based source-provider integration seam
- ADR-0014: Repository-namespaced immutable R2 release artifacts
- ADR-0015: Canonical facts, declarative lint rules, and project policy
- ADR-0016: Current-directory and directory project targets
- ADR-0017: Domain-intelligence query contract
- ADR-0018: Tests-first integration verification
- ADR-0019: Stable installer bootstrap distribution
- ADR-0020: Native coding-agent tools as an MCP adapter over
ToolService - ADR-0021: Name and signature lookup for agent authoring
- ADR-0022: One shared surface for the semantic queries
- ADR-0023: LSP scope for 1.0
- ADR-0024: Structured rule content for agents and graders
- ADR-0025: Essential default output and the agent-facing token standard
- ADR-0026: The agent benchmark lives with the benchmark suite
- ADR-0027: Project run cache and comparison against the previous run
- ADR-0028: Transformation profiles apply to Workshop input only
- ADR-0029: Structured statement edits for raw Workshop
- ADR-0030: One result model, three renderers, and the CLI/action boundary
- ADR-0031: Paginated vocabulary listing for structured editors
- ADR-0032: The structured Workshop editor: form factor, ownership, and stack (decisions 1, 4, 5, 6, and 9 superseded by ADR-0037)
- ADR-0033: The simulate operation in the driver and
wright-agent/v1 - ADR-0034: Snapshot-scoped numeric symbol and rule addresses
- ADR-0035: One meaning per selector spelling
- ADR-0036:
wright uidependency policy - ADR-0037: The structured editor moves to an experimental web application over a WebAssembly Wright core
- Post-ADR-0010 decision inventory