First release of the standalone Dusk/Rusk state snapshot distribution CLI.
Highlights
- Signed provisioner state snapshot flows:
pack,verify,publish,promote,list,restore,gc, andrebuild-index. - Tip-aware orchestration:
plan,watch, andcapturewith strict calendar capture rules and freshness-gatedlatestpromotion. - Stopped-pack capture safety: Rusk is stopped only long enough to create a verified immutable local candidate; upload, promotion, and index rebuild happen from that candidate after restart.
- Archive/blob support: checkpoint-aligned archive snapshots, WORM-like blob depot, KZG sidecar verification, contiguous blob coverage verification, and verification-first archive restore.
- State snapshot artifacts default to
snapshot.tar.gz;snapshot.tar.zstremains available with--compression zstd.
Operational Notes
- Archive/blob support is opt-in and separate from the normal provisioner snapshot path.
- Normal GC intentionally does not delete
v1/blobs/**; object-store lifecycle policies must not expire that prefix. - Archive checkpoints are retained through explicit archive roots under
v1/archive/pointers/andv1/archive/pins/. - Production archive/blob sources should require signatures for blob ranges, blob coverage, archive manifests, and archive pointers.
Validation
Release checks run from the tagged tree:
cargo fmt --checkcargo test- 63 tests passedcargo clippy --all-targets -- -D warningsbash -n scripts/local-archive-blob-validation.sh
Additional local soak validation completed before release:
- Real local blob transactions and sidecars.
RESTORED_NODE_CHECK=1archive/blob handoff with gzip state snapshots.- Longer range handoff, three repeat handoffs, signed mode, zstd compatibility, GC checks, and corruption matrix.
Post-release smoke validation:
- Downloaded the GitHub release asset.
- Verified the published SHA-256 checksum.
- Confirmed
rusk-state-snapshot --versionprintsrusk-state-snapshot 0.1.0. - Confirmed top-level and archive/blob command help works.
- Ran a temporary Hetzner/S3-prefix staging publish/verify/restore flow using the release binary, then deleted all objects under the temporary prefix and verified it was empty.
Asset
Linux x86_64 binary archive:
rusk-state-snapshot-v0.1.0-x86_64-unknown-linux-gnu.tar.gz
sha256: aa4d6dc0c962a7a36e8658bbee1f863c54bf9a58b2733b5e34bb4a17ec40fe1d