Phase 0 — Foundation
Status: complete (2026-05-22). 10 PRs landed; Phase 0 issues #4–#12 closed.
Phase 0 had one mission: make the repository’s skeleton build cleanly on green CI, so feature work in later phases never drags build-system fights into every PR.
What landed
Section titled “What landed”In dependency order:
- Pinned the Rust toolchain (
1.83.0) so Corrosion finds it deterministically, and unblocked the broken seed skeleton (emptyCargo.toml, phantom.cpprefs,BUILD_TARGET_SOC→BUILD_TARGET_KPUrename; Corrosion bumped to fix arustc --versionparse bug). - Style enforcement —
.clang-format(LLVM base, 4-space, 120 columns),.editorconfig, and ADR-0001 (third-party license audit). - CMake presets —
sitl-debug,sitl-release,kpu-cross,wsl2-sitl(Ninja single-config; per-preset binary dir). - Cross-toolchain —
cross-toolchain.cmakefor aarch64 KPU cross-compile, and the CI job re-enabled. - FetchContent dependencies — MTL5, Universal, yaml-cpp, Catch2, Tracy, stb (all pinned).
- sccache — compiler caching for Rust + C++ (warm-cache: ~73% SITL, ~50% KPU-cross hit rates).
- Lint job — clippy +
cargo fmt+clang-format. - Release flow — commitlint + release-please for Conventional-Commits-driven SemVer.
- Dev bootstrap — idempotent
bootstrap.sh/bootstrap.ps1for new-dev setup.
Conventions ratified
Section titled “Conventions ratified”These are the project-wide rules still in force:
- PR-only, even solo — no direct commits to
main; every change goes through a PR with green CI. - Branch =
<cc-type>/<slug>, PR title = Conventional Commits message, squash-merge, commitlint-enforced. - Claude opens a ready PR, waits for green CI + CodeRabbit, and stops; a human merges. No auto-merge.
Explicitly deferred
Section titled “Explicitly deferred”No algorithm code, no real cxx bridge (the stub was deleted — the real one is Phase 1), no KPU broker/IPC, no live release tag, no docs site (that’s Phase 11 — this site). Phase 0 only set conventions and stub interfaces.
Companion: docs/arch/phase0-foundation/README.md.