Build system maintenance contract¶
Nexus uses one authored TOML assembly, a validated immutable configuration IR, static instances and typed factory, and one CMake software target graph. Ninja executes the declared graph. Products own application sources and composition.
The 48-item execution ledger preserves the requested
exit conditions. Implementation, executed software verification, environment
distribution and physical acceptance have distinct evidence. Historical source
qualification does not qualify changed build tools.
Configuration publication is a single-writer transaction. It protects every authored and fact input before changing owned output. A rejected or interrupted attempt cannot expose the previous configuration as current. Successful identical generation preserves file content and timestamps so ordinary reconfiguration does not force unrelated compilation. A configuration digest is not a compiler or generator-source identity.
CMake owns source lists and target dependencies. The resolver emits selected facts and its configuration-code dependencies, never a parallel software build graph. ABI, optimization, diagnostics and firmware link policy have explicit target boundaries. The firmware target guarantees its declared delivery outputs and resource check. External application warnings are a consumer policy.
Developer presets and native CMake/CTest remain the normal build interface. Focused tests are development feedback. Commit gates and formal qualifications execute their complete declared suites with fresh reports. All runners preserve actual command exits, bounded concurrency, deadlines and process cleanup.
Preparation may retrieve dependencies. Formal reproducibility uses two fresh network-disabled builds with the same verified source SDK and recorded environment and toolchain bytes. Compiler caches improve development only; they cannot prove fresh-build reproducibility. Durable evidence stores retain original records, member identities and failed attempts without changing their historical status.
Behavioral fixes use actual RED then GREEN execution. Python tools use unittest; C/C++ contracts use the pinned GoogleTest/GoogleMock host framework. CMake graph and policy defects require real small consumer builds and artifact observations. Firmware stays C11 and contains no host test runtime. Normal commit hooks and independent review apply to this maintenance work.
The following support matrix records observed host tools and declared locks. The final clean-source software gates and eight exact offline candidates are recorded in the execution record. Host observations retain their own scope; source qualification uses the recorded code commit and never follows a later documentation HEAD automatically.
Host or execution path |
Maintained boundary |
Current evidence |
|---|---|---|
Linux x86_64 development host |
Configuration, Ninja, Native/ARM consumers, offline tools and evidence transport |
Actual local execution; Linux 6.18.44 and glibc 2.41 observed |
Linux descendant cancellation |
Bounded |
Actual nested-process and hostile signal-handler regressions |
Linux/amd64 OCI artifact |
Sealed manifest, config and layer bytes; local offline load |
Actual export, independent archive restore and Docker load/inspect |
Windows development paths |
Bootstrap selects |
Integration not executed in this maintenance run |
macOS development paths |
Python/CMake tooling entry points; host-specific compiler setup |
Integration not executed in this maintenance run |
Other hosts or cross-host ARM distributions |
Require a separately reviewed tool lock and execution matrix |
Not established by Linux archive identities |
Linux descendant cleanup depends on Linux process observation. Generic process termination paths on other hosts do not establish the same nested-process acceptance. Windows and macOS path handling is an implementation boundary, not an integrated test result.
Tool |
Declared requirement or lock |
Actual local observation |
|---|---|---|
Python |
Minimum 3.11; local lock 3.12.14 |
CPython 3.12.14 |
CMake |
Minimum 3.31; tool lock 3.31.6 |
3.31.6 |
Ninja |
Tool lock 1.13.2; single configuration |
|
Native compiler |
GNU 14.2.0 in the environment lock |
GCC/G++ 14.2.0, Debian 14.2.0-19 |
ARM compiler |
GNU Arm 14.3.rel1, Linux x86_64 archive lock |
GCC 14.3.1, build dated 20250623 |
clang-format |
14.0.6 |
14.0.6 |
pre-commit |
4.3.0 |
4.3.0 |
Optional ccache |
4.14.1, Linux x86_64 static distribution |
Actual binary and cache hit/miss validation |
Git |
Source and submodule identity tooling |
Host 2.52.0; recorded OCI artifact 2.47.3 |
GoogleTest/GoogleMock |
1.16.0, pinned commit and archive SHA-256 |
Host-only framework; final full-source execution separately recorded |
Ninja single-configuration builds are maintained. Ninja Multi-Config is explicitly rejected; other generators have no implied acceptance. C11 remains the firmware language. Native test targets enable C++17 without linking that test runtime into firmware.
The Linux x86_64 CP312 offline tool closure contains 15 hash-locked wheels,
including the Setuptools build backend required by isolated local pre-commit
preparation. A fresh CP312 virtual environment completed an actual
--no-index --require-hashes installation and real isolated hook initialization.
The complete isolated tool domains retain their actual recorded source scopes;
the final ordinary commit gate separately executes the current source. CP311
wheel bytes were checked against their 15-wheel lock; CP311 installation was
not executed. The minimum Python version and wheel inventory do not substitute
for that missing installation result.
The recorded OCI artifact uses Python 3.12.15 and Git 2.47.3, distinct from the
current host versions. Its manifest is
e936b188b9e30cf37ce109a5407019c91fe2dbc62fb10afceb3f2abbfc823ac8 and
its image config is
a1ba03c16d424aef88dad6e5b2ead2892734a0bf909dedc23d8855fa4861fbe0.
The actual ARM toolchain tree contains 7,190 files and 1,106,755,364 bytes with
tree SHA-256
44d2fe14e401730074302ad87bdef9762a6cfe12de4bebc6853d181fd51c74fd.
Toolchain and OCI transport executions retain their own tool-source identities;
their results do not transfer source qualification to later tool changes.
Fixed base/frontend digests, Debian snapshot selection, five APT package
versions and hash-required Python inputs are declared in the recipe lock.
Reconstruction of the observed OCI bytes has not executed successfully:
recipe_reproducible remains false. Verified artifact reuse and declared
recipe inputs therefore remain separate acceptance states.
The execution ledger keeps all 48 requested requirements and exit conditions
unchanged. Its updated paths bind the implementation, original RED/GREEN
records and the final-source software gates in the
execution record and
result index. Historical measurements
retain their source and exact selections instead of inheriting a later HEAD.
Automatic developer provenance binds a unique immutable command-attempt receipt and checks its command and working directory. Complete current contracts and actual candidate plan execution establish this association; a shared latest report name cannot substitute for an exact attempt.
BLD-18 retains full SDK byte checks at each consumption boundary after
measurement, with no parent marker or persistent verification bypass. BLD-31
retains common static libraries after measuring declared versus actually
compiled units and exact selected-image costs. Their decision_verified states
record measured choices rather than speculative source splitting.
BLD-38 records actual fixed-checker candidate plans and genuine failed-checker execution. The original orchestration exit condition remains unchanged. The maintained 72-stage software plan did not run through one complete plan invocation; individually executed full gates are recorded separately. BLD-39 validates dependency-upgrade evidence contracts, without claiming an actual vendor dependency upgrade.
BLD-40 covers actual CP312 offline installation and isolated hook preparation;
CP311 installation remains unexecuted. BLD-41 covers actual whole-toolchain and
OCI transport and verified reuse of the same bytes. BLD-42 remains
declared_recipe_verified_reconstruction_unverified, with
recipe_reproducible=false. BLD-44 covers actual new-source archived proof and
independent archive-only verification. Local archive retention and a durable
hard-link name do not establish off-site storage, publication or a release.
The host observations retain their recorded source scopes in
/workspace/nexus-build-maintenance-20261012/documentation/host-tool-support-observations.json.
Current locked closure and final-source receipts are indexed in the delivery
result index. The ledger’s configuration, target, workflow, delivery and transport
reports retain their raw executions, failure attempts and source scopes. Physical HIL
remains not_executed throughout this build-system maintenance work.