ADR 0009: Source-built developer installation
Document status:
accepted. Canonical source.
Decision delegated to research on 2026-08-30. Evidence:
nuif:research:developer-source-installation-and-os-trust and
nuif:research:github-release-delivery-and-provenance.
Context
NUIF Editor will remain a developer-facing reference and conformance tool. Unsigned native archives are useful build evidence, but making them the normal installation path couples routine research use to Apple and Microsoft publisher-reputation systems. Marketplace publication and paid signing identities are not architectural requirements for a developer tool.
A different path must still preserve source identity, dependency locking, platform integration, updates, rollback and safe removal. It must not claim that local compilation bypasses every managed-device policy or weaken an operating system’s security controls.
Decision
- The primary editor installation is a local build from a clean, pinned source
revision using the checked-in
Cargo.lockand repository Rust toolchain. cargo xtaskowns user-scoped install, update, doctor, rollback and uninstall commands. There is no system-wide installation mode.- Source installs record the version, source revision and cleanliness, lockfile digest, toolchain, platform, architecture and installed binary digest in a machine-readable receipt.
- The
alphachannel resolves only published prereleases. Its release manifest must pass GitHub attestation verification for the NUIF release workflow, tag and source revision before the revision is built. - Updates are explicit. The active and previous immutable installations are retained so activation can be rolled back without rebuilding.
- macOS installs a locally built, ad-hoc-signed application under the user’s
Applications directory. Windows installs under the user’s local application
directories and may create a user Start-menu shortcut. Linux installs under
user XDG and
~/.localpaths. - The lifecycle never disables Gatekeeper, System Integrity Protection, Defender, SmartScreen or Smart App Control and never adds a certificate to a trust store. Managed-device exceptions require organization approval.
- GitHub release archives remain CI evidence, reproducibility material and an expert opt-in path. They are not described as trusted publisher-signed applications.
- Homebrew source formulae and Nix flakes are compatible future convenience layers. A Scoop bucket downloads the unsigned Windows archive and therefore cannot replace the source-built trust path.
Consequences
- A developer can install and update the editor without Apple Developer Program membership, Microsoft Store publication or administrator access on an ordinary development machine.
- The default path takes compilation time and requires the platform Rust/native build prerequisites.
- A locked-down machine may still reject locally built unsigned code. Its administrator must supply an approved certificate or policy; NUIF does not work around that control.
- Release automation and source installation have separate responsibilities: releases attest the channel input, while the local lifecycle owns the executable installed on the developer’s machine.