Conversation
…uccinctlabs#789) - Add GitHub Action workflow using tibdex/backport@v2 - Detects backport/* labels on merged PRs to main - Automatically cherry-picks changes to maintenance branches - Posts comments on original PR if conflicts detected - Update CONTRIBUTING.md with backporting guidelines
* test(precompiles): add cycle tracker regression tests Add unit tests for precompile cycle tracking to prevent regressions like the one in commit 62d3a1d where cycle tracking was dropped. Changes: - Add shared `cycle_tracker` constants module with names and keys - Refactor `get_precompile_tracker_name` to use `PrecompileId` matching - Update consumers (stats.rs, types.rs) to use shared constants - Add 10 unit tests covering tracker name mapping and consistency * chore: bump elfs * chore: bump elfs * chore: bump elfs
…inctlabs#776) * feat(witness-cache): add caching for witness generation Add witness caching to reduce 2-hour bottleneck in multi.rs and cost_estimator scripts. Cache WitnessData (not SP1Stdin) to disk with keys (chain_id, start_block, end_block). New features: - Witness cache module with save/load functions using rkyv serialization - cfg_if conditional compilation for EigenDA support - Three cache flags: --cache (default), --use-cache (load only), --save-cache (force regenerate) - Multi-script integration with cache status messages - Cost estimator parallel cache loads per batch range - Comprehensive documentation on cache usage and management Cache location: data/{chain_id}/witness-cache/{start_block}-{end_block}.bin DA compatibility: Ethereum/Celestia compatible, EigenDA separate cache Files changed: - utils/host/src/witness_cache.rs (NEW) - utils/host/src/lib.rs, Cargo.toml - scripts/utils/src/lib.rs - scripts/prove/bin/multi.rs - scripts/utils/bin/cost_estimator.rs - book/advanced/cost-estimation-tools.md (renamed from cost-estimator.md) - book/SUMMARY.md * fix(witness-cache): use SP1Stdin caching for cost_estimator to fix CI - Add SP1Stdin cache functions using bincode (DA-agnostic) - cost_estimator.rs now caches SP1Stdin instead of WitnessData - Remove WitnessDataType type constraint that caused CI failures - Fix race condition in multi.rs by using match pattern with graceful fallback SP1Stdin is the same type regardless of which DA witness generator produced it, so it works with generic host types. This fixes the CI type mismatch error when running with --features celestia/eigenda. * refactor(witness-cache): unify on SP1Stdin caching for DA-agnosticism Switch both multi.rs and cost_estimator.rs to use SP1Stdin caching instead of WitnessData caching. This fixes CI failures when running with different DA feature flags (celestia, eigenda). SP1Stdin is DA-agnostic - it's the same type regardless of which witness generator produced it. This means cache files now work across all DA types (Ethereum, Celestia, EigenDA). Changes: - Update multi.rs to cache SP1Stdin using bincode - Simplify witness_cache.rs to only contain SP1Stdin functions - Remove eigenda feature flag from utils/host (no longer needed) - Update documentation to reflect SP1Stdin caching * refactor(witness-cache): address PR review comments - Use tracing macros instead of println/eprintln in multi.rs - Fix DA compatibility docs: clarify that cache files are compatible between Ethereum ↔ Celestia, but NOT with EigenDA - Simplify cache flags: remove --use-cache and --save-cache, keep only --cache for simpler UX
…games (succinctlabs#794) When spawn_game_proving_task skipped a game (due to vkey mismatch or deadline passed), callers still incremented their task counters, causing incorrect tracking. A single foreign game could permanently block defense proving. Changed spawn_game_proving_task to return Ok(bool) to distinguish between: - Ok(true): task was spawned (increment counters) - Ok(false): task was skipped (don't increment) - Err: actual error occurred This ensures active_defense_tasks_count and active_proving are only incremented when tasks are actually spawned. Fixes: succinctlabs#758 (review)
Allow `backport: <description>` format for backport PRs to pass the semantic PR title check.
…labs#774 (succinctlabs#801) PR succinctlabs#774 introduced ABI-breaking changes without bumping contract versions: - OPSuccinctDisputeGame: function rename (l2BlockNumber → l2SequenceNumber), constructor change - OPSuccinctFaultDisputeGame: public state var type change (OutputRoot → Proposal) These changes break calling convention for any consumer expecting the old ABI. Bump versions to reflect the breaking changes and align with semver policy. - OPSuccinctDisputeGame: v3.0.0 → v4.0.0 - OPSuccinctFaultDisputeGame: 1.0.0 → 2.0.0
* chore: release v4.0.1 * chore: bump elfs
# Conflicts: # elf/aggregation-elf # elf/eigenda-range-elf-embedded # elf/range-elf-bump # elf/range-elf-embedded # scripts/prove/bin/multi.rs # scripts/utils/bin/cost_estimator.rs
# Conflicts: # elf/aggregation-elf # elf/eigenda-range-elf-embedded # elf/range-elf-bump # elf/range-elf-embedded
Performance Comparison (ELF: eigenda-range-elf-embedded)Range 17545029~17545034
|
412a5cc to
d2921cf
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
Bugbot Autofix is OFF. To automatically fix reported issues with Cloud Agents, enable Autofix in the Cursor dashboard.
|
There was a patch release: https://github.com/succinctlabs/op-succinct/releases/tag/v4.0.1 I guess we should update to that right away. |
# Conflicts: # Cargo.lock # elf/aggregation-elf # elf/eigenda-range-elf-embedded # elf/range-elf-bump # elf/range-elf-embedded
d2921cf to
c38a850
Compare
|
It seems that the only public breaking changes in The proposer is not retrieving this value (it's not in the contract binding interface), so from the proposer side we should be backwards compatible without upgrading the contract. Thus, we don't need to deploy any new contract versions on Chaos for testing, correct? |
Hm, I guess the proposer calls the newly added function l2SequenceNumber(), so we might need to redeploy the contract as well to test the proposer. |
Previously we merged v4.0.0-rc.2, and this PR now merges the final release v4.0.1.
v4.0.1 includes:
--cacheto enable witness data caching in cost-estimator and multi (https://github.com/celo-org/op-succinct/blob/7bfa64372cea807e7547e8afc8a9778be40c079e/book/advanced/cost-estimation-tools.md#witness-caching)OPSuccinctFaultDisputeGameversion 1.0.0 → 2.0.0 to reflect the breaking changesNote
Medium Risk
Moderate risk due to dependency/version upgrades and changes to proposer task-spawning/caching behavior that can affect proof generation and operational workflows, though changes are mostly additive and guarded (cache is opt-in, skipped spawns are explicit).
Overview
Updates the workspace to
v4.0.1and aligns dependencies (notablycelo-konarev bump and broad lockfile churn), along with contract semver constant bumps in both validity and fault-proof dispute games.Adds disk-based
SP1Stdincaching (newutils/hostwitness_cachemodule) and wires it into themultiandcost-estimatorscripts via a renamed--cacheflag, with new docs replacing the old cost-estimator page.Fixes proposer behavior by making
spawn_game_proving_taskreturn whether a task was actually spawned (vs skipped due to deadline/vkey mismatch), and refactors precompile cycle-tracker keys into shared constants with added tests to ensure key/name consistency.Introduces GitHub automation for label-driven backports (
tibdex/backport) and expands semantic PR title validation to allow abackporttype.Written by Cursor Bugbot for commit c38a850. This will update automatically on new commits. Configure here.