This directory contains current design documentation and architectural decision records. Implementation plans are removed after completion; Git history is the archive. Executable behavior is authoritative only when backed by the current code and tests.
- Ownership - implicit-sharing semantics and MIR ownership dataflow.
- Effects - generic effect rows, handlers, and effect parameters carried by nominal types.
- Panic audit - LSP panic-containment policy and explicit production allowances.
- Protocol arguments versus associated types
- explanatory type-system rationale.
These documents are snapshots rather than current project plans:
- Backend parity ledger - completed restoration accounting for the frontend-only reset.
- Backend unsupported inventory - ADR 0037's original line-numbered planning inventory.
- Profiling findings - performance snapshots with their measured commits and workloads.
- Self-hosted frontend VM report - optimization snapshot
at commit
0b633a91. - R1 managed-storage contract sketch - the ADR 0033 sketch now consolidated by proposed ADR 0044.
Historical evidence must name the commit or date it describes and must not call itself current.
An ADR records why a decision was made. Accepted, rejected, and superseded ADRs remain in the tree. After acceptance, only status, implementation notes, and supersession metadata should change; a semantic change requires a new ADR.
Status vocabulary:
- Proposed - awaiting a decision.
- Accepted - the decision is binding.
- Implemented - the accepted decision is present in production code.
- Partially implemented - accepted, with named implementation work open.
- Rejected - considered and deliberately not adopted.
- Superseded - retained as history; a later ADR is authoritative.
- 0007 - Checker responsibility extraction
- 0020 - Axiom schemes and evidence
- 0022 - Syntax sugars
- 0026 - Hygienic syntax macros
- 0033 - Managed storage, heap regions, and FFI lifetimes
- 0036 - Canonical instance heads
- 0037 - Eliminate backend capability rejections
- 0044 - Unified memory model
- 0001 - Qualified predicates
- 0002 - GADT prerequisites
- 0003 - Protocol existentials
- 0004 - Solver decomposition
- 0005 - Type traversal primitives
- 0012 - Unicode character model
- 0013 - Sequential local scoping
- 0014 - Comparisons borrow operands
- 0016 - Protocol arguments in conformance identity
- 0018 - Borrow-by-default parameters
- 0021 - First-class iteration
- 0023 - Packages
- 0024 - Labeled enum payloads
- 0025 - Borrow-transparent patterns
- 0028 - Structured diagnostics
- 0031 - Frontend-only reset
- 0034 - Lean bytecode backend
- 0035 - Static value generics
- 0038 - MIR semantic-authority cleanup
- 0039 - Host fallback handlers
- 0041 - Callable argument labels
- 0042 - Symbol visibility
- 0043 - Self-hosted source frontend
- 0006 - Constraint generator decomposition
- 0008 - Managed storage and FFI source direction
- 0009 - Standalone executables
- 0010 - Flow analysis on MIR
- 0011 - Dynamic-extent effect handlers
- 0015 - Typing publishes, lowering reads
- 0017 - Structural temporary drops
- 0019 - TypedProgram to CheckedMir
- 0027 - Effect abort unwinding
- 0029 - Uniform RC baseline
- 0030 - Structural drop-candidate claiming
- 0032 - Single-artifact lowering pipeline
- 0040 - Frame-or-region closure environments
Current implementation structure is documented next to the code:
- Put durable decisions in ADRs, not project plans.
- Remove completed plans after extracting lasting decisions and updating references.
- Mark reports and audits with their commit or verification date.
- Keep one owner for each current semantic rule; historical documents must point to that owner rather than restating current status.
- Update links and source comments in the same change that moves a document.