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

OptionBenefitCost
Depend on LLVM/system toolchainFast ecosystem growthGives away backend ownership
Trust external proposals with checkerSmaller TCBStill operationally dependent
Full NAUX-owned release pathSovereignty and differentiationHighest 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.