From 6845c92accd578a23b4aad26620abd905eeadf3d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Turmel?= Date: Mon, 7 Sep 2026 14:45:38 +0200 Subject: [PATCH 1/5] refactor(stm): add missing binaries in package --- mithril-stm/Cargo.toml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/mithril-stm/Cargo.toml b/mithril-stm/Cargo.toml index 56b03fd809d..2975c76bbc8 100644 --- a/mithril-stm/Cargo.toml +++ b/mithril-stm/Cargo.toml @@ -15,6 +15,18 @@ include = [ ".gitignore", "src/circuits/halo2/non_recursive_circuit_verification_key_for_production.bin", "src/circuits/halo2_ivc/recursive_circuit_verification_key_for_production.bin", + "src/circuits/halo2/tests/golden/assets/golden_non_recursive_verification_key.bin", + "src/circuits/halo2_ivc/tests/assets/golden_recursive_circuit_verification_key.bin", + "src/circuits/halo2_ivc/tests/assets/recursive_step_output_accumulator_bytes.bin", + "src/circuits/halo2_ivc/tests/assets/recursive_proof_accumulator_bytes.bin", + "src/circuits/halo2_ivc/tests/assets/recursive_chain_state.bin", + "src/circuits/halo2_ivc/tests/assets/verification_context.bin", + "src/circuits/halo2_ivc/tests/assets/recursive_step_output.bin", + "src/circuits/halo2_ivc/tests/assets/genesis_step_output.bin", + "src/circuits/halo2_ivc/tests/assets/same_epoch_step_output.bin", + "src/circuits/halo2_ivc/tests/assets/first_step_cert.bin", + "src/circuits/halo2_ivc/tests/assets/genesis_benchmark_fixture.bin", + "src/proof_system/halo2_snark/golden_vectors/*.txt" ] [package.metadata.docs.rs] From 6ab5c7d80f82da98e2107caac099387797ced155 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Turmel?= Date: Mon, 7 Sep 2026 15:23:17 +0200 Subject: [PATCH 2/5] feature(ci): add a step in the nightly dispatcher to check cargo publish in dry run with verification --- .../actions/publish-rust-crates/action.yml | 6 +++++- .github/workflows/nightly-dispatcher.yml | 20 +++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/.github/workflows/actions/publish-rust-crates/action.yml b/.github/workflows/actions/publish-rust-crates/action.yml index a51fec9a724..85ba452c67d 100644 --- a/.github/workflows/actions/publish-rust-crates/action.yml +++ b/.github/workflows/actions/publish-rust-crates/action.yml @@ -5,6 +5,10 @@ inputs: dry_run: description: Dry run will not publish to crates.io, just test it. required: true + dry_run_verify: + description: Build verification step when running the dry run publish. + required: false + default: "false" packages: description: comma separated list of rust crates to publish. required: true @@ -74,7 +78,7 @@ runs: run: | echo "::group::Cargo publish packages (dry run)" echo "Packages to publish (dry-run): '${{ steps.check_versions.outputs.packages_to_deploy }}'" - cargo publish ${{ steps.check_versions.outputs.cargo_package_args }} --dry-run --no-verify --allow-dirty ${{ inputs.publish_args }} + cargo publish ${{ steps.check_versions.outputs.cargo_package_args }} --dry-run ${{ inputs.dry_run_verify == 'true' && '' || '--no-verify' }} --allow-dirty ${{ inputs.publish_args }} echo "::endgroup::" - name: Cargo package list diff --git a/.github/workflows/nightly-dispatcher.yml b/.github/workflows/nightly-dispatcher.yml index e32bba4e87a..8fc251a1052 100644 --- a/.github/workflows/nightly-dispatcher.yml +++ b/.github/workflows/nightly-dispatcher.yml @@ -26,6 +26,25 @@ jobs: test-e2e: uses: ./.github/workflows/test-e2e.yml + publish-crate-dry-run-with-verification: + runs-on: ubuntu-24.04 + steps: + - name: Checkout sources + uses: actions/checkout@v6 + + - name: Install stable toolchain + uses: dtolnay/rust-toolchain@master + with: + toolchain: stable + + - name: Publish package to crates.io + uses: ./.github/workflows/actions/publish-rust-crates + with: + dry_run: "true" + dry_run_verify: "true" + publish_args: "--features rustls" + packages: mithril-stm, mithril-build-script, mithril-common, mithril-aggregator-client, mithril-aggregator-discovery, mithril-cardano-node-internal-database, mithril-client, mithril-merkle-tree + notify-on-failure: uses: ./.github/workflows/test-notify-on-failure.yml needs: @@ -35,6 +54,7 @@ jobs: test-client, test-rust, test-e2e, + publish-crate-dry-run-with-verification, ] if: failure() secrets: inherit From 5d99b959b3f7357c0be29edc8237c50a303cfac9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Turmel?= Date: Mon, 7 Sep 2026 16:51:29 +0200 Subject: [PATCH 3/5] feature(ci): add a step in the nightly-dispatcher to clippy check all workspace crates --- .../actions/publish-rust-crates/action.yml | 2 +- .github/workflows/nightly-dispatcher.yml | 17 +++++++++ .github/workflows/scripts/clippy-check.sh | 35 +++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100755 .github/workflows/scripts/clippy-check.sh diff --git a/.github/workflows/actions/publish-rust-crates/action.yml b/.github/workflows/actions/publish-rust-crates/action.yml index 85ba452c67d..bbf6ff2f4b5 100644 --- a/.github/workflows/actions/publish-rust-crates/action.yml +++ b/.github/workflows/actions/publish-rust-crates/action.yml @@ -78,7 +78,7 @@ runs: run: | echo "::group::Cargo publish packages (dry run)" echo "Packages to publish (dry-run): '${{ steps.check_versions.outputs.packages_to_deploy }}'" - cargo publish ${{ steps.check_versions.outputs.cargo_package_args }} --dry-run ${{ inputs.dry_run_verify == 'true' && '' || '--no-verify' }} --allow-dirty ${{ inputs.publish_args }} + cargo publish ${{ steps.check_versions.outputs.cargo_package_args }} --dry-run ${{ inputs.dry_run_verify == 'false' && '--no-verify' || '' }} --allow-dirty ${{ inputs.publish_args }} echo "::endgroup::" - name: Cargo package list diff --git a/.github/workflows/nightly-dispatcher.yml b/.github/workflows/nightly-dispatcher.yml index 8fc251a1052..1d68dafe73f 100644 --- a/.github/workflows/nightly-dispatcher.yml +++ b/.github/workflows/nightly-dispatcher.yml @@ -45,6 +45,22 @@ jobs: publish_args: "--features rustls" packages: mithril-stm, mithril-build-script, mithril-common, mithril-aggregator-client, mithril-aggregator-discovery, mithril-cardano-node-internal-database, mithril-client, mithril-merkle-tree + clippy-check-all-crates: + runs-on: ubuntu-24.04 + steps: + - name: Checkout sources + uses: actions/checkout@v6 + + - name: Install stable toolchain + uses: dtolnay/rust-toolchain@master + with: + toolchain: stable + + - name: Run clippy check on all crates + shell: bash + run: | + ./.github/workflows/scripts/clippy-check.sh + notify-on-failure: uses: ./.github/workflows/test-notify-on-failure.yml needs: @@ -55,6 +71,7 @@ jobs: test-rust, test-e2e, publish-crate-dry-run-with-verification, + clippy-check-all-crates, ] if: failure() secrets: inherit diff --git a/.github/workflows/scripts/clippy-check.sh b/.github/workflows/scripts/clippy-check.sh new file mode 100755 index 00000000000..4913088568d --- /dev/null +++ b/.github/workflows/scripts/clippy-check.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env bash +set -eu -o pipefail + +if [[ "${TRACE-0}" == "1" ]]; then set -o xtrace; fi + + +clippy_all_crates() { + local exit_code=0 + mapfile -t members < <( + cargo metadata --no-deps --format-version 1 | + jq -r '.packages[].name' + ) + + for package_name in "${members[@]}"; do + additional_args=() + if [[ " mithril-client " == *" ${package_name} "* ]]; then + additional_args+=(--features rustls) + fi + + if [[ " mithril-stm " == *" ${package_name} "* ]]; then + additional_args+=(--features "future_snark,rustls,benchmark-internals") + fi + + echo -e " Running clippy for package: ${package_name}" + if ! cargo clippy --all-targets --package "${package_name}" "${additional_args[@]}" -- -D warnings; then + echo -e " Clippy check failed for package: ${package_name}" + exit_code=1 + fi + done + + return "$exit_code" +} + +clippy_all_crates +exit $? From c903562d912a27dfafb7d507856f405eff552b8b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Turmel?= Date: Tue, 8 Sep 2026 17:48:13 +0200 Subject: [PATCH 4/5] refactor(stm, client): set optional features has dependencies to avoid exposing them has features of the crate --- mithril-client/Cargo.toml | 2 +- mithril-stm/Cargo.toml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/mithril-client/Cargo.toml b/mithril-client/Cargo.toml index 9f84498a3d3..c9ad64a86cc 100644 --- a/mithril-client/Cargo.toml +++ b/mithril-client/Cargo.toml @@ -25,7 +25,7 @@ default = ["num-integer-backend", "enable-http-compression"] full = ["fs"] # Enable file system-related functionality for Cardano database downloads -fs = ["flume", "tar", "tokio/rt", "zstd"] +fs = ["dep:flume", "dep:tar", "tokio/rt", "dep:zstd"] unstable = [] # These features are for support of dependent crates only. diff --git a/mithril-stm/Cargo.toml b/mithril-stm/Cargo.toml index 2975c76bbc8..1d394ec2ff7 100644 --- a/mithril-stm/Cargo.toml +++ b/mithril-stm/Cargo.toml @@ -63,7 +63,7 @@ future_snark = [ native-tls = ["reqwest?/native-tls"] rustls = ["reqwest?/rustls"] num-integer-backend = ["dep:num-bigint", "dep:num-integer", "dep:num-rational", "dep:num-traits"] -rug-backend = ["rug/default"] +rug-backend = ["dep:rug"] [dependencies] anyhow = { workspace = true } From 9843fbf63d61f96b0194aed95fce92233d6dff96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Cl=C3=A9ment=20Turmel?= Date: Wed, 9 Sep 2026 17:00:08 +0200 Subject: [PATCH 5/5] chore: upgrade crate versions * mithril-client from `0.14.21` to `0.14.22` * mithril-stm from `0.12.14` to `0.12.15` --- Cargo.lock | 4 ++-- mithril-client/Cargo.toml | 2 +- mithril-common/Cargo.toml | 2 +- mithril-stm/Cargo.toml | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index c71b42b9406..2fa95b4ab8f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4418,7 +4418,7 @@ dependencies = [ [[package]] name = "mithril-client" -version = "0.14.21" +version = "0.14.22" dependencies = [ "anyhow", "async-trait", @@ -4834,7 +4834,7 @@ dependencies = [ [[package]] name = "mithril-stm" -version = "0.12.14" +version = "0.12.15" dependencies = [ "anyhow", "blake2 0.10.6", diff --git a/mithril-client/Cargo.toml b/mithril-client/Cargo.toml index c9ad64a86cc..82315d274d6 100644 --- a/mithril-client/Cargo.toml +++ b/mithril-client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mithril-client" -version = "0.14.21" +version = "0.14.22" description = "Mithril client library" authors = { workspace = true } edition = { workspace = true } diff --git a/mithril-common/Cargo.toml b/mithril-common/Cargo.toml index 86d1ad6b922..4db2a0399bf 100644 --- a/mithril-common/Cargo.toml +++ b/mithril-common/Cargo.toml @@ -51,7 +51,7 @@ fixed = "1.31.0" hex = { workspace = true } kes-summed-ed25519 = { version = "0.2.1", features = ["serde_enabled", "sk_clone_enabled"] } mithril-merkle-tree = { path = "../internal/mithril-merkle-tree", version = "0.1.4" } -mithril-stm = { path = "../mithril-stm", version = "0.12.14", default-features = false } +mithril-stm = { path = "../mithril-stm", version = "0.12.15", default-features = false } nom = "8.0.0" rand_chacha = { workspace = true } rand_core = { workspace = true } diff --git a/mithril-stm/Cargo.toml b/mithril-stm/Cargo.toml index 1d394ec2ff7..7657ef5abae 100644 --- a/mithril-stm/Cargo.toml +++ b/mithril-stm/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mithril-stm" -version = "0.12.14" +version = "0.12.15" edition = { workspace = true } authors = { workspace = true } homepage = { workspace = true }