Skip to content

cargo binstall cargo-mutants falls back to a source build that fails against the pinned nightly toolchain #364

Description

@leynos

cargo binstall cargo-mutants falls back to a source build that fails against the pinned nightly toolchain

Summary

The scheduled mutation-testing run on 10 July 2026 (run 29091714881) failed during the Install cargo-mutants step of the reusable mutation-cargo.yml workflow, before any mutants ran. This is a distinct failure mode from the already-tracked doctest baseline issue (#66): it happened in the install step, not the baseline test run, and has not recurred in any of the ten-plus scheduled runs since.

What happened

cargo binstall --no-confirm "cargo-mutants@27.1.0" had no prebuilt binary available and fell back to cargo install, which then failed to compile:

error: failed to compile `cargo-mutants v27.1.0`, intermediate artifacts can be found at `/tmp/cargo-installETwhAq`.
To reuse those artifacts with a future compilation, set the environment variable `CARGO_TARGET_DIR` to that path.

Caused by:
  rustc 1.90.0-nightly is not supported by the following package:
    cargo-platform@0.3.3 requires rustc 1.91
  Try re-running `cargo install` with `--locked`

The pinned nightly toolchain (nightly-2025-06-26, rustc 1.90.0-nightly) is older than the minimum supported Rust version pulled in transitively by an unpinned dependency (cargo-platform@0.3.3) of cargo-mutants@27.1.0. Because the install runs plain cargo install (no --locked), it resolves to the newest permitted cargo-platform release at run time rather than a version compatible with the pinned toolchain.

Where

leynos/shared-actions, .github/workflows/mutation-cargo.yml, the Install cargo-mutants step (around line 209), which runs:

cargo binstall --no-confirm "cargo-mutants@${CARGO_MUTANTS_VERSION}"

with no --locked fallback and no pinned lockfile for the install.

Impact

  • Run: 29091714881, schedule, 10 July 2026, 2.0 minutes, conclusion: failure.
  • All six mutants shard jobs and the parent run failed; zero mutants were exercised.
  • Not recurred in any of the runs from 11 July through 20 July 2026 (all schedule/dispatch runs since are green or skip cleanly with no changes detected), so this looks like a one-off exposure to an MSRV bump in a transitive dependency of cargo-mutants rather than an ongoing outage. It remains a latent fragility: any future MSRV bump in cargo-mutants' dependency tree can break the install again with no advance warning, since binstall silently falls back to a source build when no prebuilt binary matches the runner platform/toolchain.

Proposed next step

Make the cargo binstall step robust against MSRV drift in cargo-mutants' dependency tree, e.g. by pinning to a release with a published prebuilt binary for the runner's platform (avoiding the source-build fallback), or by ensuring the toolchain used to build cargo-mutants when binstall does fall back meets the crate's current MSRV, or by failing fast with a clearer diagnostic when binstall falls back to a source build.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingmedium

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions