ADR-0008: Production Sovereignty and External Tools
Status: accepted
Date: 2026-07-25
Context
The current compiler is a Rust seed and uses egg. The project requires a
final toolchain that is fully self-owned and does not need third-party compiler
infrastructure or libraries. Hardware and operating-system interfaces remain
unavoidable platform contracts for hosted targets.
Options considered
| Option | Benefit | Cost |
|---|---|---|
| Depend on LLVM/system toolchain | Fast ecosystem growth | Gives away backend ownership |
| Trust external proposals with checker | Smaller TCB | Still operationally dependent |
| Full NAUX-owned release path | Sovereignty and differentiation | Highest implementation cost |
Decision
A normal released NAUX build must require no third-party software component above the ISA/firmware/syscall ABI boundary.
NAUX owns its semantic kernel, specializer, validators, optimizer, encoder, object/executable writer, linker, runtime, memory manager, standard library, and build/package tools.
External compilers, proof assistants, fuzzers, and baselines are optional bridge/research/cross-check tools only. They are not linked, required, trusted for unchecked semantic decisions, or accepted as the sole essential implementation.
Rust and egg are dependency debt with removal milestones.
Rationale
Sovereignty is a product property and a core source of NAUX’s difference. Anything weaker permits an external tool to control the most important performance and semantic decisions.
Trade-offs
- Development takes longer.
- NAUX must implement normally outsourced infrastructure.
- Optional external cross-check diversity remains useful but cannot be assumed.
Consequences
Release mode produces a machine-readable zero-third-party dependency report. The roadmap cannot mark sovereignty complete while bridge dependencies remain required.
Revisit trigger
This decision is a founding invariant. It can be revisited only by an explicit owner decision that changes NAUX’s identity, not for schedule convenience.