Repository navigation
Open
Labels
cryptography 🔐Cryptography relatedCryptography relatedtesting 🔁Something related to testsSomething related to teststo-groom 🤔Needs groomingNeeds grooming
Description
Why
Neither the keygen cache nor the SRS is persisted across CI runs (the toolchain-and-cache action only saves dependency artifacts through Swatinem/rust-cache), so every nightly and every slow PR leg starts cold.
What
Add an actions/cache layer for target/mithril-circuit-test-cache with a three-layer invalidation design: content-keyed directories for semantic staleness, a versions-scoped cache key for serialization format drift, and self-healing readers as backstop.
How
Paths are relative to mithril-stm/src/ unless they start with .github/.
- Add an
actions/cache/restorestep fortarget/mithril-circuit-test-cachein the test job of.github/workflows/test-rust.yml(next to thetoolchain-and-cachecomposite step), with an exact key folding a manual generation token and a hash of themidnight-*entries ofCargo.lock - Scope every
restore-keysprefix to that versions hash so amidnight-proofsupgrade (serialization format drift) can never restore stale bytes - Save with
actions/cache/saveonly from the runs that execute the full slow suite (theinclude-slow-tests: trueinvocation fromnightly-dispatcher.yml); PR runs stay restore-only - Make the readers self-healing: on deserialization failure,
KeyProvider::cache_stateandread_optional(circuits/key_provider.rs) andTrustedSetupProvider::get_trusted_setup_parameters(circuits/trusted_setup.rs) should delete the offending file and regenerate instead of failing the test - Prune fingerprint directories not touched by the current run before saving, so retired fingerprints do not accumulate in the archive
- Make one recursive verifying-key cache canonical for both the circuit tests and
IvcSnarkProverSetup::build_for_test_degree, with the prover path storing only the additional proving key: todayproof_system/ivc_halo2_snark/prover_setup.rsandcircuits/halo2_ivc/tests/common/generators/setup.rshold the same key under two protocols, becauseKeyProvider::verification_keytreats a missing proving key as a miss and regenerates the pair - Assess the gain (expected: removes the cold start from warm CI runs) and report it in the issue
Depends on #3433.
Metadata
Metadata
Assignees
Labels
cryptography 🔐Cryptography relatedCryptography relatedtesting 🔁Something related to testsSomething related to teststo-groom 🤔Needs groomingNeeds grooming
Activity