Verify containers share cargo's package-cache lock: mount the shared volume as CARGO_HOME #43

Merged
eureka merged 3 commits from eureka-substrate/mutants-sccache into main 2026-11-03 01:37:08 +00:00

2026-11-03

Verify containers share cargo's package-cache lock: the shared volume is CARGO_HOME, and the wrapper retry goes
A registry-only mount at /usr/local/cargo/registry left the package-cache lock under CARGO_HOME=/usr/local/cargo in each
container's own layer, so sibling containers (cargo-mutants stages, concurrent ygg-verify jobs) shared no lock and removed
each other's half-unpacked crate directories. Reproduced on Yggdrasil from an empty registry: 15 of 18 containers failed
with a registry mount, 15 of 18 with RUSTC_WRAPPER= too, 0 of 18 with the volume as CARGO_HOME.

ygg-verify.sh and cargo-mutants.sh mount eureka-cargo-home at /cargo-home and set CARGO_HOME and PATH for the rust image.
Removed: the retry without RUSTC_WRAPPER, its note and diag plumbing, and its two tests and the FAKE_CM_DEADWRAP switch.
Kept: container errors tail 25 lines.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 01:50:23 +01:00
cargo-mutants.sh: a failed build under the image's rustc wrapper retries once without it
Stage containers sharing the eureka-sccache volume died mid-build with cargo's
"could not execute process ... sccache ... (never executed)" or a missing dep-info
file in their own target dir, though the image's sccache is present, executes, and
a lone container builds clean. The wrapper only caches, so a failed build with
RUSTC_WRAPPER set is retried once without it; the job summary carries a NOTE line
saying which way it went, the first attempt's log is kept, and a build dead either
way stays a red baseline (exit 4) with its cause. Container errors now tail 25
lines, not 5. Tests: dead wrapper recovers with NOTE; red with and without the
wrapper stays red.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-11-03 01:19:30 +01:00