Toolchain Setup¶
Local verification is trustworthy only when the command, toolchain, dependency set, and artifact boundary match the repository contract. This page separates source requirements from hosted automation so a green local run is not misreported as CI parity.
Toolchain Authorities¶
| Concern | Authority | Current requirement |
|---|---|---|
| Rust compiler | rust-toolchain.toml |
1.86.0, minimal profile |
| Rust components | rust-toolchain.toml |
clippy, rustfmt |
| package MSRV | workspace Cargo.toml |
1.86 |
| Python | crates/bijux-cli-python/pyproject.toml |
CPython 3.11 or newer |
| Python environment | makes/_internal.mk |
artifacts/python/.venv |
| Python dependencies | PYTHON_EDITABLE_SPEC in makes/_internal.mk |
editable package with test, lint, security, docs, and build extras |
| Rust artifacts | .cargo/config.toml and Rust gates |
artifacts/rust/ |
| documentation | mkdocs.yml and Python docs extras |
MkDocs 1.x with pinned-compatible plugins |
rustup reads rust-toolchain.toml when commands run in the checkout. Verify
the result instead of relying on the shell’s default toolchain:
System Prerequisites¶
Install these outside the repository before bootstrapping:
- Git;
- GNU Make;
- Rustup with the pinned toolchain available;
- CPython 3.11 or newer with
venv; - a C/C++ build toolchain and platform linker required by Rust and Maturin.
Network access is required when Rust or Python dependencies are not already cached. Container, Kubernetes, SLURM, or platform-specific workflow tests have additional environment requirements and are not part of baseline setup.
Bootstrap¶
From repository root:
make bootstrap
make doctor-rs
cargo check --workspace --all-targets --locked
cargo run -q -p bijux-dev --bin bijux-dev-cli -- \
quickcheck --format json --no-pretty
make bootstrap creates artifacts/python/.venv, upgrades its packaging
tools, and installs crates/bijux-cli-python with the repository’s development
extras. It may migrate or remove a legacy root .venv; the root environment is
not the supported location.
Bootstrap does not install Rust cargo subcommands. make doctor-rs verifies
Cargo, gate scripts, nextest selection inputs, and policy files. Each Rust gate
also refuses to run when its required cargo subcommand is missing.
Rust Gate Tools¶
| Gate | Additional command |
|---|---|
make test-rs, make test-slow, make test-all |
cargo-nextest |
make audit |
cargo-deny, cargo-audit |
make coverage |
cargo-nextest, cargo-llvm-cov |
The GitHub helper targets pin the tools used by managed CI:
Those targets currently install cargo-nextest 0.9.100,
cargo-deny 0.18.3, and cargo-audit 0.22.1. Coverage requires
cargo-llvm-cov, but the repository does not currently define a pinned local
installer for it. Record the installed version when coverage evidence is
reviewed; do not claim exact tool parity where the repository has not governed
one.
Documentation Environment¶
The Python development extras include MkDocs and all configured plugins.
make docs-check installs the documented requirements into the managed
environment, synchronizes governed docs inputs, performs a strict MkDocs build,
checks publication boundaries and navigation, and writes the site under
artifacts/docs/.
Use make docs-require to distinguish a missing tool or input from a content
failure. Do not install a second root .venv or write a site/ directory at
repository root.
Hosted Automation Alignment¶
The source checkout currently has more than one hosted toolchain declaration:
| Surface | Declared Rust |
|---|---|
| source toolchain and MSRV | 1.86.0 / 1.86 |
| repository governance workflow | 1.86.0 |
| release-validation workflow | 1.86.0 |
| docs deployment configuration | 1.86.0 |
| synchronized generic CI workflow | 1.86.0 |
| synchronized release environment | 1.86.0 |
These hosted declarations align with the source contract at Rust 1.86.0. Alignment prevents CI and publication jobs from validating the repository with a compiler below the workspace MSRV, but a local result still does not establish hosted parity unless the operating system, installed tools, and workflow environment also match.
.github/release.env, synchronized workflows, and shared checksums are managed
from bijux-std; do not edit them directly in this repository. The durable
invariant is to update the upstream repository manifest when the workspace MSRV
changes, merge that standards change, refresh this repository from the accepted
GitHub commit, and validate the shared checksum in the same change set.
Audit alignment directly when toolchain policy changes:
Failure Diagnosis¶
| Symptom | Check first |
|---|---|
| wrong compiler or component | rustc --version, rustup show active-toolchain |
| Cargo output outside artifacts | .cargo/config.toml, CARGO_TARGET_DIR |
| Python import or MkDocs failure | artifacts/python/.venv/bin/python, install logs under artifacts/python/install/ |
| missing nextest or security command | the gate’s explicit missing-tool error |
| local pass but hosted failure | exact workflow toolchain, OS, installed cargo tools, and environment |
| release toolchain below MSRV | managed .github/release.env and upstream bijux-std manifest |
Preserve command output under artifacts/ and report the exact failing
boundary. Recreating environments without first recording the mismatch makes
toolchain failures harder to diagnose.
Repository Anchors¶
rust-toolchain.tomlCargo.toml.cargo/config.tomlmakes/_internal.mkmakes/rust.mkmakes/bin/run_core_rust_gate.shmakes/docs.mk.github/release.env.github/workflows/ci.yml.github/workflows/repository-governance.yml
Continue with Repository Gates after the environment is known, and CI and Automation when the question concerns hosted execution rather than local setup.