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 workingmediumRoadmap items to schedule within the current quarter. Clear scope, normal review cycles.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions