Repository navigation
deps: resolve the ambiguous rand_core refs in Cargo.lock - #153
juan-malbeclabs wants to merge 1 commit into
Conversation
Six Dependabot PRs merged within seconds of each other on 2026-09-07 without being rebased onto one another. The ed25519-dalek 3 upgrade resolved a lock with a single rand_core and dropped the digest 0.10 chain; the rust-minor-patch group was resolved against the pre-upgrade tree. Git merged both line by line with no conflict, leaving main with a lock Cargo cannot use: rand 0.9.4 and rand_chacha 0.9.0 name a bare "rand_core" while 0.9.5 and 0.10.1 are both locked, and six packages the upgrade had removed came back reachable from nothing. rust CI never noticed because it builds without --locked. The Dockerfile's cargo build --release --locked is the only enforcement, so every GHCR publish has failed since, and doublezero-edge-connect:mainnet-beta stayed on the 0.38.0 client base across the doublezero v0.39.0 release and the mainnet-beta base image published after it. Regenerated. No reachable package changes version or checksum; the diff is the six orphan entries and the dependency names they made ambiguous.
|
Superseded by #151, which has been green and awaiting review since 2026-09-07. I opened this before checking the open PRs. #151 already contains the identical lock regeneration — it removes the same six orphan entries ( Verified against #151's head ( |
Cargo.lockonmainis one Cargo refuses to use, and it has been blocking every GHCR image publish since 2026-09-08:Summary
doublezero-edge-connectimage publishes.:mainnet-betais still the 2026-09-07 build, pinned to the 0.38.0 client base — it missed thedoublezero:mainnet-beta-0.39.0-1base published on 09-10, and the daily poll backstop fails for the same reason.rand 0.9.4andrand_chacha 0.9.0name a bare"rand_core"while bothrand_core 0.9.5and0.10.1are locked. Cargo cannot resolve a bare name against two versions, so it must rewrite the lock — which--lockedforbids.block-buffer 0.10.4,cpufeatures 0.2.17,crypto-common 0.1.7,digest 0.10.7,generic-array 0.14.7,version_check 0.9.5.Why it happened
Six Dependabot PRs merged within ~30 seconds on 2026-09-07 without being rebased onto each other. #85 (ed25519-dalek 2.2.0 → 3.0.0) resolved a lock with a single
rand_coreand dropped thedigest 0.10chain; #81 (rust-minor-patch group, lock-only) was resolved against the pre-upgrade tree. Each lock was correct against its own base, and git merged them line by line with no conflict.Nothing caught it because
rustCI runscargo build/clippy/test --workspacewithout--lockedand silently re-resolves. The Dockerfile'scargo build --release --lockedis the only thing that enforces the lock, so the first symptom was a failed image publish days later rather than a red CI run. A follow-up adds--lockedtorust.yml; requiring branches to be up to date before merging would stop two independently-resolved locks merging cleanly again.Testing Verification
mainate258968:cargo metadata --lockedexits 101 with the message above; with this lock it exits 0.cargo build --workspace --release --lockedsucceeds.maintriggersrelease.docker.edge-connect.yml, which republishes:testnet,:mainnet-betaand devnet:latestagainst the current bases — confirm afterwards that:mainnet-beta'sorg.opencontainers.image.base.digestmatchesdoublezero:mainnet-beta-0.39.0-1.