Each record: Status · Date · Context · Decision · Consequences. New decisions take the next number and are linked here. These records exist so that the corrections made to the original plan are not silently undone later.
| ADR | Decision |
|---|---|
| ADR-0001 | Registry-verified dependency chain with a single root (amended by ADR-0013) |
| ADR-0002 | Stable toolchain; no std::simd |
| ADR-0003 | cudarc with runtime dynamic loading and NVRTC JIT; no nvcc |
| ADR-0004 | objc2-metal, macOS target-gated; MSL compiled at runtime |
| ADR-0005 | Object-safe, synchronous GpuBackend |
| ADR-0006 | Pure-CPU default build; GPU and io_uring as opt-in features forwarded by oxidelake-runtime |
| ADR-0007 | io-uring 0.7 on a dedicated storage thread instead of tokio-uring (amended by ADR-0014) |
| ADR-0008 | No panic = "abort" in the release profile |
| ADR-0009 | Depend on datafusion only; use its re-exports (amended by ADR-0013) |
| ADR-0010 | Hardware placement is a DataFusion PhysicalOptimizerRule |
| ADR-0011 | TUI testing: TestBackend in-process plus termlens against a deterministic demo binary |
| ADR-0012 | Per-phase acceptance gates and the STATUS.md honesty rule |
| ADR-0013 | Cluster mode runs on Apache DataFusion Ballista; Ballista roots the dependency chain |
| ADR-0014 | Parquet and Arrow IPC instead of a custom .oxide file format |
| ADR-0015 | In-database inference (predict) at the UDF layer, not the operator layer; oxmera with default-features = false |
| ADR-0016 | Public repository from one commit; crates renamed oxidelake-*; kernels inside the device crate |
| ADR-0017 | Dependency caching, shared Metal builds, independent Linux feature gates and tested documentation skips |