Skip to content

Conversation

@seolaoh
Copy link
Collaborator

@seolaoh seolaoh commented Jan 27, 2026

Summary

Updates our fork to upstream succinctlabs/op-succinct@5c7a487.

Key Updates

  • kona v1.2.7 (includes Jovian support)
  • hokulea v1.1.4
    • embeds recency window as 48h, and recency check will be enabled once eigenDA is upgraded to v4 cert
  • Major refactor of proposer/challenger — requires flag changes and testing
  • op-contracts v5.0.0 support

Closes https://github.com/celo-org/celo-blockchain-planning/issues/1322
Closes https://github.com/celo-org/celo-blockchain-planning/issues/1284

Known Issues

Notes

This PR contains multiple merge commits and fixup commits due to iterative syncing while waiting for upstream PRs to be merged.


Note

Medium Risk
Mostly CI/workflow-only changes, but they significantly alter when/where tests run (new concurrency rules, triggers, and job matrices), which can cause unexpected coverage gaps or increased CI load if misconfigured.

Overview
CI workflows are restructured and expanded. A new composite action setup-e2e-sysgo standardizes Rust/Foundry/Go/Just setup and contract builds for sysgo E2E runs, and new e2e-sysgo-tests / e2e-sysgo-network-prover workflows add matrix-based short and long-running E2E coverage (including conditional network-prover runs on main).

Workflow triggers and reliability are tightened. Many workflows add shared concurrency (with different behavior for tags/main), add paths/paths-ignore and tag triggers (celo/v*), increase timeouts, refactor ELF verification to call just build-elfs, split integration-tests into fault-proof vs DA-host jobs with matrices, introduce a standalone cost-estimator workflow, and add a pull_request_target PR title semantic check. .gitignore and .gitmodules are updated for new test submodules and generated artifacts (EigenDA SRS symlink, forge outputs, solc JS).

Written by Cursor Bugbot for commit 002cadb. This will update automatically on new commits. Configure here.

Farhad-Shabani and others added 30 commits November 7, 2025 12:01
* refactor: enrich MockPermissionedDisputeGame

* fix: e2e legacy games should use real claims

* refactor: separate drop games check + improved logging

* fix: skip legacy games

* fix: pass factory address for mock game deployment

* fix: simplify legacy game e2e test

* test: ensure proposer can handle game transition while running

* fix: make clippy happy

* docs: update game type transition e2e

* fix: increment cursor if game type not supported

* nit: redundant factory + typo
* fix(fault-proof): retain anchor game in cache

* refactor(fault-proof): fetch anchor outside state lock

* test(fault-proof): add proposer_retains_anchor_after_bond_claim

* ci: add fp integrations test workflow

* docs: update testing.md

* chore: make clippy happy

* test: move integration test to e2e suite

* refactor: enforce game retention policy at action creation

* chore: fmt

* chore: revert change in just tests
* chore: remove private key for dry run

Also added private key validation on upgrade execution.

* docs(fault_proofs): add missing requirements

Added l1 rpc and private key required for the fp contracts upgrade
call.
…#679)

* fix: compute witness interval from chain

* fix: less contract call

* fix: saturating sub

* fix: start_block
* refactor: filter e2e logging targets

* fix: remove init_logging inside tests

* refactor: standalone init_logging

* fix: missing e2e

* fix: op_succinct_client_utils

Co-authored-by: Taehoon Kim <[email protected]>

---------

Co-authored-by: Taehoon Kim <[email protected]>
* fix: sync backwards to avoid caching from genesis

* refactor: define GameFetchResult

* fix: if syncing failed retry before continue

* fix: if cursor lt latest_index

* fix: define start_cursor

* chore: add some logs

* fix: check if game already exists
)

* refactor: helper methods on TestEnvironment

* refactor: validation_anchor_reset

* refactor: send_contract_transaction

* chore: simplify e2e tests

* feat: define TestPrivateKeys

* refactor: game_type field

* refactor: monitoring methods on TestEnvironment

* refactor: deploy mock permissioned game

* nit: rename latest_game_info

* fix: remove const keys, type
…tlabs#667)

* feat: load .env from the specified path before falling back to root

* refactor: Try loading .env when project root missing

If project root isn't found, still attempt to load the provided env file
before emitting a warning to avoid spurious messages when the file
exists.

---------

Co-authored-by: Victor Castell <[email protected]>
* fix: action triggers + concurrency

* nit

* fix: apply review comments
…ctlabs#686)

* refactor: define init_proposer method

* test: some sync_state test cases

* refactor: add canonical_head_l2_block to snapshot

* test: complete cases for in_progress games

* deps: rstest

* refactor: extend to cover cases with anchor game

* chore: replace under e2e feature

* test: some anch cases

* test: test_sync_state_with_max_game_deadline_gap

* fix: do not remove subtree of lowest cached game

* refactor: define Assertion trait

* fix: update start_cursor only if fetching succeed

* test: test_sync_state_with_invalid_game_removes_subtree

* test: expand test cases for invalid games

* nit: some clean-ups

* ci: e2e timeout set to 60mins

* nit: typo

* ci: test target matrix

* fix: typo

* refactor: define Cursor type

* refactor: simplify invalid game eviction

* chore: remove unused Cursor methods

* nit: turn on e2e feature
* chore: bump kona to kona-client/v1.2.2

* feat: use a custom crypto for kzg point eval precompile

* feat: add cycle tracker back

* chore: bump elfs

* chore: fix fmt

* chore: bump hokulea

* chore: bump hana to v1.4.0-mocha

* chore: bump hokulea to hokulea-client/v1.1.0
* chore: bump to v3.4.0

* chore: bump to 3.4.0-rc.1
…nctlabs#691)

* fix: switch to RwLock for state

* fix: lower fetch_interval for tests

* fix: try with fetch_interval=5

* fix: test_proposer_recovery_after_canonical_head_invalidation

* nit

* fix: missing e2e feature flag

* fix: up to 10

* fix: look up for correct parent_id

* nit: bring back e2e feature

* nit: docstring

* fix: single lock on removing subtree of invalid games
* fix: switch to RwLock for state

* fix: lower fetch_interval for tests

* fix: try with fetch_interval=5

* fix: test_proposer_recovery_after_canonical_head_invalidation

* nit

* fix: missing e2e feature flag

* fix: up to 10

* fix: look up for correct parent_id

* nit: bring back e2e feature

* nit: docstring

* fix: single lock on removing subtree of invalid games

* refactor(fault-proof): avoid IO under write lock

---------

Co-authored-by: Farhad Shabani <[email protected]>
* fix: update Cargo.lock

* chore: update elf
* fix: update Cargo.lock

* chore: update elf

* fix: higher timeout for *_proposer_running

* feat: add just update-elf

* refactor: use just in elf CI

* nit: rm newline

* fix: breakdown elf just cmds + update verify-binaries.md

* nit

* fix: revert timeouts

---------

Co-authored-by: Taehoon Kim <[email protected]>
* feat: accept custom L1/L2 config dirs

* refactor: setup logger and add logs

* doc: add L1/L2 config dir under optional vars

* nit: consistent log message

* fix: multilingual removed

* fix: mdbook lints

* fix: keep mdbook on v0.4 for now

* fix: [email protected]

* fix: default values in book

* feat: log config from file if exists
* docs: fix typo in proposer env file

* docs: remove unnecessary direction

* docs: fix typo

* docs: align challenger.md
succinctlabs#694)

* test(fault-proof): add test_invalid_game_type_handling

* test(fault-proof): remove redundant legacy game filtering e2e test

* test: add missing import

* test(fault-proof): add test_sync_state_filters_multiple_legacy_games

* test(fault-proof): remove redundant legacy game filter e2e test

* test(fault-proof): add test_sync_state_filters_non_respected_game_type

* test(fault-proof): restore game type transition e2e tests

* test(fault-proof): consolidate redundant legacy game filtering tests

* docs: update comment for test_sync_state_filters_legacy_games

* test: add test helpers and restore e2e tests

* nit: make fmt happy

* nit: make clippy happy

---------

Co-authored-by: Farhad Shabani <[email protected]>
…labs#701)

* fix: higher timeout for *_proposer_running

* feat: add just build-elfs

* nit: rm newline

* feat: setup minimal e2e test with op-devstack

* feat: Justfile

* feat: binding generator script

* test: get minimal test working

* fix: update-package

* refactor: gen few bindings and use for init_test

* chore: apply changes from /optimism

* chore: revert irrelavant changes

* test: TestValidityProposer_L2OODeployedAndUp

* chore: rename package to validity_test

* deps: redirect to succinctlabs/optimism

* refactor: override some params

* chore: separate out presets from tests

* feat: deploy SP1MockVerifier after

* fix: do not require ETHERSCAN_API_KEY

* ci: e2e-sysgo.yml

* fix: missing working-directory

* chore: separate out adapter code

* fix: trim just cmds

* refactor: supervisor wirings

* test: TestValidityProposer_ProvingSingleRange

* deps: update

* feat: NextBlockNumber

* fix: start proving from 1 + default sequencing window

* fix: latest L2 block number 1 _L2OODeployedAndUp

* docs: add README

* chore: replace gen-binding.sh

* deps: update optimism rev

* ci: switch to runs-on

* chore: rm unnecessary compressed/README

* fix: submodule

* docs: Maintenance section

* deps: latest rev on op-succinct-sysgo

* fix: WithL2OOStartingBlockNumber
* feat: add preflight check script for fp

* docs: update and fix

* chore: cleanup

* chore: default to .env.preflight

* chore: apply comments

* docs: add note about altda feature flags

* feat: introduce SET_IMPL_BLOCK env var

* refactor: make AGG_PROOF_MODE configurable

* chore: make USE_KMS_REQUESTER optional

* docs: make l1 beacon rpc required

* configurable CHUNK_SIZE

* fix: effective strategy

* fix

* cleanup

* docs

* docs

---------

Co-authored-by: Farhad Shabani <[email protected]>
* test(fault-proof): add bond-claim eviction test

* test(fault-proof): remove unnecessary step

* test(fault-proof): add test_bond_claim_eviction_multi_branch
…labs#700)

* test(fault-proof): add test_invalid_game_type_handling

* test(fault-proof): remove redundant legacy game filtering e2e test

* test: add missing import

* test(fault-proof): add test_sync_state_filters_multiple_legacy_games

* test(fault-proof): remove redundant legacy game filter e2e test

* test(fault-proof): add test_sync_state_filters_non_respected_game_type

* test(fault-proof): restore game type transition e2e tests

* test(fault-proof): consolidate redundant legacy game filtering tests

* docs: update comment for test_sync_state_filters_legacy_games

* test: add test helpers and restore e2e tests

* test(fault-proof): add bond-claim eviction test

* test(fault-proof): add test_challenger_wins_cascade_removal

* test: use new methods

* chore: fmt

* chore: typo

* test(fault-proof): add test_mixed_states_multiple_branches

* test(fault-proof): add cases with anchor to cascade removal

* test(fault-proof): fix to challenge before game is over

* test(fault-proof): add multiple challenger wins branches case

* check if evicted from cache

* test(fault-proof): add anchor_parallel_challenger_wins_with_child

* typo

* test: add proposer default fault_dispute_game helper
…ctlabs#702)

* test(fault-proof): add test_invalid_game_type_handling

* test(fault-proof): remove redundant legacy game filtering e2e test

* test: add missing import

* test(fault-proof): add test_sync_state_filters_multiple_legacy_games

* test(fault-proof): remove redundant legacy game filter e2e test

* test(fault-proof): add test_sync_state_filters_non_respected_game_type

* test(fault-proof): restore game type transition e2e tests

* test(fault-proof): consolidate redundant legacy game filtering tests

* docs: update comment for test_sync_state_filters_legacy_games

* test: add test helpers and restore e2e tests

* test(fault-proof): add bond-claim eviction test

* test(fault-proof): add test_challenger_wins_cascade_removal

* test: use new methods

* chore: fmt

* chore: typo

* test(fault-proof): add test_mixed_states_multiple_branches

* test(fault-proof): add cases with anchor to cascade removal

* test(fault-proof): fix to challenge before game is over

* test(fault-proof): add test_in_progress_games_resolution_marking

* make clippy happy

* test(fault-proof): add test_bond_claim_marking

* test(fault-proof): add proof provided cases

* surface errors via ?

* drop test doc to reflect current coverage

* use default fault dispute game accessor

