WIP: Pin the Rust toolchain and make CI report its resolved versions #537

Draft
toasterson wants to merge 4 commits from claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor into main
Owner

Anima work item 019fe0e9-92d6-7232-9fea-479211e19a14.

Supersedes WI-352/PR #385. Implement the small current-main delta: add rust-toolchain.toml pinning the channel plus rustfmt/clippy components to the version baked into the Solstice Rust image; make a bump an explicit reviewable change; decide and enforce fmt as a real gate alongside clippy; and print rustc, cargo, clippy, and rustfmt versions in each native CI verdict. Acceptance: local and CI fmt/clippy results match for one commit and an image rebuild cannot silently change the lint gate.

Anima work item `019fe0e9-92d6-7232-9fea-479211e19a14`. Supersedes WI-352/PR #385. Implement the small current-main delta: add `rust-toolchain.toml` pinning the channel plus rustfmt/clippy components to the version baked into the Solstice Rust image; make a bump an explicit reviewable change; decide and enforce fmt as a real gate alongside clippy; and print rustc, cargo, clippy, and rustfmt versions in each native CI verdict. Acceptance: local and CI fmt/clippy results match for one commit and an image rebuild cannot silently change the lint gate.
The previous commit enforced `cargo fmt --all -- --check` in CI, but
vendor/solstice-ci (a path dep of anima-solstice) was not formatted with
the pinned rustfmt version. This caused the CI fmt gate to fail.

Fix by updating scripts/fetch-solstice-common.sh to run `cargo fmt --all`
on the vendored code after checkout. This ensures the vendor dir is always
formatted consistently with Anima's pinned rust-toolchain.toml, so rustfmt
version drift between solstice upstream and Anima cannot break CI.

Acceptance: `cargo fmt --all -- --check` passes locally and in CI.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
The previous commit used "1.97.1" which is not a valid channel format in
rust-toolchain.toml. Rust channels should use "1.XX" format (e.g., "1.97"),
not "1.XX.Y". When rustup encounters an invalid channel format, it fails to
install the toolchain, causing CI to fail with exit_code=1.

Additionally, removed the unnecessary `command -v rustfmt` check in
fetch-solstice-common.sh since formatting is done via `cargo fmt`, not the
`rustfmt` binary directly. This simplifies the conditional check.

Acceptance: rustup successfully installs the 1.97 toolchain, and CI passes
with the pinned toolchain components (rustfmt + clippy) working correctly.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
toasterson force-pushed claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor from f65846bc3f to b8d9a234b0 2026-08-10 16:33:39 +00:00 Compare
toasterson force-pushed claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor from b8d9a234b0 to deee5e6749 2026-08-10 16:58:27 +00:00 Compare
toasterson force-pushed claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor from deee5e6749 to 3525ab9d79 2026-08-10 20:57:36 +00:00 Compare
This pull request has changes conflicting with the target branch.
  • crates/anima-db/src/repo/mod.rs
  • crates/anima-db/src/repo/workitem.rs
  • crates/anima-db/src/repo/workitem_dependency.rs
  • crates/anima-git/src/normalize.rs
  • crates/anima-runner/src/janitor.rs
  • crates/anima-runner/src/quota.rs
  • crates/anima-runner/src/vcs.rs
  • crates/anima-server/src/mcp/handlers.rs
  • crates/anima-server/src/scheduler.rs
  • crates/anima-server/src/services/runner.rs
  • crates/anima-solstice/src/dispatch.rs
  • crates/anima-solstice/src/results.rs
View command line instructions

Manual merge helper

Use this merge commit message when completing the merge manually.

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor:claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor
git switch claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git switch main
git merge --no-ff claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor
git switch claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor
git rebase main
git switch main
git merge --ff-only claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor
git switch claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor
git rebase main
git switch main
git merge --no-ff claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor
git switch main
git merge --squash claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor
git switch main
git merge --ff-only claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor
git switch main
git merge claude/wi-019fe0e9-pin-the-rust-toolchain-and-make-ci-repor
git push origin main
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
toasterson/Anima!537
No description provided.