# Architecture Decision Records
This directory documents the key design decisions made during the development of rustebra.
Each record explains the context, the decision, and the rationale.
| [0001](0001-hybrid-memory-allocation.md) | Hybrid Memory Allocation Strategy via Feature Flags | Accepted (Revised) |
| [0002](0002-single-crate-with-feature-flags.md) | Single Crate with Incremental Feature Flags | Accepted |
| [0003](0003-separated-static-dynamic-traits.md) | Minimal Shared Storage Trait Between Static and Dynamic Types | Accepted (Revised) |
| [0004](0004-per-module-error-handling.md) | Per-Module Error Handling with Result | Accepted |
| [0005](0005-generic-scalar-type.md) | Generic Scalar Type | Accepted |
| [0006](0006-trait-based-generic-architecture.md) | Trait-Based Generic Layered Architecture | Accepted |
| [0007](0007-public-elementary-scalar-functions.md) | Public Elementary Scalar Functions, Scoped to Internal Needs | Accepted |
| [0008](0008-two-level-public-api.md) | Two-Level Public API for Matrix Operations | Accepted |
| [0009](0009-numerical-tolerance-for-approximate-zero.md) | Numerical Tolerance for Approximate-Zero Comparisons | Accepted |
| [0010](0010-sparse-matrix-public-api.md) | Sparse Matrix Public API Shape | Accepted |
| [0011](0011-sorted-csr-matrix.md) | SortedCsrMatrix — Type-Level Column-Sort Invariant | Accepted |
| [0012](0012-sparse-entry-pruning.md) | Sparse Entry Pruning and Explicit Zero Semantics | Accepted |
| [0013](0013-numerical-stability-and-error-bounds-policy.md) | Numerical Stability and Error-Bounds Policy | Accepted |
---
*New decisions are added here as the project evolves. See [CONTRIBUTING.md](../CONTRIBUTING.md) if you want to propose a change that warrants a new record.*