Part of the upgrade epic, Phase 0-1 follow-up to #387. The mechanism (#393) takes a LOCAL --binary + --sha256sums; add the convenience fetch so ironcache upgrade --to latest (or --to <version>) downloads + verifies them itself - the "easy upgrade" UX.
Scope: a BinarySource impl (the trait + a LocalFile impl already exist) that fetches the target tarball + SHA256SUMS (+ the signature once #386 lands) from GitHub Releases (releases/latest or a tag) or a configured artifact URL. Reuse the pinned tokio-rustls/ring already in the workspace for HTTPS (a minimal bounded HTTP/1.1 GET, like the console's httpclient) - do NOT add reqwest/hyper (musl + cargo-deny posture). Verify the download against SHA256SUMS (the existing Verifier) before it ever reaches the swap. Bounded (size cap + timeout), resumable-not-required.
Acceptance: ironcache upgrade --to latest on a node with network fetches, verifies, and upgrades with the same SAVE-first + health-gate + auto-rollback path as the local-file flow. Depends on: #393 (the mechanism); composes with #386 (verify anchor).
Part of the upgrade epic, Phase 0-1 follow-up to #387. The mechanism (#393) takes a LOCAL
--binary+--sha256sums; add the convenience fetch soironcache upgrade --to latest(or--to <version>) downloads + verifies them itself - the "easy upgrade" UX.Scope: a
BinarySourceimpl (the trait + aLocalFileimpl already exist) that fetches the target tarball +SHA256SUMS(+ the signature once #386 lands) from GitHub Releases (releases/latestor a tag) or a configured artifact URL. Reuse the pinnedtokio-rustls/ringalready in the workspace for HTTPS (a minimal bounded HTTP/1.1 GET, like the console's httpclient) - do NOT add reqwest/hyper (musl + cargo-deny posture). Verify the download againstSHA256SUMS(the existingVerifier) before it ever reaches the swap. Bounded (size cap + timeout), resumable-not-required.Acceptance:
ironcache upgrade --to lateston a node with network fetches, verifies, and upgrades with the same SAVE-first + health-gate + auto-rollback path as the local-file flow. Depends on: #393 (the mechanism); composes with #386 (verify anchor).