* drop stale changes in bond claim eviction test
…ity window (succinctlabs#705)

* fix: error if not enough finalized L2 block

* chore: same logic for fdg config

* fix: no need for error log

* doc: add note for why excluded genesis block

* nit
…#706)

* test(fault-proof): add test_invalid_game_type_handling

* test(fault-proof): remove redundant legacy game filtering e2e test

* test: add missing import

* test(fault-proof): add test_sync_state_filters_multiple_legacy_games

* test(fault-proof): remove redundant legacy game filter e2e test

* test(fault-proof): add test_sync_state_filters_non_respected_game_type

* test(fault-proof): restore game type transition e2e tests

* test(fault-proof): consolidate redundant legacy game filtering tests

* docs: update comment for test_sync_state_filters_legacy_games

* test: add test helpers and restore e2e tests

* test(fault-proof): add bond-claim eviction test

* test(fault-proof): add test_challenger_wins_cascade_removal

* test: use new methods

* chore: fmt

* chore: typo

* test(fault-proof): add test_mixed_states_multiple_branches

* test(fault-proof): add cases with anchor to cascade removal

* test(fault-proof): fix to challenge before game is over

* test(fault-proof): add test_in_progress_games_resolution_marking

* make clippy happy

* test(fault-proof): add test_bond_claim_marking

* test(fault-proof): add proof provided cases

* test(fault-proof): add more targeted integrations tests

* test(fault-proof): add test for mixed proposal statuses across branches

* test(fault-proof): add test_three_sibling_states_eviction_and_pruning

* assert anchor game credit

* fix test_anchor_with_zero_credit_sibling_and_in_progress_branch

* clean up unintented merge
Since we have different contract deploy logic, we can't run those tests. I believe our contracts are not changed from upstream code, so it makes sense to rely on upstream contract tests.
@seolaoh seolaoh force-pushed the seolaoh/rebase-kona-v1.2.7 branch from 4cc301b to 47f447c Compare January 28, 2026 13:03
@seolaoh seolaoh marked this pull request as ready for review January 28, 2026 13:04
Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

This is the final PR Bugbot will review for you during this billing cycle

Your free Bugbot reviews will reset on February 11

Details

Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

@seolaoh
Copy link
Collaborator Author

seolaoh commented Jan 28, 2026

@Mc01 Could you review the contract changes in this PR? It includes 7a9afca, which introduced some updates to the contract interfaces. So I tried to keep our own changes in deploy scripts and applied the required updates, but I'd appreciate if you could take a look.

@seolaoh seolaoh requested review from Mc01, karlb and palango January 28, 2026 13:22
Copy link

@palango palango left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Big PR, I focused on reviewing your commits.

Some questions:

@seolaoh
Copy link
Collaborator Author

seolaoh commented Jan 29, 2026

Big PR, I focused on reviewing your commits.

Some questions:

  • Does this solve celo-org/celo-blockchain-planning#1284 as well, as we now use the default and don't set it to zero any more?!
  • What's the path forward for the reth patch? I'd hope to remove this asap.

According to https://github.com/Layr-Labs/hokulea/blob/d292054/crates/eigenda/src/eigenda_preimage.rs#L44-L53, this update includes the embedded recency window 48h in hokulea, and the recency check will be enabled once we upgrade to eigenDA v4.

reth patch was needed since op-succinct had a compilation issue of a reth crate due to rkyv dependency causing the compiler to not defer a trait resolution automatically. (ref: paradigmxyz/reth#21336) But it will be removed once all the dependencies related to the reth crate (rollup-boost, kona, rsp, sp1-cc, hokulea) is bumped to reth > v1.10.2.

@seolaoh seolaoh merged commit f6ce699 into develop Jan 29, 2026
13 of 16 checks passed
@seolaoh seolaoh deleted the seolaoh/rebase-kona-v1.2.7 branch January 29, 2026 13:23
@seolaoh seolaoh restored the seolaoh/rebase-kona-v1.2.7 branch January 29, 2026 13:51
seolaoh added a commit that referenced this pull request Jan 29, 2026
@Mc01 Mc01 mentioned this pull request Jan 29, 2026
@Mc01 Mc01 deleted the seolaoh/rebase-kona-v1.2.7 branch February 3, 2026 14:27
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants