ADRs record decisions that affect Wright's observable product/compiler contract
or component boundaries. They complement, rather than replace, the normative
contracts in docs/architecture.md and
docs/compatibility.md.
- 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 the repository's current contract.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, and the old record links to it.
- Decisions state their scope, consequences, compatibility impact, and open questions. They describe observable constraints rather than implementation guesses.
- New ADRs should link to the affected architecture or compatibility document and to any superseded or related decision.
- 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