test(stm): recover the ignored IVC prover input preparation tests - #3502
Merged
hjeljeli32 merged 6 commits intoAug 28, 2026
Merged
Conversation
hjeljeli32
requested review from
Alenar,
curiecrypt,
damrobi,
jpraynaud and
turmelclem
as code owners
August 27, 2026 05:27
There was a problem hiding this comment.
Pull request overview
This PR narrows the dependency surface of IvcProverInput::prepare by introducing a verification-only context type, enabling previously #[ignore]d prover-input preparation tests to run fast in CI by sourcing only verifier-side assets (no proving key / SRS heavy setup).
Changes:
- Introduces
IvcProverInputVerificationContextand routesprepare/certificate verification/accumulator folding through it instead of the fullIvcSnarkProverSetup. - Refactors
prover_input.rstests to remove the slowOnceLockfixtures and rely on committed verification-context assets, promoting the tests out of the slow/ignored tier. - Updates slow-test filtering to reflect the removal of the
prover_inputslow module entry.
Reviewed changes
Copilot reviewed 6 out of 6 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| mithril-stm/src/proof_system/ivc_halo2_snark/prover_setup.rs | Adds IvcProverInputVerificationContext and a setup method to construct it from verifier-side artifacts. |
| mithril-stm/src/proof_system/ivc_halo2_snark/prover_input.rs | Updates prepare to take the new context and rewrites tests to use embedded assets (fast CI). |
| mithril-stm/src/proof_system/ivc_halo2_snark/prover_input_helpers.rs | Switches helper functions from full setup dependency to verification context dependency. |
| mithril-stm/src/proof_system/ivc_halo2_snark/proof.rs | Adjusts prover flow to pass verification context into prepare. |
| mithril-stm/src/circuits/halo2_ivc/bench/helpers.rs | Updates bench helper paths to use verification context for off-circuit checks/folding. |
| .github/workflows/scripts/filter-slow-tests.sh | Removes the now-unmatched slow-test filter entry for prover_input module. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
jpraynaud
approved these changes
Aug 27, 2026
damrobi
approved these changes
Aug 27, 2026
hjeljeli32
force-pushed
the
hjeljeli32/3466-recover-ivc-prover-input-preparation-tests
branch
from
August 27, 2026 23:05
3f74d48 to
65a4c66
Compare
hjeljeli32
deleted the
hjeljeli32/3466-recover-ivc-prover-input-preparation-tests
branch
August 28, 2026 00:12
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Content
The seven
#[ignore]prepare_*tests inproof_system::ivc_halo2_snark::prover_inputnever ran. Two were broken rather than dormant:prepareno longer dispatches toprepare_genesisandprovenow rejects a genesis rolling state, so both built a context the production code refuses and failed withinvalid epoch transition at last committed epoch 0. The other five cost about 8 s each, all of it setup: each built a fullIvcSnarkProverSetup, deserializing a 1.0 GB recursive proving key and a 96 MB SRS thatpreparenever reads.preparereads only the certificate verifying key, the KZG verifier parameters and the two fixed-base maps, all of which are already committed as test assets. In CI the 7ests cost 1.9 s in total (0.018-0.391 s each), against an estimated 80-92 s per slow run had they been promoted on the full setup;prove_all_scenariosis unchanged at 1409 s.Changes
prover_setup.rs,prover_input.rs,prover_input_helpers.rs,proof.rs): a newIvcProverInputVerificationContextwith private fields and two constructors — the production one derives the verifier parameters from the setup's own SRS rather than the embedded production constant, the test one derives both fixed-base maps from the supplied keys.prepare,verify_certificate_proofandbuild_next_accumulatortake it; the proving key stays in the setup, first read byprove_with_transcript.prover_input.rs): the base-case happy path needs a Poseidon-transcript proof of the genesis step that no committed asset carries, andprove_all_scenarios' bootstrap path already runs that scenario with a real prover; the genesis-signature case belongs toprepare_genesis, where it is already covered. Both of its surviving assertions moved onto the positive genesis test.prover_input.rs): the threeOnceLockcells amortized nothing under nextest's process-per-test model and are replaced by one helper buildingGlobaland the context from the same decoded keys. Asset-sourced key material stays checked rather than trusted: both positive tests verify the committed previous Poseidon proof against thatGlobal.prover_input.rs,.github/workflows/scripts/filter-slow-tests.sh): the seven tests leavemod slow, which is deleted, and the now-unmatched self-module entry is dropped. The cross-moduleproof::entry stays, so a PR touching this file still runsprove_all_scenarios;.config/nextest.tomlis unchanged, and the test module is renamedtesttotests.Pre-submit checklist
Issue(s)
Closes #3466