Skip to content

params: fix history serve window for verkle test#32127

Merged
s1na merged 5 commits intoethereum:masterfrom
Thegaram:patch-1
Aug 25, 2025
Merged

params: fix history serve window for verkle test#32127
s1na merged 5 commits intoethereum:masterfrom
Thegaram:patch-1

Conversation

@Thegaram
Copy link
Copy Markdown
Contributor

@Thegaram Thegaram commented Jul 1, 2025

EIP-2935 specifies HISTORY_SERVE_WINDOW = 8191. Geth currently uses 8192 This does not break consensus since the history storage system contract is updated via EVM execution. However, the test function getContractStoredBlockHash could return incorrect results.

Fixes #32458.

@fjl
Copy link
Copy Markdown
Contributor

fjl commented Jul 1, 2025

Is this even a protocol parameter?

@Thegaram
Copy link
Copy Markdown
Contributor Author

Thegaram commented Jul 1, 2025

Is this even a protocol parameter?

Technically yes, but it's already included in HistoryStorageCode, so this param is not used explicitly in geth.

@fjl
Copy link
Copy Markdown
Contributor

fjl commented Jul 1, 2025

We should just remove HistoryServeWindow from params then!

@Thegaram Thegaram changed the title fix: use correct EIP-2935 history serve window parameter fix: remove unused HistoryServeWindow from protocol params Jul 1, 2025
@Thegaram
Copy link
Copy Markdown
Contributor Author

Thegaram commented Jul 1, 2025

We should just remove HistoryServeWindow from params then!

Sure, done!

@fjl fjl changed the title fix: remove unused HistoryServeWindow from protocol params params: remove HistoryServeWindow Jul 1, 2025
@fjl fjl added this to the 1.16.1 milestone Jul 1, 2025
fjl
fjl previously approved these changes Jul 1, 2025
lightclient
lightclient previously approved these changes Jul 1, 2025
@lightclient
Copy link
Copy Markdown
Member

While this change is fine for geth as it is today, one thing to mention is that @gballet probably does rely on it in the verkle branch.

@fjl fjl modified the milestones: 1.16.1, 1.16.2 Jul 2, 2025
@lightclient
Copy link
Copy Markdown
Member

@Thegaram can you resolve the conflict please?

@Thegaram Thegaram dismissed stale reviews from lightclient and fjl via aa62718 July 10, 2025 06:30
Comment thread params/protocol_params.go
BlobTxPointEvaluationPrecompileGas = 50000 // Gas price for the point evaluation precompile.
BlobBaseCost = 1 << 13 // Base execution gas cost for a blob.

HistoryServeWindow = 8192 // Number of blocks to serve historical block hashes for, EIP-2935.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I agree the value is incorrect, but this is still a protocol param and so it should stay defined here.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Should I add it back? @fjl

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Friendly ping @fjl

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Yes please

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

We can't really configure it differently, since it's an internal value in the contract.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

The value is defined by https://eips.ethereum.org/EIPS/eip-2935, and changing it would change the contract code and its address. So I think it's fair to say, it's not a tunable parameter.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

I think having HistoryServeWindow = 8191 in protocol_params.go is nice for being explicit about this, even if it is not used in geth (or only used in tests).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Changed it back as per @gballet and @rjl493456442's suggestion.

@rjl493456442 rjl493456442 modified the milestones: 1.16.2, 1.16.3 Aug 4, 2025
@Thegaram Thegaram changed the title params: remove HistoryServeWindow fix: use correct EIP-2935 history serve window parameter Aug 21, 2025
Copy link
Copy Markdown
Contributor

@s1na s1na left a comment

Choose a reason for hiding this comment

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

I have followed the conversation on this PR. I see Felix's point on this not being a tunable parameter and sort of agree it can be moved to be local to the test. At the same time the PR is a strict improvement as it fixes a value. And if in its current form is easier for @gballet then LGTM.

@s1na s1na changed the title fix: use correct EIP-2935 history serve window parameter params: fix history serve window for verkle test Aug 25, 2025
@s1na s1na merged commit 42467f1 into ethereum:master Aug 25, 2025
5 of 6 checks passed
@Thegaram Thegaram deleted the patch-1 branch August 26, 2025 06:31
gballet pushed a commit to gballet/go-ethereum that referenced this pull request Sep 11, 2025
Fixes the history serve window parameter for the
test function `getContractStoredBlockHash`.

Fixes ethereum#32458.
joshklop added a commit to ethereum-optimism/optimism that referenced this pull request Sep 21, 2025
github-merge-queue Bot pushed a commit to ethereum-optimism/optimism that referenced this pull request Sep 23, 2025
* update op-geth to: merge go-ethereum v1.16.3

https://github.com/ethereum-optimism/op-geth

* bump op-geth

* various fixes

* `params.HistoryServeWindow` changed

8192 -> 8191
ethereum/go-ethereum#32127

* Updated op-geth to v1.101602.4-0.20250922085653-2f0528ba0ed5

* update op-geth

* update op-geth to v1.101603.0-rc.1

---------

Co-authored-by: geoknee <georgeknee@googlemail.com>
joshklop added a commit to ethereum-optimism/optimism that referenced this pull request Oct 7, 2025
geth changed the value of params.HistoryServeWindow and it broke the test.
ethereum/go-ethereum#32127
joshklop added a commit to ethereum-optimism/optimism that referenced this pull request Oct 21, 2025
geth changed the value of params.HistoryServeWindow and it broke the test.
ethereum/go-ethereum#32127
github-merge-queue Bot pushed a commit to ethereum-optimism/optimism that referenced this pull request Oct 28, 2025
* op-acceptance-tests: fix test due to geth breakage

geth changed the value of params.HistoryServeWindow and it broke the test.
ethereum/go-ethereum#32127

* op-acceptance-tests: avoid failing when we can wait
BrycePy added a commit to gattaca-com/based-optimism that referenced this pull request Nov 13, 2025
* op-service/eth: fix exec payload creation from block (#17154)

* op-service/eth: fix validationError string pointer reference

* op-service/eth: fix exec payload creation from block

Execution payloads must only set the withdrawals root post-Isthmus.
The block's withdrawals root is set during assembly pre-Isthmus.

* go: update op-geth dependency

* op-node: remove PromoteFinalizedEvent (#17165)

* chore(op-acceptance-tests): migrate TestInteropReadiness to op-devstack (#17160)

Convert the TestInteropReadiness test from devnet-sdk to op-devstack framework.
Use MultiCaller batching for contract interactions and presets.NewSimpleInterop()
for test setup. Fix challenger preset compilation issue temporarily.

* ci: Increase timeout of publish-cannon-prestates job (#17163)

* op-e2e: Remove unused withdrawal action methods (#17128)

* Remove unused withdrawal action methods

* fix lint from ‘go fmt’ to make ci happy

* feat(devstack/rpc): expose rpc endpoint (#17168)

* op-deployer: Add forge autodiscovery (#17152)

* op-deployer: Add forge autodiscovery

* add limit reader

* cr updates

* op-acceptance-tests: Introduce GameHelper to perform multiple moves (#16994)

* op-acceptance-tests: Add helper contract to perform multiple moves in dispute games.

# Conflicts:
#	op-acceptance-tests/tests/isthmus/operator_fee/tx_utils.go

* op-acceptance-tests: Rename GameState to GameHelper and use it via FaultDisputeGame rather than directly.

* op-acceptance-tests: Verify claims are responded to correctly

# Conflicts:
#	op-devstack/dsl/proofs/fault_dispute_game.go

* op-acceptance-tests: Better test name

* op-acceptance-tests: Simplify

* Use specific imports.

* Fix contract checks.

* Add comment

* Update snapshots.

* Remove unused extraData

* Remove unused extraData

* op-acceptance-tests: Review feedback

* plan: Add test that other node's dependencies are unaffected.

* plan: Introduce single function to reset fn and dependencies.

* dsl: Don't set a fixed gas limit for ETH transfers.

Transferring ETH to a contract uses more than 21,000 gas.

* op-service: Clarify testlogs (#17174)

* cannon: Drop version 7 feature flags (#17167)

* Drop SupportMinimalSysEventFd2 feature flag

* Drop SupportDclzDclo feature flag

* Drop SupportNoopMprotect feature flag

* Bump MIPS64 contract version

* Fix typo

* Cut unused variable

* Run semver-lock

* Update mips version in the StandardValidator

* Run semver-lock

* Bump StandardValidator contract version

* Cut unused features / stateVersion variables

* op-program: Disable go1.25 annotation of anonymous memory mappings. (#17176)

Prepares for go 1.25 to avoid it needing the prctl syscall which cannon doesn't support.

* acceptance-tests: Wait for follower node to be in sync with sequencer before allowing tests to start using the system. (#17179)

* feat: create a v2 of the fault dispute game to validate creator pattern (#16929)

* feat: create a new version of the fault dispute game to validate creator pattern flow

* chore: make ci happy with interface

* chore: run pre pr snapshots and rename interface to fix ci

* chore: remove duplicated(?) files

* chore: update immutable variable allowlist

* fix: exclude the FaultDisputeGameV2 from reinitialize test

* fix: array access

* fix: compiler setting restriction v2

* fix: snapshot lock

* fix: add faultdisputegame v2 to allowlist

* fix: use correct path

* feat: add helper function to test contract for v2 fdg

* Update packages/contracts-bedrock/test/dispute/DisputeGameFactory.t.sol

Co-authored-by: mbaxter <meredith@oplabs.co>

* fix: remove CANNON_2 for now

* fix: pull in readability change for cwia

* fix: add error to interface

* fix: add error to interface

* chore: bump semver and lock

---------

Co-authored-by: mbaxter <meredith@oplabs.co>

* Move `closer.Close()` to a defer statement immediately after error checking (#17166)

* op-sync-tester: Verifier Engine APIs for Isthmus (#17072)

* op-sync-tester: Verifier Engine APIs

* refactor and add comments

* rebasing for changing canyon from shanghai

* op-sync-tester: Verifier Engine APIs for Ecotone, Fjord, Granite, Holocene (#17181)

* Support fjord, granite, holocene

* Revise comments

* op-devstack: add SyncTester to sysgo; initial E2E test with SyncTester (#17132)

* op-devstack: link SyncTester with L2CL; initial e2e test

* op-sync-tester: augment sync tester config

* op-devstack: add TargetBlocks to sync tester initialization

* op-sync-tester, op-devstack: use FCUState

* op-devstack: remove SyncTester.hydrate

* op-acceptance-tests: enable L2CL2 sync with SyncTester

* op-sync-tester, op-devstack: renames

* op-devstack: remove pointer as FCUState is mandatory

* Upload finalized Cannon (Go 1.24) audit report (#17183)

* feat(cannon): reduce info logging frequency from %100000 to %1000000 (#17186)

* optimize cannon ux

* Fix from %1000000 to %1000000000

* Update README.md (#16753)

* Reorganize sync deriver logic (#17098)

* op-devstack: add hydrate to sync tester (#17198)

* cannon: Deploy Cannon with Go 1.24 support (#17155)

* Update standard MIPSVersion constant

* Update OPCMStandardValidator stateVersion() check

* Update StandardConstants.MIPS_VERSION

* Replace hard-coded mipsversion values in OPCMStandardValidator tests

* Run forge fmt

* Update OPContractsManagerStandardValidator version

* Run semver-lock

* chore: Add fork retries to upgrade tests (#17201)

* chore: Add fork retries to upgrade tests

* fix: Param

* chore: Use env instead

* feat(kurtosis-devnet): 1/2 add flashblocks support (#17172)

* feat(kurtosis-devnet): flashblocks support

* feat(kurtosis-devnet): lint

* fix(flashblocks): 1/2 comments

* all: Update op-geth dependency, based on geth v1.16.1 (#16785)

* Upgrade op-geth with upstream v1.16.1 version

* Update to fix linters

* go mod tidy

* Fix part of tests

* Update op-geth dependency

* don't enable osaka in op-program test miner

* Bump op-geth version

* Disable Osaka in op-program test miner

* op-program: Refresh cannon compat report (#17071)

This is done for an incoming op-geth dependency update.
The new vm-compat findings highlight a new control flow path where the
flock syscall could be used. Similar control flow paths already exist in
the existing compatibility report. And these are benign for the same
reason; because they're only reachable by a program that uses a real
file-based ethdb.Database. The op-program uses a memory-based
ethdb.Database implementation to ensure that no file-related operations
occur during its execution.

The other flagged (WARNING) syscall use is related to the above flock
operation. This occurs when the go runtime issues epoll_ctl syscalls to
synchronize the file lock. Since we know that file operations won't
occur, this syscall use is also unreachable.

* Bump op-geth version

* op-service/eth: fix validationError string pointer reference

* op-service/eth: fix exec payload creation from block

Execution payloads must only set the withdrawals root post-Isthmus.
The block's withdrawals root is set during assembly pre-Isthmus.

* Bump op-geth version

* Bump op-geth version (catch nil chainView)

* Bump op-geth dependency to v1.101601.0-rc.1

---------

Co-authored-by: Sebastian Stammler <seb@oplabs.co>
Co-authored-by: Inphi <mlaw2501@gmail.com>

* challenger: Add a metric to report the number of consecutive failures (#17193)

* challenger: Add a metric to report the number of consecutive failures per VM type

Allows ignoring transient errors in setup because a source node is briefly offline.

* challenger: Create vmInstructionCacheMissCount metric.

Fixes nil dereference.

* superchain-config: Fix fuzz test proxyAdmin constraints (#17203)

* Disallow *super* proxyAdmin/Owner

* Tweak comment

* op-up: add ascii art (#17205)

* op-chain-ops: update srcmap loading to handle forge compiler profiles (#17196)

* op-up: add survey link (#17206)

* op-up: add ascii art

* op-up: add survey link

We needed to build the orchestrator ourselves instead of using
the higher-level `presets.DoMain` function because `DoMain` calls
`os.Exit`, preventing us from showing the link on exit. This
dependency was also preventing us from implementing better CLI
handling (#17076), which is now unblocked.

* op-up: basic cli argument handling (#17208)

* ci: Write cannon preimage commit info to a temp file before uploading (#17219)

May let gsutil cp retry better and fix flakiness.

* op-sync-tester: implement L2ELNode interface with sync tester (#17200)

* op-devstack: implement SyncTester as ELNode interface

* op-sync-tester: remove Target and EntryCfg

* op-devstack: use ids.SyncTester identity for the SyncTester

* op-devstack: both userRPC and authRPC contain session parameters

* op-devstack: add user and auth proxy to sync tester

* chore: update op-deployer docs (#17204)

* Update installation.md

* Update installation.md

* fix(ci): remove #986 todo (#17229)

* Verify contract deployment tx is actually included. (#17232)

The generated bindings only verify that the transaction can be sent, not that it was actually included which can lead to race conditions where estimating gas for the next tx that uses the transaction fails because there is no code at the address if the tx is still pending.

* op-sync-tester: Verifier Engine APIs for Bedrock, Canyon, Delta (#17234)

* op-sync-tester: Verifier Engine APIs for Bedrock, Canyon, Delta

* op-devstack: Presets for sequential HF activation

* op-acceptance-tests: L2CL with Sync Tester advance HF with distinct time

* typo

* feat(op-devstack): support kona supervisor sysgo (#17195)

* feat(op-devstack): support kona-supervisor in sysgo

* remove cluster rollupcfg

* supervisor opt removed

* op-up: add unit test (#17210)

* op-program: Fix length check for pending progress in consolidate step (#17220)

* op-challenger: Implement an option to restrict frequency of update cycles. (#17233)

By running update cycles less often, the number of calls made to the L1 node can be reduced.

* feat(op-acceptance-tests): flaky test report; updates. (#17250)

- Ensure its sorted by #flakes(desc)
- Add a warning about positive false positives

* op-sync-tester: Session Types and API interfaces (#17252)

* op-sync-tester: Session Types and API interfaces

* linter

* op-deployer: Add forge CLI wrapper (#17231)

* op-deployer: StandardBin enforces specific forge version (#17242)

* AutodetectBin enforces specific forge version

* remove dir creation from AutodetectBin.Ensure()

* rename AutodetectBinary to StandardBinary

* cannon: Reduce size of heap/code cache (#17246)

* cannon: Reduce size of heap/code cache

* op-e2e: Bump executor limiter for fp tests

* cannon: rename defaultCodeRegionSize

* op-devstack: Fix flakiness in AwaitTimestamp (#17270)

There's no guarantee that a waiter will see every block, so just find the block the fork should activate and wait for it specifically.

* op-deployer: enable embedded artifacts integration test (#17276)

* ci: Remove codecov from go tests (#17291)

* op-devstack: Explicit Sync Tester EL and API Session Binding  (#17275)

* op-devstack: Explicit mock EL and Session binding

* Add dummy session to acceptance tests

* op-devstack: better sync tester naming and init

* revoke and comments

* Modularize and clean up

* configurable delay between game responses (#16988)

* update op-challenger README devnet startup commands

* implement basic version of configurable delay between game responses inside the op-challenger

* add integration testing for the ResponseDelay parameter which controls the configurable delay between game responses

* implement feedback from reviews, in particular improvements to the unit / integration testing and switching to use of clock.Clock

* implement ResponseDelayAfter config, adding a new config param controlling how many responses into each game the ResponseDelay config should become active

* implement the agent to respond immediately (bypass any ResponseDelay config set) if the game is currently inside the extension period

* make improvements from feedback, add a check to ensure that delaying only occurs when it will not cause the challenger to wait until the extension period begins, and also add the additionally needed testing associated with that new check

* fix minimal race condition of responseCount using mutex

* simplify delay calculation logic by removing calculateActualExtension() function and its associated testing, since the base extension is, anyway, a more conservative figure

* switch to using an atomic int for responseCount instead of a separate mutex

* add clarity on the functioning of the ResponseDelay and ResponseDelayAfter configuration fields in config.go

* Apply suggestions from code review

Co-authored-by: Adrian Sutton <adrian@symphonious.net>

* correct bug identified in feedback with wrong grandparent claim logic in agent.go and updated relevant tests

* fix typo from suggestion and associated issues in testing

* simplify logical legibility based on review feedback in agent.go

---------

Co-authored-by: Adrian Sutton <adrian@symphonious.net>

* chore: remove the frozen file check (#17289)

* chore: remove the frozen file check

* fix: remove references to removed script

* fix: remove frozen code check

* feat(op-acceptance-tests): port fjord (holocene) tests to devstack (#16920)

* feat(op-acceptance-tests): port fjord (holocene) tests to devstack

* feat(op-acceptance-tests): add holocene to base tests

* cr nits

* block nos

* blocknum

* fix(tests): fix port

* fix(tests): typo

* fix(op-acceptance-tests): typo

* fix(op-acceptance-tests): simplify tests

* fix(op-acceptance-tests): fix teku version

* fix(op-acceptance-tests): pass context

* fix(op-acceptance-tests): pin l1 block reads

---------

Co-authored-by: Matthew Slipper <me@matthewslipper.com>

* op-sync-tester: Support sync namespace (#17299)

* op-sync-tester: Sync namespace implementation

* op-devstack: Sync Tester DSL

* op-acceptance-tests: Sync Tester sync namespace tests

* all: Update op-geth dependency, based on geth v1.16.2 (#17228)

* update op-geth version

* Update cannon baseline files for geth 1.16.2 upgrade.

---------

Co-authored-by: Adrian Sutton <adrian@oplabs.co>

* op-deployer: add configurable chainIntent.GasLimit field (#17271)

* feat(op-acceptance-tests): Port TestSmokeTestFailure and TestInteropSystemNoop to Devstack (#17300)

* feat(op-acceptance-tests): port interop smoke tests

* feat(op-acceptance-tests): linter

* ci: Run the publish-cannon-prestates job on circleci boxes instead of latitude. (#17296)

It doesn't need lots of resources and we're seeing network flakiness so try uploading from a different network.

* op-devstack: add sync-tester with external EL (#17251)

* op-devstack: add sync-tester with ext cl config

* op-devstack: try setting up remote L2 chain

* op-devstack: use remote EL and CL for L1 nodes

* op-devstack: fix L2CL from sequencer to verifier

* op-devstack: remove redundant configs

* op-acceptance-tests: use RPC for CI

* op-acceptance-tests: skip tests until CI allows tests using external endpoints

* circleci: attempt CI endpoints

* op-devstack: address comments from PR

* op-devstack: address comments from PR

* fix comment for l1.cache-size (#17107)

* feat: add feature flagging functionality to SystemConfig (#17281)

* feat: add feature flagging functionality to SystemConfig

Adds a function to the SystemConfig for feature flagging. Features
are identified by 32 byte strings and can be toggled on or off by
the ProxyAdmin or the owner of the ProxyAdmin. Note that this
commit does not actually use any feature flags but demonstrates
what a feature flag would look like by adding in the flag for
the ETHLockbox feature.

* feat: update for PR feedback

* fix: small test tweaks

* fix: broken test

* feat(op-acceptance-tests): add more sysgo tests. (#16817)

* feat(op-acceptance-tests): add more sysgo tests.

* fix(op-devstack): ecotone; fees.

Use the actual increase in the L1FeeVault balance. This is because in Ecotone, the L1 fee includes both base fee and blob base fee components.

* fix(op-acceptance-tests): skipping flaky/broken tests.

* fix(op-acceptance-tests): interop; TestInteropSystemSupervisor

* fix(op-acceptance-tests): justfile; exit early for gateless.

* fix(op-acceptance-tests): tidied justfile

* fix(op-acceptance-tests): fix ecotone fees.

The recent commit changed L1 fee calculation to use vault balance increases as the source of truth, but base fee and priority fee calculations were still using the old method (calculating from block data). Made all fee calculations by making vault increases the source of truth.

* fix(op-acceptance-tests): increase default timeout for gateless mode.

* chore: Conditional logic

* fix(op-acceptance-tests): TestSuperRootWithdrawal nonce issue and timeouts

* fix(op-acceptance-tests): re-enable safeheaddb tests after #17083 fix

* fix(op-acceptance-tests): security; env var injection

The LOG_LEVEL environment variable is used directly in shell command execution without validation or sanitization, allowing command injection attacks.

* feat(op-acceptance-tests): justfile; allow gateless for sysext.

Allow gateless mode to run for an external devnet ('sysext' orchestrator)

* clean(op-acceptance-tests): circleci; removed memory-base job

The new memory-all is a superset of memory-base; so we don't need both.

* fix(op-devstack): enhance Ecotone fee validation and enforce operator vault constraints

  - Add validation that receipt L1Fee matches L1FeeVault increase
  - Restore receipt-based fee calculations for validation (baseFee and L2Fee)
  - Enforce OperatorVault must be zero in Ecotone (operator fees introduced in Isthmus)
  - Exclude OperatorVault from total fee calculations in Ecotone
  - Add comprehensive receipt fee validation checks

* fix(op-devstack): ecotone; cross-validation of fees

Added cross-validation between receipt and vault fees: The code now verifies that:
    - receiptBaseFee (block.BaseFee × gasUsed) equals vaultBaseFee (BaseFeeVault increase)
    - receiptL2Fee (effectiveGasPrice × gasUsed) equals vaultL2Fee (BaseFee + SequencerFee vault increases)

* fix(op-devstack): supervisor sync status L1 mismatch retry

Increase retry attempts and handle L1 sync mismatch errors to fix flaky TestExecMsgDifferEventIndexInSingleTx.

* fix(op-acceptance-tests): TestPostInteropUpgradeComprehensive

Made it serial due to flakiness.

* feat(op-acceptance-tests): ci; tweak timeout and verbosity.

* fix(op-acceptance-tests): exclude interop tests from ci tag

These in-memory devstack tests don't work reliably with gotestsum's
retry mechanism. They run fine via op-acceptor in the memory-all job
but fail when run directly with go test in go-tests-short.

Adding !ci build constraint to exclude from standard CI test suite
while keeping them available for dedicated acceptance test runs.

* fix(op-acceptance-tests): TestWithdrawal nonce synchronization

Use fresh EOA instance for withdrawal initiation to prevent nonce
conflicts when shared L1/L2 keys encounter retry logic.

* chore(op-acceptance-tests): TestPreNoInbox marked as flaky

* chore(op-acceptance-tests): test limiting concurrency

* chore(op-acceptance-tests): self-hosted runner

Default to using our self-hosted runners.
Accept a parameter which allows individual jobs to opt-out and use CCI/Cloud runners.

---------

Co-authored-by: Jan Nanista <jan.jakub.nanista@gmail.com>

* feat(op-acceptance-tests): move all ATs to one workflow (#16755)

Stop running (sysgo/in-memory) acceptance tests as unit tests in other workflows

* feat(op-acceptance-tests): op-acceptor v3.1.0 (#17310)

Upgrades op-acceptor to [v3.1.0](https://github.com/ethereum-optimism/infra/releases/tag/op-acceptor%2Fv3.1.0)

* make `IDelayedWETH` inherit `IProxyAdminOwnedBase` (#16912)

* make IDelayedWETH inherit IProxyAdminOwnedBase

* forge fmt

* circleci, op-acceptance-tests: nightly ci sync tests with external networks (#17314)

* circleci, op-acceptance-tests: nightly ci sync tests with external networks

* circleci: try sync_tester_ext_el within op-acceptance-tests

* circleci: disable test on every push; run on daily schedule

* feat: bump op-geth and update GetCommittedState to GetStateAndCommitedState (#17323)

Co-authored-by: Jacob Elias <jacobelias@Mac.lan>

* remove un-used code in backend.FromConfig (#17321)

* remove dup (#17325)

* feat: creator pattern integrate FaultDisputeGameV2 into DGF (#17119)

* feat: update dispute game factory to support impl args

* test: test cwia update through dgf

* fix: test function name linting

* fix: remove unneeded function

* test: move creator pattern create test to create contract

* fix: remove funciton for setImplementationArgs from the interface as well

* fix: add back unclassified tests

* fix(nit): update wording

Co-authored-by: mbaxter <meredith@oplabs.co>

* fix: conflict from cherry pick

* fix: update table to not be prescriptive about layout

* fix: formatting for table

* test: add tests for v2 and adjust based on impl updates for cwia

* fix: vm getter in tests

* fix: reuse _setGame and add additional param for implArgs

* chore: run forge fmt

* fix: directory structure validation

* fix: semver version bump fault dispute game v2

* fix: add same exclusion that exists for FaultDisputeGame.sol

* fix: bump snapshots

* chore: bump opcm standard validator semver

* fix: assert revert explicitly revert with no data

* fix: fork tests root claim

* fix: remove unused params from _getGameConstructorParamsv2 and setupFaultDisputeGameV2

* fix: bump major version for breaking change

* test: add tests for setImplementation with args

* test: check the rest of the constructor args

* test: set l2ChainId to nonzero value to make validate setting

* chore: remove console.log

* fix: revert earlier with calldata length check

* test: add asserts for the creator and l2blocknumber

* chore: remove comment about skipping in fork environment

* fix: follow new naming convention

* fix: use more realistic args for implArgs

* fix: bump semver for standard validator

* chore: bump snapshot for StandardValidator

---------

Co-authored-by: mbaxter <meredith@oplabs.co>

* op-sync-tester: Better Session Handling (#17316)

* op-sync-tester: Better Session Handling

* Use lock instead of rlock

* bug fix and style

* handle concurrency properly

* Simply session locking model

* feat: op-node sync tests for multiple networks in ci (#17334)

* feat: try to run synctest inci

* fea: try to run  sync test with envvars

* fea: try to run  sync test with envars and updated job

* fea: try to run  sync test with matrix

* feat: no beacon l1 ci endpoint yet, just add base sepolia

* feat: added some todos for sync tester and unisepolia syncing

* op-acceptance-tests: remove chain id comparison; move runtime logs to test

* do not trigger on PRs

---------

Co-authored-by: Jacob Elias <jacobelias@Mac.lan>
Co-authored-by: Anton Evangelatov <anton.evangelatov@oplabs.co>

* min-base-fee: bring in op-geth code (#17307)

* boilerplate for Jovian fork

* update op-geth version

brings in min-base-fee code

* changes to get current tests passing

* kurtosis devnet: use temporary image for op-geth

Matches the version currently in go.mod. Can be reverted to default once the op-geth release is made.

We need to do this because interop implies jovian, so we need a jovian compatible op-geth to run with the longer extradata from genesis.

* bump op-geth

* update expected error message in TestCheckEIP1559ParamsMatch

* update to take account of PayloadAttributes.MinBaseFee being a *uint64

* op-program fixes

* fix computePayloadId

* use static error

* update op-geth image for interop kt-devnet

* createGenesisWithForkTime => createGenesisWithForkTimeOffset

* fully add interop override flag to op-service

* refactor: define holoceneArgs in terms of jovianArgs

* add test cases

* MinBaseFeeExtraData -> JovianExtraData

* bump op-geth version, make use of eip1559.DecodeOptimismExtraData

* checkEIP1559ParamsMatch -> checkExtraDataParamsMatch

* bump op-geth

* go mod tidy

* use eip1559.Validate/DecodeOptimismExtraData in PayloadToSystemConfig

* bring interop devnet op-geth in line with go.mod op-geth

* fix bug (pointer comparison)

* fix test

* go mod tidy

* tag issue in TODO

* consolidate: validate extra data even pre Holocene and fix test

* fix test miner to set minbasefee correctly

* use eip1559.DecodeOptimismExtraData in blockToDepositsOnlyAttributes

* bump op-geth

* go mod tidy

* bump op-geth in kt devnet

* only validate extra data from holocene

* bump op-geth to tagged RC

* use pre-Jovian value in test miner.Fork

* op-program test miner: set min base fee to a stub (valid) value if Jovian is active

* remove redundant check on isOptimism

We are always running op rules inside the program

* Co-authorship credit

This PR contains work that was cherry-picked from https://github.com/ethereum-optimism/optimism/pull/16852.
This commit will mean they are credited with co-authorship.

Co-authored-by: William Law <williamlaw.wtl@gmail.com>
Co-authored-by: Niran Babalola <niran@niran.org>

---------

Co-authored-by: William Law <williamlaw.wtl@gmail.com>
Co-authored-by: Niran Babalola <niran@niran.org>

* feat: dev feature flagging in OPCM (#17268)

* feat: dev feature flagging in OPCM

Adds functionality to tests and OPCM that makes it possible to
execute use feature flags in the OPCM that selectively utilize
specific functionality. This flag is represented as a 32 byte
bitmap for op-deployer compatibility and makes it possible to
support 32 unique development features at the same time.

* feat: small ergonomic cleanup

* feat: test fixes

* fix: portal upgrade implementation

* fix: more test fixes

* fix: working on lockbox tests

* fix: most contract tests should work now

* fix: run opcm against latest blocks

* fix: update OPCM bindings

* fix: correct error format in OPCMCC

* fix: update ReadImplementationAddresses

* fix: bug in ReadImplementations

* fix: tweaked superchain config check in ocpm for now

* fix: opcm fix after rebase

* fix: use fake feature for SystemConfig tests

* feat: parameterized tests for dev features

* fix: circle ci syntax

* fix: matrix naming

* feat: parameterize upgrades too

* fix: only parameterize coverage

* feat: more tests

* fix: rebase conflicts

* feat: add dev feature bitmap to e2e

* fix: go bug

* fix: more go test failures

* fix: pr comments

* fix: better check for use super roots

* fix: pr feedback

* fix: skip test for interop lockbox

* fix: typo

* fix: rebase fixes

* fix: ci naming

* feat: updated system config pause (#17322)

* feat: updated system config pause

* fix: ci fixes

* fix: simpler logic in system config paused check

* fix: rebase fixes

* feat: have VerifyOPCM check for dev bitmap (#17324)

* feat: have VerifyOPCM check for dev bitmap

* fix: include required getter in verifyopcm

* op-e2e: Fix broken jovian precompile FP tests (#17349)

* contracts: Add CANNON_KONA game type (#17358)

* contracts: Add CANNON_KONA game type

* contracts: Add SUPER_ASTERISC_KONA game type

* contracts: Add super cannon kona game type

* feat(readme): update directory structure (#17359)

* refactor(op-e2e): use ActivateForkAtOffset utility (#17362)

Currently, each time we do a new fork we need to go back and modify activation action tests for some prior forks. With this change, such modifications will no longer be necessary.

* fix superchainConfig upgrade issue & support multiple superchainConfigs (#16838)

* fix superchainConfig upgrade issue & support multiple superchainConfigs

* fixes to upgrade tests and contracts-check

* better approach, compare versions

* fixes

* fixes

* fix non op upgrade tests

* fix the opcm upgrade checks to support upgradeSuperchainConfig function checks

* add test for SuperchainConfigInconsistent error

* fix upgrade fn superchainConfig check

* add more tests for SemverComp

* implement decisions from design doc review

* implement decisions from design doc review

* fix semver and snapshots

* implement checks for upgradeSuperchainConfig

* fix ci

* address comments

* address comments

* rm dup comment

* improve test nit

* address graphite comments

* fix ci

* op-sync-tester: Better logging (#17364)

* proofs: Introduce PermissionedDisputeGame v2 (#17290)

* Create PDG v2

* Add PDG v2 interface

* Fix references to FDG and interface

* Add PDG v2 test

* Fix pdg v2 setup in test

* Fix pdg v2 game setup in tests

* Add a few more test assertions, rework l2ChainId handling

* Update PDG v2 version

* Update some config files that should reference PDG v2

* Run semver-lock

* fix: exclude PermissionedDisputeGamev2

* chore: run forge fmt

* fix: follow new naming convention

* fix: incoming change added exclusion as well

---------

Co-authored-by: steven <steven.nevins.js@gmail.com>

* docs(op-e2e/system): add deprecation notice (#17369)

* op-e2e/system: add deprecation notice

* clarify where to put acceptance tests

* op-service: cliutils add support for common.Hash (#17376)

* op-service: cliutils add support for common.Hash

* add hash validation to avoid unexpected behavior

* op-challenger: Fix metric label name for asterisc-kona (#17367)

* prestate-check: Add support for kona (#17355)

* prestate-check: Introduce abstraction for how prestate data is loaded

Begins preparing for adding kona prestate support.

* prestate-check: Abstract chain config loader.

op-reth doesn't use the same format for superchain config data.

* prestate-check: Support loading config data for kona states.

* prestate-check: Remove config loader abstraction again.

* prestate-check: Replace todo with explanation

* prestate-check: Point back to optimism branch

* op-program: Use prestate build script in repro.justfile (#17372)

* op-challenger: Add cannon-kona trace support (#17356)

* add kona cannon executor

* implement cannon-kona trace type support

- add TraceTypeCannonKona case to runner/factory.go
- add TraceTypeCannonKona validation to flags/flags.go
- fix CLI arguments for kona-host in kona_server_executor.go

* simplify switch logic over trace types in flags.go

* fix cannon-kona trace type CI failures: add missing validation, test setup, and parameter fixes

* implement more robust Cannon/CannonKona architectural separation with dedicated flags, config validation, and test setup to fix CI failures based on feedback

* Set cannon-kona path in docker images
Add cannon-kona to set of default games.

* op-challenger: Fix tests.

* op-challenger: Add super-cannon-kona game type

Not yet supported as a trace type.

* op-challenger: Reduce duplicate code

---------

Co-authored-by: angel-ding-cb <angel.ding@coinbase.com>
Co-authored-by: Leopold Joy <leo@leopoldjoy.com>

* fix: version loop to handle tags with spaces (#17360)

* fix: bump validator version on develop (#17378)

This PR bumps the version for the StandardValidator on develop.
The version in the 4.1.0 proposal branch is 1.13.0 and this
version incldues changes that are not on the proposal branch, so
this version will be 1.14.0.

* fixed kona envs (#17370)

* op-acceptance-tests: upgrade tests with real-data (op-sepolia) (#17363)

* op-acceptance-tests: hfs ext package

* enable acceptance tests

* op-acceptance-tests: wait for LocalSafe to progress as well

* SerialT to ParallelT

* longer timeout

* correct runtime config print

* try run_all: true

* op-acceptance-tests: split sync_tester tests into multiple packages

* op-acceptance-tests: add Delta HF; use RollupConfig() instead of ChainConfig()

* enable check against UnsafeL2.Time

* use rollup types, and simplify tests

* extract WaitForNonZeroUnsafeTime

* better errors for syncTester session

* Get version of impls from the impl contracts themselves, reduce bytecode (#17377)

* docs: add interface inheritance guidelines and style examples to guide (#17339)

* docs: add interface inheritance guidelines to style guide

- Document why contracts must not inherit from their own interfaces
- Explain alignment issues with base contracts and compiler errors
- Add examples showing correct and incorrect patterns
- Include rationale for pseudo-constructor requirements

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Update intro

* Fix outdated errors section

* Add examples to underscore prefixed args section

* Add examples for named vars

* Add examples for events

* Examples for immutables

* Examples for spacers

* Remove "trivial boolean with string" case as allowed.

* Fix example: errors go inside contract

* feat: add semgrep rule for event parameter formatting

Implement sol-style-event-param-fmt rule to enforce:
- Event parameters must use camelCase
- No underscore prefixes on event parameters
- All event parameters must be named

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>

* Improve event params guidance and add a semgrep rule

* Undo adding immutable tests

It's a rabbit hole I don't want to go down rn

* Improve immutable examples

* Typo fix

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* op-up: encode version information in binary (#17405)

* fix(op-acceptance-tests): wait for fund balance for persistent devnets (#17397)

* fix(op-acceptance-tests): wait for fund balance for persistent devnets

* fix(op-acceptance-tests): always wait for balance

* fix: remove unused variables from test file (#17400)

* op-conductor: p2p healthcheck fix and execution_p2p_healthcheck_api_type (#17294)

* op-conductor: p2p healthcheck fix and execution_p2p_healthcheck_api_type

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>

* nit

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>

---------

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>

* circleci: enable OPM and Base mainnet op-node sync tests (nightly) (#17393)

* circleci: enable OPM op-node sync tests

* add base mainnet

* slack: notify on failure with mention in #notify-ci-failures

* use slack member id

* op-dispute-mon: Support cannon-kona games (#17380)

* ci: Add a stand alone check for solc warnings (#17403)

* ci: Add a stand alone check for solc warnings

* Use non-dev build to prevent compiler warnings

* op-up: update default version in install script (#17414)

* acceptance-tests.yaml: flashblocks-with-isthmus gate config (#17413)

Signed-off-by: Yashvardhan Kukreja <yashvardhan@oplabs.co>

* feat(op-acceptance-tests): v3.2.1 (#17422)

Updates op-acceptor to v3.2.1, which adds an optional progress indicator

* feat(devstack): add user RPC method. fix kona config in sysgo (#17390)

* Revert "ci: Add a stand alone check for solc warnings (#17403)" (#17428)

This reverts commit 3f11e7f90488ace578c5ec27a937e9414421e309.

* afix slack in semgrep-scan (#17433)

* chore(op-acceptance-tests): ci timeout (#17438)

Temporarily increase the 'no_output' CircleCI timeout as there's an issue making the tests occasionally stall for a long time.

* op-node: Skip L1 genesis hash check if block is not available from the L1 (#17407)

* op-node: Skip L1 genesis hash check if block is not available from the L1

* op-node: Switch L1 genesis check to using MaybeAsNotFoundErr

Switch supervisor_client back to it's own isNotFound. MaybeAsNotFoundErr is specific to identifying blocks and headers that are not found, the supervisor client is looking for super root not found. That's an important distinction so we should use separate code.

* Fix lint

* Update test

* chore: bump op-geth to include new superchain registry configuration of arena-z-sepolia isthmus hardfork (#17437)

* refactor(test): improve L2CrossDomainMessenger test coverage and quality (#17415)

* refactor(test): improve L2CrossDomainMessenger test coverage and quality

- convert sendMessage test to fuzz test for broader parameter validation
- enhance constructor test with version and MESSAGE_VERSION assertions
- enhance initialize test with additional state validation
- add focused sendMessage test with full event verification
- all tests pass and maintain existing functionality

* fix: rename test function to follow naming convention

- Change testFuzz_sendMessage_validParams_succeeds to testFuzz_sendMessage_withValidTargetAndGasLimit_succeeds
- Addresses GitHub comment about generic 'validParams' reason
- Function name now follows [method]_[functionName]_[reason]_[status] pattern
- Updated comment to be more descriptive of test scenario

* fix: apply forge fmt to resolve contracts-bedrock-checks CI failure

- Fix import statement formatting (add spaces around braces)
- Fix function call formatting (add spaces around braces)
- Fix function parameter formatting for multi-line declarations
- Addresses contracts-bedrock-checks CI failure from previous commit

* fix: replace assert with assertGt for better test practices

- Replace assert(bytes(...).length > 0) with assertGt(bytes(...).length, 0)
- Use Forge's assertion functions instead of native Solidity asserts
- Addresses mds1's code review feedback

* feat: increase fuzz test gas limit bound from 5M to 30M

- Align with other cross-domain messaging tests in codebase
- CrossDomainMessenger.t.sol uses 30M, bridges use 10M, portal uses 50M
- 30M is only 0.70% of uint32.max and well within technical constraints
- Provides better fuzz coverage for realistic gas limit scenarios
- Addresses mds1's feedback about conservative 5M bound

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* feat: set up OPCM for U17 (#17406)

* feat: set up OPCM for U17

This PR removes U16 code from the OPCM and updates it to work for
U17. Various tests have been updated to support this, and the OPCM
has been improved so that it can be more easily utilized by
future maintainers.

* feat: get rid of old upgrade functions

* fix: semgrep errors

* fix: encodecall error

* fix: opcm check look at internal func

* fix: bump interop portal version

* fix: one more broken test

* fix: opcm graphite comment

* fix: go tests

* fix: superchain config test error

* fix: more test failures

* fix: more test failures

* fix: correct semgrep/event rules

* fix: pr review

* fix: compilation errors

* feat: contract changes to enable min-base-fee (#17330)

* min-base-fee solidity diffs

* Update packages/contracts-bedrock/src/L1/SystemConfig.sol

Co-authored-by: Matt Solomon <matt@mattsolomon.dev>

* just pre-pr

* remove codegen bin

* update semver and remove some more diffs in systemconfig codegen

* revert bindings/systemconfig

* just pre-pr

---------

Co-authored-by: George Knee <georgeknee@googlemail.com>
Co-authored-by: Matt Solomon <matt@mattsolomon.dev>

* fix(op-deployer): EnsureDefaultCacheDir (#17411)

* justfile: add latest-versions recipe (#17399)

* justfile: add latest-versions recipe

* fix command failure masking

* print both stable and latest versions

* chore(cleanup): close #17194 (#17452)

* op-acceptance-tests: remove INITIAL_L2_BLOCK variable, and fetch latest block number from EL (#17453)

* op-deployer: read addresses onchain instead of from chainConfig (#17456)

* feat(op-acceptance-tests): op-acceptor v3.3.0 (#17467)

https://github.com/ethereum-optimism/infra/releases/tag/op-acceptor%2Fv3.3.0

* feat: add tests for min-base-fee (#17441)

* min-base-fee solidity diffs

* remove codegen bin

* update semver and remove some more diffs in systemconfig codegen

* revert bindings/systemconfig

* e2e test

* spike acceptance-test

* wip acceptance test

* add support for jovian mbf

* op-acceptance-test: min base fee (#14)

* add kurtosis files

* move dsl into test

* passing

* ensure block is progressing

* remove checkfordecrease func

* simulate txs

* nits + simplify

* base + jovian sysgo passes

* sysext passes

* nits + reduce bindings diff

* just wait for 1 block

* use zero addr, and swap test order

* add else clause to e2e test

* use high/med/zero mbfs

* e2e test configure mbf

* check activation block base fee is less than mbf

* wip setting diff mbfs

* claude fix

* build activation+1 block

* simulate some tx on diff med/high mbfs

* wip claude dont use extclient

* use 2gwei, 5gwei too high causes maxFeePerGas error

* sysgo and sysext pass for jovian

* dont default ptr(0) and first nit on action test

* remove user tx in actions

* acceptance-test no user tx + reduce diffs in actions

* kurtosis: run on jovian devnet (#15)

* wip

* pin teku version

* fix TestSystemConfigMarshaling

* fix attribute test + add comment in payload_util

* godoc: mbf in SystemConfig (#17481)

* fix: bug blocking op-deployer verify (#17478)

Fixes some bugs in op-deployer's verify command. Also fixes a few
issues with the contracts that causes the deployer to struggle
to properly verify things.

* feat(ci): parallelise go-tests jobs (#17468)

* feat(ci): go-tests now uses a fan-out.

These tests should now fan-out to multiple machines in CI, making the runs faster and more reliable.

* feat(make): simplified go-test-ci jobs

Reused a common target, as they were almost identical.

* op-deployer: update docker builds to install forge binary (#17304)

* op-deployer: include contracts build in 'just build' recipe

* modify build command to skip contracts build in ci

* install forge binary in op-deployer docker container

* lint and comment fixes

* remove Dockerfile.minimal

* always use docker bake to build and publish images

* op-program: Add hint for fast block hash lookup (#17449)

* chore(superchain-registry): bump version for addresses cleanup (#17404)

update to geth v1.101602.3-rc.1

* cleanup kt-devnets (#17455)

* cleanup kt-devnets

* ci: isthmus -> jovian

* update justfile

* dedupe

* activate jovian at genesis on jovian devnet

* op-acceptance-tests: Increase timeout for interop msg tests (#17492)

* op-acceptance-tests: Deflake TestPreNoBox by adjust Interop time to future (#17495)

* Revert "feat(op-acceptance-tests): op-acceptor v3.3.0 (#17467)" (#17502)

This reverts commit c813b04c9bd24a9b1088ec8a8e3a7598344633ff.

* op-devstack: op-sync-tester: Add configurable preset (#17491)

* op-devstack: op-sync-tester: Add sync tester config

* Use concrete orchestrator type

* refactor: introduce `IsFeature` toggles for Jovian (#17424)

* introduce IsMinBaseFee feature toggle

* add comment

* fix fn call (rename)

* fix test

* decouple features

* add operator fee fix toggle

* fix tests

* bump op-geth to mainline commit

* fix failing semgrep check (#17504)

* fix failing semgrep check

* add semgrep checks to pre-pr

* op-node: remove elSyncEnabled as it is a noop (#17425)

* remove hold job phase (#17506)

* op-sync-tester: Support EL Sync (#17516)

* op-sync-tester: Support EL Sync

* op-sync-tester: Rename to ELSyncActive

* proofs: Move proposer/challenger params on v2 contract (#17463)

* Make calldata length check overridable

* Rework calldata length check

* Make calldata length helpers more granular

* Update PDG to use CWIA for proposer and challenger

* Add a few more tests

* Cleanup - rework method name, comments

* Run just lint

* Fix test names

* Add some more tests around invalid FDG immutable args data

* Add tests around invalid immutable args when creating PDGv2

* Add some method documentation

* Regenerate snapshots, run semver-lock

* Simplify method name

* Fix notice natspec comments

* Clean up step tests

* Reorder auth check and call to super.initialize

* Add fuzz test to validate step() reverts for unauthorized actors

* Run semver-lock

* op-deployer: create generic forge.BytesScriptEncoder (#17524)

* op-deployer: create generic forge.BytesScriptEncoder

* add encoding support for arrays

* LivenessModule2 implementation (#17272)

* start

* DeployOwnership scripts update

* cleanup

* reset challangeStartTime when re-enabling the module

Co-authored-by: almanax-ai[bot] <174396398+almanax-ai[bot]@users.noreply.github.com>

* remove duplicated comment

* test cleanup

* fmt

* semverlock

* add livenessmodule2 to checkfrozenfiles

* address alcueca's feedback

* change ownershiptransfer logic

* pre-pr

* LivenessModule - Slightly simplified code (#17277)

* Slightly simplified code

---------

Co-authored-by: alcueca <alberto@yield.is>

* address smartcontract's feedback

* alcueca's feedback

* smartcontract's feedback

* add extra checks suggested by alcueca

* fix clear error

* update snapshots

* conflicts

* name nitpicks and coverage at 100%

* fix tests

* remove interface extra lines

* fix event on test

* rename isChallenged function to getChallengePeriodEnd

* update snapshots

* update implementation from specs

* sentinel owner and interface fix

* DRYness comments

* move getter at the top

* update comment

* rename event

* add _assertModuleConfigured

* add _assertModuleEnabled

* assert module enable fixes

* _cancelChallenge internal function

* fix comments

* more comments

* split configure errors

* owner transfer invariant

* address comments

* address kelvin's feedback

* lint

* more comments

* alcueca's comments

---------

Co-authored-by: almanax-ai[bot] <174396398+almanax-ai[bot]@users.noreply.github.com>
Co-authored-by: Alberto Cuesta Cañada <38806121+alcueca@users.noreply.github.com>
Co-authored-by: alcueca <alberto@yield.is>

* op-acceptance-tests: move presets into tests, away from config.yaml (#17519)

* op-acceptance-tests: move network presets into tests, away from config.yaml

* op-acceptance-tests: simplify defaults for TestSyncTesterExtEL

* op-acceptance-tests: add stack.ExtNetworkConfig

* feat: add U16a report (#17538)

* feat: add U16a report

* Update docs/security-reviews/README.md

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* fix(op-deployer): forge verbose install (#17540)

* fix(op-deployer): forge verbose install

* fix(op-deployer): add ci docker build job

* opcm: Support cannon+kona games in addGameType (#17513)

* opcm: Support cannon+kona games in addGameType

* opcm: Update test name validation

* opcm: Remove unnecessary skips.

* opcm: Simplify test

* fix(op-deployer): remove forge version check (#17541)

* feat(op-deployer): cli based integration tests (#17511)

* refactor(test-validation): extract exclusions to TOML config and add tests (#17510)

* refactor(test-validation): extract exclusions to TOML config file

- move hardcoded exclusion lists from Go code to external TOML configuration
- add TOML parsing with structured ExclusionsConfig type
- implement dynamic exclusions loading with fallback path resolution

* test(test-validation): add test coverage for test-validation functions

- add tests for all previously untested functions in main.go
- organize test functions to match source file order

* op-deployer: simplify ReadImplementationAddresses.s.sol (#17542)

* op-deployer: simplify ReadImplementationAddresses.s.sol

* fix semgrep finding

* use getEIP1967Impl helper function

* fix comment

* tests: Skip Interop Acceptance Tests (#17555)

* Skip Interop Acceptance Tests

* exempt TestSuperRootWithdrawal

* fix: errant comment in OptimismPortal2 (#17482)

* fix: simplified code for SystemConfig code (#17539)

* chore(op-acceptance-tests): isthmus into base gate. (#17514)

As Isthmus is on Mainnet, we now move this gate into the 'base' gate which should work against all devnets.

* txmgr: fetch BlobBaseFee over RPC instead of computing from block header (#17566)

* txmgr: fetch BlobBaseFee over RPC instead of computing from block header

This simplifies the transaction manager, meaning it does not need to understand the chain config of L1 in order to estimate fees properly (which, from Fusaka, it will otherwise need to do because the formula for computing the blob base fee from the excess blob gas changes frequently with BPO forks).

* fix TestIncreaseGasPriceLimits

* fix TestTxMgrConfirmsBlobTxAtHigherGasPrice

* Update op-service/txmgr/txmgr.go

Co-authored-by: Sebastian Stammler <seb@oplabs.co>

---------

Co-authored-by: Sebastian Stammler <seb@oplabs.co>

* op-acceptance-tests: Ext Network EL Sync Test using Sync Tester (#17532)

* op-devstack: Expose L2EthExtendedClient for shim L2EL

* op-devstack: L2 CL Signaler Logic using admin API

* op-acceptance-test: op-acceptance-tests: EL Sync Test Config

* op-acceptance-tests: Sync Tester External Network HF tests: SyncMode

* op-sync-tester: Fix Post Isthmus WithdrawalRoots check

* op-devstack: Logging when L2 CL Signaling

* op-devstack: Explict Read Only Ext L2EL

* op-acceptance-tests: Proper preset for EL/CL Sync Testing

* rebase and cleanup

* ci: Sync Tester EL Sync test for real world

* op-acceptance-tests:  Proper genesis set for EL/CL Sync Testing

* fix test name

* deflake

* tame possible race

* op-acceptance-tests: Bump attempts for CL Sync testing (#17567)

* tools: add justfile command for updating op-geth (#17549)

* add just command for updating op-geth

* improve script

no dependence on jq
accept other git ref types

* txmgr: lock mutex when updating cachedTx map (#17570)

* feat(ops): add AI Contract Test Maintenance System v0.1.0 (#17560)

* feat(ops): add AI Contract Test Maintenance System v0.1.0

- Add new ai-eng directory for AI engineering projects
- Implement test ranking system with staleness-based scoring algorithm
- Add modular Python architecture for test file discovery and contract mapping
- Integrate with existing exclusion system from contracts-bedrock
- Add runbook.md document
- Add justfile integration for command-line execution
- Generate JSON output format for ranked test results
- Support git-based commit timestamp analysis for priority calculation
- Add CHANGELOG.md following

* fix(ops): clean up AI Contract Test Maintenance System files

- Remove generated ranking.json output file
- Remove CHANGELOG.md
- Fix formatting issues in runbook.md documentation

* refactor(ops): simplify AI Contract Test Maintenance System structure

- consolidate modular Python files into single test_ranker.py module
- trim runbook.md to essential info only (overview, usage, output)
- add .gitignore for Python projects and output files

* feat(ai-eng): add exclusion configuration for contract test maintenance

- Create exclusion.toml file with separate directory and file exclusions
- Update test_ranker.py to use centralized exclusion configuration
- Add tests without .sol counterparts to exclusion list
- Apply code formatting improvements to test_ranker.py

* all: update op-geth (based on go-ethereum v1.16.3) (#17547)

* update op-geth to: merge go-ethereum v1.16.3

https://github.com/ethereum-optimism/op-geth

* bump op-geth

* various fixes

* `params.HistoryServeWindow` changed

8192 -> 8191
https://github.com/ethereum/go-ethereum/pull/32127

* Updated op-geth to v1.101602.4-0.20250922085653-2f0528ba0ed5

* update op-geth

* update op-geth to v1.101603.0-rc.1

---------

Co-authored-by: geoknee <georgeknee@googlemail.com>

* fix: update spearbit reviews (#17576)

* feat(ai-contracts-test): add prompt renderer component (#17578)

* feat(ai-contracts-test): add prompt renderer component

- implement render.py script for prompt generation with placeholder replacement
- add prompt/ directory with canonical prompt template (prompt.md)
- extend justfile with new commands: just render and just prompt (combined workflow)
- update runbook documentation with multi-step workflow instructions

* fix(semgrep): exclude prompt files from sol-safety-trycatch-eip150 rule

* perf: explictly set compiler runs to 0 to reduce profiles (#17572)

* feat: add safety checks for lockbox in setFeature (#17559)

* feat: add safety checks for lockbox in setFeature

* fix: better comment

* add coverage for MIPS64 back (#17409)

* chore(op-acceptance-tests): ci; remove kurtosis jobs. (#17581)

Kurtosis is being deprecated.

* feat(ai-contracts-test): add devin API integration (#17602)

* feat(ai-eng): reorganize components into a /component folder

- move test_ranker.py to components/tests_ranker/
- move prompt renderer to components/prompt-renderer/
- update justfile commands to use new component paths
- update documentation to reflect new directory structure

* feat(ai-contracts-test): add run ID system for test ranking and prompt generation

- add unique run ID generation using datetime format (YYYYMMDD_HHMMSS)
- update ranking output to include run_id field in JSON metadata
- change ranking filename format to {run_id}_ranking.json
- update prompt renderer to extract run_id from ranking filename
- change prompt filename format to {run_id}_prompt.md
- add automatic cleanup of old ranking and prompt files

* feat(ai-contracts-test): add devin api client with session logging

- add devin_client.py with full Devin API integration
- add JSONL logging system for session tracking and audit trail
- extend justfile with devin and ai-contracts-test commands
- update runbook documentation with Devin workflow and logging details
- add log.jsonl to gitignore for session logs

* github: Add git cliff config for release notes generation (#17594)

* chore(op-acceptance-tests): op-acceptor v3.3.1 (#17515)

Updates op-acceptor to [v3.3.1](https://github.com/ethereum-optimism/infra/releases/tag/op-acceptor%2Fv3.3.1)

* opcm: Zero out cannon-kona game types in migrate. (#17523)

* opcm: Zero out cannon-kona game types in migrate.

Only active if dev feature is enabled.

* fix opcm semver bump

* bump opcm validator semver

* revert semver changes to OPCMStandardValidator

---------

Co-authored-by: inphi <mlaw2501@gmail.com>

* op-acceptance-tests: move sync-tester hardforks tests under one package (#17535)

* op-acceptance-tests: move all ext hfs tests to a single pkg

* op-acceptance-tests/hfs-ext: change Serial to Parallel

* op-acceptance_tests: consolidate hardforks_ext and sync_tester_hfs_ext

* op-service/httputil: move resp.Body.Close right after err check (#17611)

* feat: integrate creator pattern implementations in DeployImplementations.s.sol (#17329)

* feat: integration v2 implementations in DeployImplementations.s.sol + tests

* feat: add feature flag on and integrate deploy.s.sol

* feat: integrate deploy config and pass input struct values from config

* fix: configure a proposer in PDG

* fix: update the input struct for DeployImplementations.s.sol

* fix: implementation structs

* Update implementations_test.go

Co-authored-by: mbaxter <meredith@oplabs.co>

* fix: use previous direct casting appraoch

* feat: integrate new bitmap feature

* fix: delete old bool

* fix: lint

* feat: add proposer to the config

* fix: implementation struct usage in sepolia test

* fix: add proposer to the struct for integration tests

* fix: fund the proposer and add it to the supercahin config

* fix: constructor args for pdgV2

* revert: remove proposer changes from op-chain-ops and op-deployer

Reverted changes to op-chain-ops/interopgen and op-deployer/pkg/deployer
directories back to the develop branch version as these changes are no
longer necessary for this PR.

* fix: remove proposer from deploy and deploy implementations

* fix: add back struct params

* fix: use casting for Impleemntations struct

* Update packages/contracts-bedrock/scripts/deploy/DeployImplementations.s.sol

Co-authored-by: mbaxter <meredith@oplabs.co>

* Update op-deployer/pkg/deployer/bootstrap/implementations.go

Co-authored-by: mbaxter <meredith@oplabs.co>

* fix: remove modification of inputs ad revert if feature flag enabled

* Update packages/contracts-bedrock/scripts/deploy/DeployImplementations.s.sol

Co-authored-by: Inphi <mlaw2501@gmail.com>

* Update packages/contracts-bedrock/scripts/deploy/DeployImplementations.s.sol

Co-authored-by: Inphi <mlaw2501@gmail.com>

* fix: go back to v2 impl

* fix: missing import and simplify conditional for valid impl addresses

* fix: update check for correct nibble after kona consumed 0x010

* fix: remove unused import

* test: add assertions for constructor params

* test: add sensible fuzz input ranges

* feat: add reasonable constraints to deploys script and fuzz inputs

* fix: remove unused import

* refactor: add helper function and constant

* fix: move flags to their owner file

* fix: lint warning

* test: remove constraints on bitmap

* fix: remove input validation from deploy implemenations

* Revert "fix: remove input validation from deploy implemenations"

This reverts commit aa2557bf164854b9b917601fd32b8b542d3eef53.

* test: add splitdepth check

* test: update run with feature flag on and update asserts

* fix: add back superchain proxy admin and superchainConfigProxy

* fix: correct max game depth

* test: expand bounded values

* refactor: move asserts about v2 config params

---------

Co-authored-by: mbaxter <meredith@oplabs.co>
Co-authored-by: Inphi <mlaw2501@gmail.com>

* op-acceptance-tests: Disable `TestSyncTesterELSync` tests for flakiness (#17617)

* op-devstack: fix WaitForFinalization bug (#17618)

Previously, we waiting for the current finalized block to be finalized,
while the expected behavior is to wait for the current unsafe block
to be finalized. This is now documented as well.

* chore(op-acceptance-tests): op-acceptor v3.4.2 (#17623)

Updates op-acceptor to [v3.4.2](https://github.com/ethereum-optimism/infra/releases/tag/op-acceptor%2Fv3.4.2)

* op-node/rollup/clsync: test for popping the same element (#17608)

* refactor(test): improve Storage test coverage and quality (#17610)

* refactor(test): improve Storage test coverage and quality

- reorganize tests into function-specific contracts following codebase patterns
- convert all tests to proper fuzz tests with testFuzz_ naming
- organize test contracts to match source function declaration order
- enhance test documentation with proper @notice comments
- maintain existing comprehensive coverage for all 8 Storage library functions

* fix: address GitHub PR comments

- Move testFuzz_setGetBytes32Multi_succeeds to Storage_GetBytes32_Test
- Rename Storage_Unclassified_Test to Storage_Uncategorized_Test
- Add natspec comments for all fuzz parameters

* fix: address GitHub PR comments

- remove empty Storage_Uncategorized_Test contract
- rename testFuzz_setGetBytes32Multi_succeeds to testFuzz_getBytes32_multiSlot_succeeds for correct naming format

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* op-sync-tester: Retry block fetching when processing newPayload (#17624)

* op-sync-tester: Retry block fetching when processing newPayload

* op-acceptance-tests: Reenable TestSyncTesterELSync

* txmgr: allow blobs to be sent with fusaka-compatible cell proofs (sidecar version 1) by configuration (#17620)

* update batcher

* txmgr: log full tx hash to enable debugging

* cell proofs OFF by default

* thread configurable helper through to test code and add test TODOs

* wire up flag

* fix test

* op-e2e/actions: add EnableCellProofs config

* remove TODO

* use regular not atomic bool

* refactor MakeSidecar

* optimize creation of proofs slice

* feat: add rules for Diamond (#17640)

* contracts: Add new dispute game dev feature flags to bedrock test matrix (#17635)

* Integrate v2 dispute game feature flag into FeatureFlags setup util

* Add v2 flag to circleci matrix

* Add CANNON_KONA to test matrix

* fix: have acceptance job skip building contract tests (#17639)

Skips building contract tests in the acceptance job which reduces
the amount of memory used and decreases the chance of the job
being killed. Also makes it faster.

* op-e2e/actions: replicate geth txpool validation in `L1Miner.IncludeTx` (#17636)

* op-e2e/actions: replicate geth txpool validation in L1Miner.IncludeTx

* lint

* remove unecessary check

* op-node/rollup: remove ReceivedUnsafePayloadEvent event (#17530)

* op-node/rollup: remove ReceivedUnsafePayloadEvent event

* op-node/rollup: add lock around AddUnsafePayload

* op-deployer: setup forge callers for apply deploy scripts (#17637)

* op-deployer: prepare deploy scripts with forge invokers

* op-deployer: align test script with runWithBytes convention

* remove runWithBytes from DeployOPChain.s.sol

* op-e2e: Tweak EL Sync Test to check non genesis (#17440)

* fix(ai-contracts-test): handle 504 timeout, prevent duplicate work, prompt changes (#17616)

* fix(ai-contracts-test): handle 504 timeout and prevent duplicate work

- add 30s timeout and exponential backoff retry for Devin API server errors
- exclude files processed in last 7 days from ranking to avoid duplicate work
- add system version tracking to log entries
- minor cleanup: sort imports, remove shebangs and add invariants/ to exclusion list
- update runbook with latest changes

* fix(prompt): correct test naming, categorization, and assertion patterns

* update opcm.upgrade* natspec to explain the delegateCaller assumptions (#17644)

* update opcm.upgrade* natspec to explain the delegateCaller assumptions

* fix semver

* change semver

* feat: add ProtocolVersions to restrictions (#17651)

* feat: add ProtocolVersions to restrictions

* chore: snapshots

* sysgo: l1 geth subprocess support (#17619)

* refactor(test): standardize Unclassified to Uncategorized in test naming (#17650)

* refactor(test): standardize Unclassified to Uncategorized in test naming

- update test contract names from *_Unclassified_Test to *_Uncategorized_Test
- simplify checkTestMethodName function to only check for "Uncategorized"
- remove unused featureEnabledName parameter in checkTestMethodName

* Apply suggestion from @graphite-app[bot]

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* Apply suggestion from @JosepBove

Co-authored-by: JosepBove <josep@oplabs.co>

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>
Co-authored-by: JosepBove <josep@oplabs.co>

* feat(op-acceptance-tests): kurtosis nightly tests. (#17658)

* add valid semver check script and tests (#17641)

* add valid semver check script and tests

* upgrade MERC20F in opcm.upgrade

* cleanup

* cleanup

* change semver

* op-node: refactor EngineController (#17647)

* op-node/rollup: merge CLSync with EngineController

* op-node/rollup: migrate CLSync tests to EngineController

* op-node/rollup: use e.requestForkchoiceUpdate instead of emit

* op-node: renames

* op-node: lock unit test expectation

* op-node: better comments

* op-node: EngineController: Proper locking (#17648)

* op-node: EngineController: Proper locking

* op-node: EngineController: proper tryUpdateEngine sync

* stick to rwlock for simplicity

* Remove goroutine limit since race solved

* proper locking for ForceReset

* fix rebase

* fix locking

* op-deployer: ensure standard forge version matches mise (#17670)

* chore(op-acceptance-tests): ci; discord notifications. (#17672)

- Update Platforms notification from user 'stefano' to role 'protocol devx pod'
- Remove 'changwan' from Kurtosis notifications

* clean(op-acceptance-tests): ci; consolidate workflows. (#17673)

We no longer need a separate workfor for pre/post-merge to develop.

* all: update op-geth to "fusaka defence cherry pick" commit (#17661)

* updated op-geth to v1.101603.0-synctest.0.0.20250930110811-5eee1eab50e6

pairs with https://github.com/ethereum-optimism/op-geth/pull/690

* Updated op-geth to v1.101603.1-rc.1

* opcm: Add unit tests around DevFeatures (#17643)

* Add unit tests for DevFeatures.sol, fix logic

* Port changes and tests to go util

* Bump contract versions

* Run semver-lock

* Align test names with existing conventions

* ci: Add nightly heavy fuzz testing job (#17668)

* ci: Add nightly heavy fuzz testing job

- Add contracts-bedrock-heavy-fuzz-nightly job using ciheavy profile
- Configure for 20000 fuzz runs, 128 invariant runs, 512 depth
- Schedule via build_daily (nightly at 2 AM UTC)
- Add heavy_fuzz_dispatch parameter for manual testing
- Set 90m timeout for comprehensive fuzzing

* Update .circleci/config.yml

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* ci: Address PR feedback - remove unnecessary steps

- Remove 'Lint forge test names' step from nightly job
- Remove contracts-bedrock-build from workflow (job builds as needed)
- Update dependency to initialize directly

Addresses feedback from @mds1 and @aliersh

* ci: Restore duplicate generate-flaky-report section

Restores the duplicated generate-flaky-report job that was removed
during merge conflict resolution in b379b03. The duplicate section
was part of the develop branch changes and should not have been
removed as it was outside the scope of this PR.

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Co-authored-by: Ariel Diaz <65925295+aliersh@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* op-acceptance-tests: introduce flake-shake system (#…
ClaudeZsb pushed a commit to mantlenetworkio/mantle-v2 that referenced this pull request Nov 17, 2025
* op-acceptance-tests: fix test due to geth breakage

geth changed the value of params.HistoryServeWindow and it broke the test.
ethereum/go-ethereum#32127

* op-acceptance-tests: avoid failing when we can wait
ClaytonNorthey92 added a commit to hemilabs/optimism that referenced this pull request Jan 28, 2026
* sysext: correctly populate address configuration (#17771)

sysext was previously using the L1Address field from the devnet-env.json,
which netchef does not use. We remove this field to prevent future
confusion and switch to the correct `Address` field.

* op-devstack: give more time for l2 to include bridge tx (#17772)

in persistent devnets with longer block times, it can take longer
than the previously-configured 60 seconds, leading to timeouts and flakes.

* op-acceptance-tests: fix test due to geth breakage (#17757)

* op-acceptance-tests: fix test due to geth breakage

geth changed the value of params.HistoryServeWindow and it broke the test.
https://github.com/ethereum/go-ethereum/pull/32127

* op-acceptance-tests: avoid failing when we can wait

* feat: fix test eth amounts to be smaller (#18044)

* ctb: Skip blueprint DG impl verification (#18054)

* ctb: Skip blueprint DG impl verification

When the deploy dipuste game v2 feature flag is enabled, we should skip
verification of the old v1 implementation blueprints

* assert zero-valued blueprint address

* fix typo

* cannon: Default to cannon VM version 8 (#18062)

* Bump 'current' cannon vm to version 8

* Update docker diff check

* Always build "next" version of cannon

* tests: Non-zero prestate when running DeployDisputeGame (#18057)

* devstack: Enable individual dev features instead of replacing the whole bitmap (#17994)

Allows things to be combined easily and avoids the risk of features being left disabled because they were later overwritten.

* op-acceptance-tests: fix two papercuts (#18067)

- spammer schedules emit warning logs too often.
- DA footprint test does not retry while looking for an L1 origin often enough.
  The root problem (arbitrary timeouts everywhere) can be addressed later.

* cannon: Include state version in witness output (#18068)

* chore: Go cache for several uncached builds (#18056)

* chore: Go cache for several uncached builds

* chore: Comment

* chore: Fix modules for cache

* fix: Don't cache fuzz tests

* chore: Restore cache for make-fuzz

* chore: Better parallel output

* chore: Restore cache namespace

* fix: Typo

* refactor: remove redundant error checks in deriver (#18069)

* cannon: Rework cannon "next" vm handling in e2e tests (#18064)

* Revert "Always build "next" version of cannon"

This reverts commit 71ea70199d2227ea1d0c7f83298bb9abd3acadb3.

* Only use 'next' cannon prestate if it differs from the current prestate

* op-service/apis: remove redundant interface (#18049)

* forklive: Use v2 DG ABI accordingly (#18065)

* feat: cleanup contracts CI and properly run dev feature tests (#18051)

* feat: run dev features thru normal tests

* fix: test suite names

* fix: skip test for v2 dispute game feature

* fix: build go ffi

* fix: build source before coverage tests

* op-devstack: fix TestSubProcess flake (#17815)

The caller of cmd.StdoutPipe() must finish reading from the returned
io.ReadCloser before calling cmd.Wait(), otherwise not all of the
logs will be read. This is a race condition that resulted in
occasional test flakes.

This commit fixes the buggy test and removes a lot of unnecessary code
in the process.

* Enable monitoring in sysgo (#18017)

* WIP

- Passing metrics env vars through in l2_cl_kona
- Added L2MetricsDashboard sysgo lifecycle component

* Documenting and wiring up L2MetricsDashboard

Also adds some util unit tests

* Adding op-reth metrics support

Also:
- Updates README with more useful metrics info
- Fixes error log in l2_cl_kona.go
- Changes default docker exec path to `docker`
- Makes available port util threadsafe

* Updating GetAvailableLocalPort signature

* Adding logging context in kona-node, op-reth, l2 metrics dashboard

* GetEnvVarOrDefault: os.GetEnv => os.LookupEnv to allow for setting ""

* Single env var to enable/disable metrics for all configured components

* Encapsulate vars and functions within sysgo package

* Inline metrics endpoint parsing from logs

* Adding issues to kona and op-reth and referencing in metrics port setting

* Making metrics' subprocesses start/stop in parallel

* Moving PrometheusMetricsEndpoint into l2_metrics_dashboard.go

* Using new L2MetricsRegistrar interface instead of callbacks

Also uses stack.IDWithChain instead of service name

* Simplifying PrometheusMetricsTarget

Still conveys how to interpret the host & port without
storing that on the struct

* Using logger's key-value format where possible

* Handling file close errors when writing metrics configs

* Fixing broken test

* Making metrics url parsing more resilient

* Start/Stop updates

- Removing goroutines from Start
- Blocking on waitgroup in Stop instead of waitgroup or context done

* Removing failure when registering the same endpoint twice

* Removing redundant if

* Unexporting util functions

* Pinning specific versions of prometheus and grafana

Overrides are possible via env vars

* Updating Subprocess.Stop calls after rebase

* op-acceptance-tests: bump spammer budget (#18080)

was seeing lots of insufficient funds errors on Jovian alphanet

* chore(op-acceptance-tests): ci; kurtosis defaults to cci runner (#18083)

* opcm-standard-validator: Add validation for CANNON_KONA games (#18050)

* Add validation input for cannon-kona prestate

* Pass errorPrefix as a parameter to assertValidPermissionlessDisputeGame

* Inject gameType into assertValidPermissionlessDisputeGame

* Add checks for cannon-kona game type

* Cleanup - rename game variables for clarity

* Cleanup: guard logic that is only necessary for v1 games

* Deploy cannon-kona game for standard validator tests

* Update existing test error expectations

* Add CannonKona tests

* Bump contract versions

* Run pre-pr

* Preserve current validation methods and structs

* Run pre-pr

* fix(op-batcher): exempt generic da from max input size (#18074)

* fix(op-batcher): exempt generic da from max input size

* Apply suggestion from @sebastianst

---------

Co-authored-by: Javed Khan <tuxcanfly@gmail.com>
Co-authored-by: Sebastian Stammler <seb@oplabs.co>

* add `Test_ProgramAction_OperatorFeeFixTransition` (#17925)

* add Test_ProgramAction_OperatorFeeFixTransition

* fix

* undo changes to submodule

* respond to review

* remove proxyAdmin inputs from opcm and sv, derive it from the sysCfg, fix tests (#17744)

* remove proxyAdmin inputs from opcm and sv, derive it from the sysCfg, fix tests

* run semver lock for sv

* remove unused imports

* adapt go code, fix go tests

* fix UpgradeOPChain test

* fix addGameType go test

* use semverComp to make interface usage checks flexible

* fix failing ci

* use better naming for old opcm interfaces and related contracts

* fix go tests

* try fix op-acceptance tests

* finally fix op-acceptance tests?

* update block number in justfile and not do u16a upgrade on tests

* add upgradeSuperchainConfig pkg and add e2e bootstrap test for it upgrade in v5_0_0 pkg

* fix failing upgrade go test, add more upgradeOPChain solidity test

* rm old validate fn from sv interface

* rm unused import

* add unexpectedEncoding revert test and improved assertion to upgradOPChainInput

* fix semgrep

* fix upgradeSuperchainConfig script

* make upgrade test fork a specific block

* update addGameType to support the new opcm addGameType interface

* fix go lint

* fixes

* fixes

* fixes

* fix semver and go lint

* fix go test

* fix go test

* fix go test

* fixes

* fixes for add game type go test

* fixes

* remove outdated test

* pull and fix

* chore: Bump kona version in docker build (#18094)

* ctb: Fix OPCM std validator test setup for v2 DG (#18066)

* ctb: Fix OPCM std validator test setup for v2 DG

* fix typo

* op-deployer: Add flags for new v2 dispute game implementations options (#18027)

* op-deployer: Fix error handling in add_game_type CLI parsing.

Previously it exited with an error message when there was no error.

* op-deployer: Add flags for new implementations options

Also provides standard values as defaults.

* chore(op-acceptance-tests): op-acceptor v3.6.1 (#18086)

* opcm: Add CANNON_KONA support for opcm.upgrade (#18059)

* opcm: Add CANNON_KONA support for opcm.upgrade

* fix sepolia upgrade integration test

* run cannon-kona upgrade in integration test

* remove debugme

* fix stdvalidator.test_init

* fix outdated opcm bindings

* update semver; snapshots

* cleanup setNewGameImplV2

* fix semver; fix natspec

* fix op-deployer Migrate input encoding

* fix nits

* fix semantic merge conflict

* fix fmt

* update semver

* only expect cannon-kona reverts if feature flag set

* op-acceptance-tests: Improve DA footprint test stability (#18098)

* test(contracts): enhance L2ToL1MessagePasser test coverage and organization (#18028)

* fix(test): add missing event expectation in burn test

* refactor(test): remove redundant initiateWithdrawal tests and add nonce assertion

* test(contracts): add coverage for version, receive, messageNonce, and burn edge case

* refactor(test): reorganize test contracts to match source function order

* fix(test): restore removed initiateWithdrawal tests with scenario-specific assertions

* refactor(test): remove redundant zero-balance burn test per review

* refactor(test): remove unnecessary contract code length assertion per review

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* test: enhance OperatorFeeVault test coverage and organization (#18087)

* refactor(test): remove redundant contract name from constructor test

Simplified test_constructor_operatorFeeVault_succeeds to test_constructor_succeeds
to match naming convention used in other FeeVault tests (BaseFeeVault, etc.)

* test(contracts): add version format validation for OperatorFeeVault

Added OperatorFeeVault_Version_Test contract to validate that the version
constant returns a valid semver string using SemverComp.parse()

* refactor(test): reorganize test contracts to match source declaration order

Moved Version_Test before Constructor_Test to match the order in which
version (line 21) and constructor (line 25) are declared in OperatorFeeVault.sol

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* op-deployer: Support working with V2 fault dispute game contracts (#18024)

* op-deployer: Support working with V2 fault dispute game contracts

* Deploying implementations supports the fault dispute game configuration options previously used by deploy dispute game
* DeployDisputeGame has been updated to work with v1 and v2 contracts
* SetDisputeGameImpl works with and without game args
* ReadImplementationAddresses loads the V2 dispute game addresses

* op-deployer: Don't validate inputs set as game args when v2 is enabled.

* op-deployer: Restore absolute prestate check for V1 contracts.

* opcm: Read super dispute game implementation addresses.

* opcm: Allow clock extension to be zero again

* Store permissionedDisputeGame when V2 enabled

* opcm: Restore the clockExtension > 0 check

* op-acceptance-tests: fix operator fee test (#18104)

fails against isthmus networks. Discovered when running against
jovian betanet.

* opcm: Set cannon_kona init bond during upgrade (#18100)

* opcm: Set cannon_kona init bond during upgrade

* address review comments

* op-dispute-mon: node endpoint error metrics (#17622)

* dispute-mon: Add metric to track node endpoint errors

* dispute-mon: Add node endpoint error count metric

* dispute-mon: Add metric for mixed availability of nodes

* dispute-mon: Add metric to track mixed safety

* dispute-mon: Add metric for disagreeing output roots

* Increase log level for mixed availability

* Use better check for RollupEndpointErrors

* Fix test after merge

* Remove useless logging

* Remove unnecessary fields from Service struct

* Remove unused function and lint fix

* mise: Define fake install sources for disabled tools (#18109)

The latest mise (installed by brew) errors if tools don't have a known install source even if they're disabled. While we control the version of mise used in CI, local development depends on an existing mise to bootstrap and there isn't a good way to ensure it is using a specific version.

* remove DeployProxy (#18122)

* remove DeployProxy

* fixes

* all: Move fork names into new op-core/forks package (#18121)

* fix: use default mips version and use local op-deployer (#18129)

* fix: bump mips version from 7 to 8

* fix: don't require building binary to use justfile with correct op-deployer version

* fix: remove mips version arg

* feat: Use build-no-tests in op-deployers just build command (#18130)

* fix(prompt): add guidance to skip unrelated CI failures (#18127)

* feat(ci): run upgrade tests with dev flags (#18133)

* feat(ci): run upgrade tests with dev flags

Updates CI to run upgrade tests with dev flags enabled. Only OP
will run with dev flags enabled for now, this should be sufficient
and will avoid dramatically increasing CI impact.

* fix: correct cannon kona prestate in validator tests

* opcm: Update OPCM.migrate to support Cannon-Kona games (#18078)

* Update opcm.migrate to set super-cannonKona

* Validate cannonKona prestates during migrate

* Update OCPM migrate tests

* Cleanup: add helper to construct gameType expectations

* Fix game validation test logic

* Fix shadowed var warning

* Rework op-deployer migrate CLI args for absolute prestate

* Read cannonKona prestate in GenerateOPCMMigrateCalldata

* Don't create SuperCannonKona game if prestate is zero

* Update migration gameType helper

* Clean up test logic, perform stricter checks on empty games

* Add error messages

* Clear game args when game impl removed

* Add test with empty cannonKona prestate

* Enforce non-empty cannon prestate

* Bump contract version

* Run just pre-pr

* Cleanup and add another test

* Fix test documentation

* Add new prestate flags to the migrate CLI command

* Update script comment with updated sample input

* Add check for consistent permissionless weth contracts post-migrate

* Bump opcm version again

* Run semver-lock

* fix(op-deployer): update justfile to use current CLI flags (#18143)

* all: update op-geth to pull in fusaka and jovian timestamps (#18131)

* all: update op-geth to pull in fusaka timestamps

* update for scr changes

* point go.mod at op-geth rc

* address comment

* op-service/flags: Modularize fork override flags (#18135)

* chore(op-acceptance-tests): op-acceptor v3.6.2 (#18120)

* op-devstack: debug info when L2CL peers connection fails (#18149)

* feat(ctb): Add the nonce and txHash into the ScheduledTransactions struct (#18097)

* feat(ctb): Add the nonce and txHash into the ScheduledTransactions struct

* chore(ctb): bump the semver on SaferSafes

* feat(ctb): txHash at start of struct

* semver-lock

* fix ITimelockGuard to match

---------

Co-authored-by: Alberto Cuesta Cañada <alberto@oplabs.co>

* feat(l3s): Add support for the default finality lookback (#18071)

* chore(op-acceptance-tests): switch to docker executor (#18084)

* all: Move package predeploys from op-service to op-core (#18145)

* all: Move package predeploys from op-service to op-core

* gofmt

---------

Co-authored-by: Adrian Sutton <adrian@oplabs.co>

* Safer Safes audit fixes (no bytecode changes) (#18147)

* Typo

* Fix natspec notice

* `_blockingThreshold` natspec

* Bump the safe nonce when cancelling

* Accepted trade-off

* We allow cancelling transactions from disabled guards.

* Fixed `changeOwnershipToFallback` natspec.

* Updated version and semver-lock

* Typo

* op-acceptance: Add acceptance test for playing out dispute games (#18085)

* op-acceptance: Add acceptance test for playing out dispute games.

* op-acceptance: Wait for step to be called by honest challenger.

* dsl: Make asChallengerClaim private

* dsl: Support posting the root claim of the bottom game.

* Don't need to use permissioned proposals.

* Cache honest trace accessors.

* Review feedback

* fix(op-acceptance-tests): ci; slack token (#18156)

* op-batcher: refactor (#18174)

* op-batcher: embed ChannelBuilder and remove redundant code

* op-batcher: remove dead code

* op-acceptance-tests: Replace fast games with regular FDGs in withdrawal test (#18152)

* fix(op-deployer): increase cliRunner test timeouts (#18179)

* fix(op-deployer): increase cliRunner test timeouts

* add cliRunner logs for debugging help

* contracts: Load CANNON game implementation from DisputeGameFactory instead of via artifacts (#18155)

* contracts: Load CANNON game implementation from DisputeGameFactory instead of via artifacts

* contracts: Load permissionless WETH implementation dynamically

* contracts: Don't attempt to load game args - the updated DisputeGameFactory that supports them isn't available yet.

* challenger: Stop kona-host using color in logs (#18182)

* SaferSafes audit fixes 2 (#18172)

* Missing `indexed` in an event

* Don't allow configuring a non-enabled safe

* Version and semver-lock

* Disallow the safe address as a fallback owner

* Document why we prefer not to revert

* Disallow a timelock delay of zero, use `setGuard(0)` instead.

* lint and semver-lock

* Simpler natspec

* Update test description

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* chore(op-acceptance-tests): flake-shake; test promotions (#18198)

* feat: introduce fee splitter for revenue share (#17536)

* feat: fee splitter system (#469)


----

Co-authored-by: Disco <131301107+0xDiscotech@users.noreply.github.com>
Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com>
Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com>

* fix: failing tests (#553)

* refactor: revenue sharing config (#538)

* fix: pre pr and semgrep (#565)

* fix: warnings (#571)

* fix: tests failing on fork environment (#575)

* fix: use encode call on constructors (#578)

* feat: add integration splitter test (#581)

* fix: integration test nits (#583)

* test: more coverage on splitter tests (#594)


---------

Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com>

* fix: add missing operator fee vault field (#616)

* feat: invariants and tests (#595)

* fix: ir informationals (#609)

* fix: pre pr (#622)

* refactor: use cdm (#624)

* fix: update withdrawal gas limit value on check (#627)

* fix: remove rev share field from deploy op chain input struct (#628)

* refactor: remove initializer and vaults getter changes (#631)

* fix: remove immutable check over vaults (#634)


Co-authored-by: 0xng <87835144+0xng@users.noreply.github.com>
Co-authored-by: Funkornaut <107587461+funkornaut001@users.noreply.github.com>
Co-authored-by: Joxess <91908708+Joxess@users.noreply.github.com>

* fix: audit findings (#658)

* fix: pre pr

* feat: add user guide docs for rev sharing on op deployer (#666)

* docs: add create2 comment (#667)

---------

Co-authored-by: Funkornaut <107587461+funkornaut001@users.noreply.github.com>
Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com>
Co-authored-by: Chiin <77933451+0xChin@users.noreply.github.com>
Co-authored-by: Simon Something /DrGoNoGo <83670532+simon-something@users.noreply.github.com>
Co-authored-by: 0xng <87835144+0xng@users.noreply.github.com>
Co-authored-by: Joxess <91908708+Joxess@users.noreply.github.com>

* ci: Use cached solidity compilers (#18140)

Should reduce the likelihood of text file busy errors.

* op-challenger: Support super-kona games (#18184)

* op-node: remove dead code (#18183)

* op-supernode: Runnable and RPC Activities with Heartbeat Example (#18141)

* op-supernode: Runnable and RPC Activities with Heartbeat Example

* Address Changwan's Comments

* fix Makefile Typo

* dispute-mon: new metric to track out-of-sync node endpoints (#18105)

* batch_decoder: Fix & allow config loading via L2 chain ID (#18209)

* op-devstack: remove fetching for cluster depset (#18211)

* refactor(scripts): remove GenerateOPCMMigrateCalldata script (#18212)

* ci: Prepare for kona prestate verification (#18175)

* ci: Prepare for kona prestate verification

* review comments

* add accursed hack

* apply review suggestions

* pipe mise use logs to file

* cannon-kona: Add support for building kona prestate and kona-host (#18144)

* kona: Add a justfile to build a specific version of kona

* Try building on a machine

* Cache properly

* Remove REPO_ROOT

* Build pre-interop and interop kona prestates

* Set the cannon-kona prestate in interop tests.

* ci: Build kona-host

* Test kona-host can execute

* Fix rust image version

* Use two separate machines

* No remote docker for machine executor

* Update rust

* Install clang

* Fix machine config

* Use default docker image since mise is installing rust

* Set kona-host and prestate URL in challenger config

* Remove test-kona step

* Try not installing clang

* Change justfile

* Really force a change

* Back to installing clang

* Restore cannon prestate for kurtosis tests

* Remove forced change var

* Ensure tests that don't use kona can run even if kona components haven't been built.

Add skipped test to actually run cannon-kona game. Doesn't pass yet because kona-host doesn't support ws:// URLs which are used by sysgo.

* Add cannon-kona config for interop challenger.

* Only add cannon-kona games when feature toggle is enabled.

* Use kona v1.2.2

* Fix kona prestate URL

* Only set cannon-kona config for tests that opt-in.
Removes the need for run-kona-host.sh

* op-acceptance-tests: give contract deployer enough eth (#18230)

* op-devstack: refactor how L2 forks are required (#18228)

* remove DeployPreimageOracle scripts (#18151)

* remove DeployPreimageOracle scripts

* try fix go test

* try fix go test

* try fix go test

* fixes

* fixes

* fixes

* fixes

* fix(op-faucet): explicitly define timeouts (#18235)

* fix(op-faucet): explicitly define timeouts

* fix(op-faucet): reduced timeout

* op-e2e: Remove support for L2OO withdrawals (#18201)

op-e2e hasn't had a configuration that used L2OO for a long time so remove the code paths to perform withdrawals pre-fault proofs.

* cannon: Fix shutdown process to ensure preimage server channels are closed (#18229)

* cannon: Fix shutdown process to ensure preimage server channels are closed

kona-host wasn't exiting when the client program completed leaving cannon hung forever.
Closing the file channels sends a signal it actually listens to so it exits.
Also strengthen the fallbacks to ultimately terminate the subprocess forcefully if it ignores even the KILL signal.

* cannon: Remove Signal(Kill) since the Kill method just does that.

* fix(op-acceptance-tests): flake-shake; guard against empty tests. (#18238)

* op-acceptance-tests: run Jovian tests against Pectra and BPO2 (#18005)

* op-acceptance-tests: run Jovian tests against Pectra and BPO2

* fix bug?

logs

* fix it for real this time

* op-devstack: err on malformed multiaddr (#18240)

* Debounce FCU Update (#18234)

* chore: General-purpose Github release binary downloader (#18245)

* chore: Github release binary provider

* fi: Untar

* chore: Comments

* refactor(prompt): remove unnecessary test reordering by source function order (#18248)

* Recommended a Safe fallback owner (#18239)

* chore: Get rid of latitude-1 boxes (#18251)

* chore: Blobless checkouts for some jobs (#18249)

* Enhance Hashing library test coverage and quality (#18195)

* test(contracts): enhance Hashing library test coverage and quality

- Convert hashDepositSource test to fuzz test for broader coverage
- Add harness function for hashCrossDomainMessage to enable proper revert testing
- Add test for hashCrossDomainMessage unknown version revert case
- Add comprehensive test for hashL2toL2CrossDomainMessage function
- Ensure all public functions have test coverage
- Maintain test contract organization matching source function order

* test(contracts): restore original hashDepositSource test as known vector

- Add test_hashDepositSource_knownVector_succeeds alongside fuzz test
- Preserves original test case (0xd25df7858efc1778118fb133ac561b138845361626dfb976699c5287ed0f4959, 0x1)
- Addresses reviewer concern about maintaining historical test coverage
- Both fuzz test and known vector test now pass (11 total tests)

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* contracts: ReadImplementations output include AnchorStateRegistry + Opcm components (#18241)

* fix(ci): publish-contract-artifacts disable parallel composite upload (#18236)

* fix(ci): publish-contract-artifacts disable parallel composite upload

* add explanatory comment

* ci: move publish-contract-artifacts from latitude to circleci runner

* op-node: Capture driver start log (#18254)

* fix(ci): bump machine size for publish-contract-artifacts (#18257)

* doc: add contract release checklist requirement (#18242)

* doc: add contract release checklist requirement

* Link to finalizing section

---------

Co-authored-by: Maurelian <maurelian@protonmail.ch>

* chore: Drop code persistence from the CI workflows (#18259)

* chore: Drop code persistence

* chore: Install contract dependencies & attach workspace

* chore: Acceptance tests

* chore: Last two latitude boxes gone (#18260)

* chore: Last two latitude boxes gone

* chore: Bump the resources

* fix(contracts-script): adds support for zstd scripts (#18237)

* fix(contracts-script): adds support for zstd scripts

* fix(contracts-script): missing extract support

* fix(op-service): tar transversal attack protection

* fix(op-service): zstd installation as a command

* fix(op-service): pin zstd

* test(contracts): enhance RLPWriter test coverage and organization (#18119)

* test(contracts): enhance RLPWriter test coverage and organization

- Add fuzz test for writeUint to test broader range of values
- Add comprehensive test coverage for writeAddress function
- Add comprehensive test coverage for writeBool function
- Reorganize test contracts to match source function declaration order
  (writeList, writeString, writeAddress, writeUint, writeBool)

All 31 tests passing with improved coverage for previously untested functions.

* refactor(tests): undo RLPWriter test file reordering per reviewer feedback

Restore original test contract order (writeString → writeUint → writeList)
to reduce diff size as requested by reviewer. New test contracts for
writeAddress and writeBool are appended at end of file. No functional
changes to existing tests - only reordering.

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* op-e2e: Only deploy the fast game in AllocTypeFastGame (#18263)

* op-e2e: Only deploy the fast game in AllocTypeFastGame

Use the fast game alloc in withdrawal tests and not in alphabet tests.
Actually make the fast game fast.

* op-e2e: Use fast games for another withdrawal test

Setup proposer to create permissioned games if fast games aren't enabled.

* op-supernode: Enable P2P for Virtual Nodes (#18213)

* op-supernode: Enable P2P for Virtual Nodes

* remove unit test for disabled p2p

* op-acceptance: Remove work around that creates a "fresh" L2 user (#18265)

* chore(op-acceptance-tests): op-acceptor v3.6.6 (#18266)

Updates op-acceptor to [v3.6.6](https://github.com/ethereum-optimism/infra/releases/tag/op-acceptor%2Fv3.6.6).

* op-node: update OnUnsafeL2Payload to perform ELSync gap filling (#17751)

* op-node: update OnUnsafeL2Payload to handle ELSync

* op-node: add SyncModeReqResp flag

* op-devstack, op-e2e: add SyncModeReqResp=true to keep current behavior

* op-acceptance-tests: matrix for SyncModeReqRespSync and ReqRespSyncDisabled

* fixup

* op-node: change default value for --syncmode.req-resp to true

* Apply suggestion from @pcw109550

Co-authored-by: Changwan Park <pcw109550@gmail.com>

* updated debug logs

* add checks for EL sync alongside CL sync checks

* Update op-devstack/sysgo/l2_cl.go

Co-authored-by: Sebastian Stammler <seb@oplabs.co>

* Update op-node/rollup/driver/sync_deriver.go

Co-authored-by: Sebastian Stammler <seb@oplabs.co>

* Update op-acceptance-tests/tests/sync/clsync/gap_clp2p/sync_test.go

Co-authored-by: Sebastian Stammler <seb@oplabs.co>

* address review comments from seb

---------

Co-authored-by: Changwan Park <pcw109550@gmail.com>
Co-authored-by: Sebastian Stammler <seb@oplabs.co>

* test(contracts): improve RLPReader test coverage and organization (#18232)

* test(contracts): add comprehensive test coverage for RLPReader library

- Add RLPReader_ToRLPItem_Test contract with tests for empty bytes revert and valid conversions
- Add RLPReader_ReadRawBytes_Test contract with tests for various RLP item types
- Reorganize test contracts to match source function declaration order (toRLPItem, readList, readBytes, readRawBytes)
- Rename test contracts to PascalCase for consistency (ReadList_Test, ReadBytes_Test, ReadRawBytes_Test)
- All 45 tests passing with improved coverage for previously untested functions

* refactor(test): restore original test contract order and naming

- Restore original order: readBytes_Test, readList_Test (then new tests)
- Restore original lowercase naming: readBytes_Test, readList_Test
- Keep new test coverage: ToRLPItem_Test, ReadRawBytes_Test
- All 45 tests still passing

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* op-node: Fix PeekUnsafePayload Test name (#18268)

* chore: Ensure go 1.25.4 compatibility (#18247)

* chore: Update go

* debug: Disable go deps

* chore: reenable abigen

* chore: reenable geth

* chore: reenable mockery

* chore: Replace go deps with binaries

* chore: Replace golangci-lint

* chore: Revert mockery version

* chore: Revert mockery version

* chore: Mockery updates

* chore: Mockery updates

* chore: Revert go version

* debug: Why

* chore: Use default golangci-lint

* debug: Back

* docs(graphite): add vm.expectRevert low-level call pattern rule (#18272)

* docs(graphite): add vm.expectRevert low-level call pattern rule

* docs(graphite): flag missing assertions on vm.expectRevert low-level calls

* ci(contracts): increase heavy-fuzz job resources to 2xlarge (#18276)

* feat: contracts changes required for OPCMv2 (#18244)

* feat: contracts changes required for OPCMv2

* fix: upgrade asr in OPCM

* fix: add ASR tests

* fix: test names

* all: upgrade op-geth (#18280)

* op-dispute-mon: Rename L2BlockNumber to L2SequenceNumber (#18278)

The field is used for both block numbers with output root games and timestamp for super root games.

* temp(ci): reinstate the initialize job for the release workflow (#18284)

* temp: reinstate the initialize job for the release workflow

It just echoes a message and is configured with the correct tag and
branch filters.

* fix echo

* add requires --initialize to subsequent jobs in release workflow (#18285)

* op-devstack: DSL: Configurable attempts for EL NotAdvanced (#18286)

* fix: update expected SuperchainConfigProxy impl and conditionally update it (#18293)

* fix: updated expected SuperchainConfigProxy impl after U17 sepolia upgrade

* fix: conditionally update superchainConfig

* op-challenger: Update version of kona-host in docker image to 1.2.2 (#18231)

* op-challenger: Update version of kona-host in docker image to 1.2.2

* ci: Attempt to create a single source of truth for the kona version

* sysgo: Fix typos

* kona: Update to 1.2.4 (#18302)

* kona: Update to 1.2.4

* kona: Enable challenger acceptance test

* kona: Delete bin dir when cleaning

* kona: Fix key for kona-host cache

* ctb: Fix DisputeGameFactory fuzz tests (#18296)

* cannon: Add go 1.25 tests (#18279)

* cannon: Add go 1.25 tests

* cannon: Use go 1.25.4 for tests.

Simplify and actually run the keccak tests.

* op-e2e: Deflake TestMissingBatchE2E: Retry inclusion check when indexing (#18304)

* op-e2e: Deflake TestMissingBatchE2E: Retry inclusion check when indexing

* use ticker

* handle timeout err

* test(contracts): add version validation test for WETH contract (#18303)

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* build(contracts): enforce compiler warnings and fix test return value checks (#18264)

* build(contracts): enforce compiler warnings as errors

- Add deny_warnings to foundry.toml default profile
- Add set -e to pre-pr command in justfile

* test(contracts-bedrock): fix unchecked low-level call return values in FeeSplitter tests

- add proper return value checks for low-level .call() operations
- fix Warning 9302 in FeeSplitter.t.sol (3 occurrences)
- fix Warning 9302 in FeeSplitterVaults.t.sol (1 occurrence)

* build(contracts): ignore too-many-warnings error in foundry config

* fix(test): fix assertion logic in FeeSplitter expectRevert tests

- remove assert(!success) after vm.expectRevert() calls
- add success variable reference to suppress unused variable warning

* ci(contracts): add latest artifact fallback to reduce PR build times (#18291)

* ci(contracts): add latest artifact fallback to reduce PR build times

- upload artifacts with "latest" name in addition to checksum-based name in publish-artifacts.sh
- add --fallback-to-latest flag to pull-artifacts.sh
- enable fallback logic to try artifacts-v1-latest.tar.{gz,zst} when exact checksum not found
- update contracts-bedrock-tests job to use --fallback-to-latest flag
- update contracts-bedrock-coverage job to use --fallback-to-latest flag
- update contracts-bedrock-tests-upgrade job to use --fallback-to-latest flag

* refactor(script): extract download_and_extract helper in pull-artifacts

* fix(scripts): prevent path traversal in artifact extraction

* revert: remove pull-artifacts.sh and CI config changes for phased rollout

* Add logfmtms to Log Format Usage (#18297)

* cannon: Fix support for state version 7 in latest docker builds (#18311)

Latest cannon now only supports state version 8, so ensure we use an older cannon for state version 7 when building multicannon.

* cannon: Ensure cannon temp files are removed before exiting. (#18312)

os.Exit doesn't run defer statements before exiting. So return cli.Exit error instead - still lets us set the error code and triggers an exit, but handled by urfave after the function has returned and defer statements have run.

* op-node: Light CL: Frontend Flags (#18270)

* op-node: Light CL: Frontend Flags

* better go

* op-node: Move unsafeOnly related logs to init

* Removed default values for optional flags

* Use IsSequencer instead of isVerifier on syncCfg check

* Early fail by checking invalid flag combinations

* Better logs for unsafe and safe status

* feat: setBatcherHash address overload (#18298)

* feat: setBatcherHash address overload

* chore: semver

* fix: Artifact publishing script (#18275)

* op-sync-tester: Verifier Engine APIs for Jovian (#18307)

* op-acceptance-tests: Include Jovian for Sync Tester HF tests

* op-sync-tester: Support Jovian

* Fix sync tester extra data validation

* Check safe only advancement

* fix comment

* Disable discovery because we cut the CLP2P manually

* ci(contracts): enable latest artifact fallback logic (#18310)

* ci(contracts): enable latest artifact fallback logic

- add --fallback-to-latest flag to pull-artifacts.sh
- enable fallback forcontracts tests, coverage, and upgrade jobs in ci config
- extract download_and_extract helper function in pull-artifacts.sh
- add path traversal protection with --exclude='*../*' flag to tar commands

* test: trigger artifact fallback by modifying test file

* fix(scripts): address bots security concerns in pull-artifacts.sh

- add secure curl flags (--fail, --location, --connect-timeout, --max-time, --tlsv1.2) to prevent hangs and enforce TLS
- update path traversal exclusion pattern from '*../*' to '*..*' to block all paths containing '..' anywhere
- revert test comment change used for CI testing

* op-deployer: record opDeployerVersion in intent and state (#18333)

* docs: add cgt audit report (#18328)

* docs: add cgt audit report

* Update docs/security-reviews/README.md

Co-authored-by: Matt Solomon <matt@mattsolomon.dev>

---------

Co-authored-by: Matt Solomon <matt@mattsolomon.dev>

* all: upgrade op-geth (#18214)

* lsp fixes

* update go versions, delete cannon go1.23 modules

* remove dead code that was panicking

* go mod tidy in cannon modules

* op-program: Update baseline cannon report

* update geth to synctest tag

---------

Co-authored-by: inphi <mlaw2501@gmail.com>

* circleci: Slack context for scheduled-sync-test-op-node (#18341)

* op-chain-ops: add check-jovian cmd (#18269)

* op-chain-ops: add check-jovian cmd

* op-chain-ops: add extra data format validation to check-jovian command

* op-chain-ops: enhance block header validation in check-jovian command to differentiate between zero and non-zero BlobGasUsed

* refactor using op-geth library fns

* Rename checkBlockHeader to checkBlock and improve Jovian activation
checks

* Add secret-key flag to send tx-to-self

When a hex secret key is supplied, send a signed tx-to-self on L2, wait
up to 2 minutes for it to be mined, and use its block for the
BlobGasUsed check. Normalize 0x prefix and surface errors on failure.

* lint

* Require non-zero BlobGasUsed for Jovian

* Use txmgr to send and wait for tx in check-jovian

Replace manual key parsing, signing, and bind.WaitMined with a
SimpleTxManager (txmgr). Add l2endpoint to env and wire txmgr config,
using txmgr.Send to submit and await the self-transfer receipt.

* Validate BlobGasUsed against DA footprint

* Use provided context for transaction send

* Update op-chain-ops/cmd/check-jovian/main.go

Co-authored-by: Sebastian Stammler <seb@oplabs.co>

* Remove comment about BlobGasUsed

* Document secret key option for check-jovian

Add usage examples for CHECK_JOVIAN_SECRET env var and the --secret flag

* Return error on zero DA scalar; harden blobGasUsed

Treat a DA footprint gas scalar of 0 in L1Block as an error (Jovian
should not allow it). Delay calling t.From() until after creating the tx
manager and check the BlobGasUsed pointer before dereferencing to avoid
nil derefs.

* Annotate txmgr logger with component field

* Return error for blocks with no transactions

Treat blocks with zero transactions as an error instead of proceeding.
Retain the inconclusive warning for single-transaction blocks. Compute
DA footprint only for blocks with multiple transactions.

---------

Co-authored-by: Sebastian Stammler <seb@oplabs.co>

* test(contracts): add comprehensive test coverage for Constants library (#18267)

- Split EIP1967 constants test into separate tests for better clarity
- Add tests for ESTIMATION_ADDRESS, DEFAULT_L2_SENDER, GUARD_STORAGE_SLOT, ETHER, and DEPOSITOR_ACCOUNT constants
- Add test for DEFAULT_RESOURCE_CONFIG() function covering all 6 struct fields
- Import IResourceMetering interface for ResourceConfig struct testing

All 8 tests pass successfully.

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* test(contracts): enhance LegacyMessagePasser test coverage with fuzz tests (#18340)

* test(contracts): convert passMessageToL1 test to fuzz test

- Convert test_passMessageToL1_succeeds to testFuzz_passMessageToL1_succeeds
- Fuzz both message content and sender address for broader coverage
- Fix assertion to use assertTrue() instead of assert()

* refactor(test): improve test naming and validation

- Rename testFuzz_passMessageToL1_succeeds to testFuzz_passMessageToL1_arbitraryInput_succeeds
- Add message length bound (4096 bytes) to prevent out-of-gas in heavy-fuzz CI
- Add negative assertion to verify per-sender separation
- Rename test_version_succeeds to test_version_validFormat_succeeds
- Replace hardcoded version check with format validation (non-empty + 2 dots)

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* feat(op-validator): add v5.0.0 contracts support (#18299)

* feat(op-validator): add v5.0.0 contracts support

* fix(op-validator): lint

* fix(op-validator): disable 5.0.0 in tests

* fix(op-validator): detect validatoraddress

* fix(op-validator): add comments

* fix(op-validator): use semver to compare

* feat: expose starting root in ASR (#18343)

* feat: expose starting root in ASR

* fix: have function expose struct

* fix: bump circleci image size

* fix: bad test for upgrades

* Enforce deterministic shell script formatting with shfmt (#18329)

* Add shfmt

Fix .editorconfig

* apply formatting with shfmt

* feat: add op-succint contracts (#18277)

* feat: add op-succint contracts

* feat: add types and errors for op-succinct contracts

* fix: some types and OutputRoot -> Proposal

* fix: import errors

* fix: l2Blocknumber to l2SequenceNumber

* fix: remove unused import

* fix: interface compiler version, naming, and semgrep fixes for ci

* Update packages/contracts-bedrock/src/dispute/lib/Types.sol

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* fix: build error for types file

* chore: bump semver lock

* chore: bump semver after conflict

* fix: bump semver lock

* fix: ignore new contract in initializer tests

* docs: add attribution

* fix: bump semver lock

* fix: bump semver

* fix: bump semver

* fix: bump semver lock

* chore: semver lock got hands

* fix: semver lock

* fix: semver lock

* fix: semver lock

* fix: semver lock

---------

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* fix(ci): add branch restriction and label override for artifact fallback (#18330)

* fix(ci): restrict artifact latest fallback to PRs only

- add branch check to only use --fallback-to-latest on non-develop branches
- ensure develop merges build with fresh artifacts

* feat(ci): add force-use-fresh-artifacts label override for artifact fallback

* fix(ci): replace gh cli with curl for label check

* refactor(ci): extract artifact fallback logic to bash script

- move conditional logic from circleci config to use-latest-fallback.sh

* fix(ci): add security flags to curl in use-latest-fallback.sh

* fix(ci): use jq instead of grep for json parsing

* fix(ci): add error handling for github API failures

- wrap curl and jq calls in conditional to catch failures
- default to fallback behavior if API call fails (safe default)
- log warning message when API is unreachable

* SystemConfig: Parse L1 Receipts Atomically Before Application (#18292)

* SystemConfig: Parse L1 Receipts Atomically Before Application

* Change Apply rules to all Valid ; PR Comments

* Add indicies back to error

* fix(op-acceptance-tests): reduce per-package timeout (#18349)

* op-node/rollup/derive: Fix too old batch epoch handling (#18283)

* fix(ci): add dependency installation to heavy fuzz nightly job (#18351)

- add install-contracts-dependencies step in contracts-bedrock-heavy-fuzz-nightly job

* feat(op-deployer): forge verify (#18096)

* feat(op-deployer): forge verify

* fix(op-deployer): state.json verification

* fix(op-deployer): test and lint

* fix(op-deployer): add apply step with validation (disabled)

* fix(op-deployer): add detection for partial verification

* fix(op-deployer): update address

* fix(op-deployer): comments

* fix(op-deployer): test

* fix(op-deployer): make logging debug

* fix(op-deployer): comments

* fix(op-validator): add todo

* chore(ci): op-e2e-cannon-tests; xlarge machine (#18359)

Job kept being killed, probably due to hitting resource limits.

* feat: cgt (#18076)

* feat(cgt): custom gas token

Signed-off-by: Hex <165055168+hexshire@users.noreply.github.com>
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: Ashitaka <96790496+ashitakah@users.noreply.github.com>
Co-authored-by: AgusDuha <81362284+agusduha@users.noreply.github.com>

* feat: add gasPayingTokenName and gasPayingTokenSymbol on json config files

* fix: contracts semver

* fix: remove system config bool

* test: add OptimismPortal2CGT tests

* chore(cgt): set cgt flag l1block & fixes

* fix(linter): resolve goimports formatting issue

* feat: add separate l2 contracts for cgt (#530)

* feat: add L1BlockCGT

* feat: add L2ToL1MessagePasserCGT

* chore: remove test exclution in test validation

* test(cgt): fix failing tests (#529)

* test(cgt): fix failing tests

* test(cgt): fix portal version

* test(cgt): skip tests on forked mode

* fix: predeploys test cgt mismatch

* test(cgt): minor fixes

---------

Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>

* fix(cgt): revert weth

* cgt: feature flag integration

Updates the implementation to use the new feature flagging system

* config: make backwards compatible

Use the legacy config name so that less needs to change for legacy CGT
chains

* fix: build issue

Remove leftover merge conflict

* fix: better backwards compatibility

* build: fix

* lint: fix

* snapshots: update

* op-deployer: apply test with CGT

Add a specific test for CGT in the intent

* contracts-bedrock: fix versioning

* lint: fix

* deployer: remove standard values

* contracts: semver lock

* contracts-bedrock: fix semver + abis

* cgt: solidity test cleanup

* solidity: fmt

* tests: remove dead imports

* tests: fixup

* cgt: configurable liquidity amount

* feat: configurable native asset liquidity balance

Fix the build for this feature

* cleanup: merge L1Block logic so that we inherit

Keeps it simple because development on Jovian is happening and we will
inherit any Jovian modifications automatically

* snapshots: update

* cgt: inherit logic for L2ToL1MessagePasser

Generally simplifies the code

* semver-lock: update

* lint: fix

* lint: fixup

* interfaces: fix

* fixes: smol

* deploy-config: sane default

* lint: fix

* linting: fix

* lint: fix

* semgrep: fix

* lint: fix

* tests: fix

* tests: fix fuzz

* fix: custom gas token rebase (#17484)

* fix: import in OptimismPortal2CGT test and pre-pr

* fix(cgt): add missing native asset amount (#543)

* fix: upgrade contract  name

* feat: add nativeAssetLiquidityAmount to config json files

* fix: add correct nativeAssetLiquidityAmount in op-deployer

* fix: add correct nativeAssetLiquidityAmount in op-e2e and fix withCustomGasToken argument on op-devstack

* fix: restore OptimismPortal2CGT

* fix: all comments

* fix: comments

* fix: governace

* fix: remove aux

* fix: remove aux

* fix: deploy cgt

* fix: revert cgt deploy config

* fix: deploy config

* chore: run linter

* fix: remove unnecessary GetNativeAssetLiquidityAmount

---------

Co-authored-by: Ashitaka <ashitaka@defi.sucks>
Co-authored-by: agusduha <agusnduha@gmail.com>
Co-authored-by: hexshire <hex@wonderland.xyz>

* fix: l2 genesis pipeline (#554)

* fix: add nativeAssetLiquidityAmount in e2e apply test (#555)

* fix: failing test

---------

Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: Ashitaka <ashitaka@defi.sucks>
Co-authored-by: hexshire <hex@wonderland.xyz>
Co-authored-by: Hex <165055168+hexshire@users.noreply.github.com>

* fix: semver lock

* fix: CGT review fixes (#17534)

* fix: json default zero

* feat(cgt): add native asset liquidity amount test & omitempty on cgt struct

* test: check native asset liquidity amount is correctly configured

* feat: add omitempty to name and symbol on cgt intent struct

* fix: check value in cgt

* feat(cgt): add cgt dev feature

* feat: add cgt dev feature

* refactor: set custom gas token (#563)

* feat: add cgt devFeatures and remove useCustomGasToken from DeployOPChainInput

---------

Co-authored-by: Hex <165055168+hexshire@users.noreply.github.com>

* fix: ir informational

* fix: informational

* fix: legacy tag

* feat(cgt): add setNativeAssetLiquidityAmount & L2Genesis max amount check

* feat: add setNativeAssetLiquidityAmount & L2Genesis max amount check

* test: fix bound param in liquidity controller

* fix: remove unused import

* refactor: move max amount check inside setNativeAssetLiquidity

* refactor: make chainIntent.CustomGasToken a non-pointer (#574)

* refactor: make chainIntent.CustomGasToken a non-pointer

* test: fix custom gas token text (#576)

---------

Co-authored-by: Hex <165055168+hexshire@users.noreply.github.com>

* fix: undo tests

Co-authored-by: hexshire <hex@wonderland.xyz>

* fix: cgt portal (#577)

* fix: semver

* fix: cgt tests coverage (#582)

* fix: l2genesis expectRevert amount test

* test: improve l1block coverage

* test: improve l1blockcgt coverage

* test: add isCustomGasToken tests on SystemConfig

* test: improve L2ToL1MessagePasserCGT coverage

* test: improve L2ToL1MessagePasser coverage

* fix: naming pre-pr

* fix(cgt): change L2ToL1MessagePasser & OPContractsManager semver (#584)

* fix: change L2ToL1MessagePasser semver

* fix: change L2ToL1MessagePasser & OPContractsManager  semver

* fix: cgt feature tests (#585)

* fix: cgt feature tests

* fix: deposits with amount 0 when cgt enabled

* Revert "fix: deposits with amount 0 when cgt enabled"

This reverts commit 8bee464d45cf7d4040c4dd1459ffc78de2508024.

* fix: cgt portal (#587)

* fix: ci fixes (#588)

---------

Co-authored-by: Ashitaka <96790496+ashitakah@users.noreply.github.com>
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: Hex <165055168+hexshire@users.noreply.github.com>
Co-authored-by: hexshire <hex@wonderland.xyz>

* fix: semver

* fix: opcm version

* fix: tests

* feat(op-acceptance-tests): add acceptance tests for native CGT across L1/L2 (#17451)

- Gate suite via L1Block.isCustomGasToken(); assert name/symbol non-empty
- L2: value transfer pays CGT token (typed amounts via op-service/eth)
- L2: XDM rejects callvalue; L2StandardBridge legacy withdraw reverts
- L1: Portal receive/deposit rejects ETH; introspect SystemConfig addr
- L1: assert SystemConfig.isCustomGasToken() is true

* fix: custom gas token rebase review comments (#17577)

* chore: use w3 library

* fix: msg error

* refactor(cgt): rename amount & add geq 0 check (#600)

* feat: add NativeAssetLiquidityAmount sign check

* refactor: rename NativeAssetLiquidityAmount to InitialLiquidity

* refactor(cgt): rename json nativeAssetLiquidityAmount to initialLiquidity (#601)

* refactor: rename json nativeAssetLiquidityAmount to initialLiquidity

* fix: only add initialLiquidity to cgt intent struct

---------

Co-authored-by: Hex <165055168+hexshire@users.noreply.github.com>
Co-authored-by: Ashitaka <96790496+ashitakah@users.noreply.github.com>
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>

* fix: cgt review (#17612)

* refactor: replace enableCustomGasToken with cgt devfeature

* feat: remove fund in NativeAssetLiquidity (#605)

* fix(cgt): remove OptimismPortal2 test from exclusions (#606)

* fix: remove OptimismPortal2 test from exclusions

* fix: remove virtual and restore constructor in portal test

* refactor: use low level call to receive test

* refactor(cgt): migrate L1Block and L2ToL1MessagePasser cgt tests (#608)

* refactor: migrate L1Block cgt tests

* refactor: migrate L2ToL1MessagePasser cgt tests

* fix: comments (#607)

* fix: comments

* fix: custom error

* fix: errors and tests

* fix: errors and tests

* fix: cgt tests (#610)

* fix: comments

* fix: custom error

* fix: errors and tests

* fix: errors and tests

* fix: tests

* fix: tests

* fix: weth

* fix: cgt tests (#611)

* fix: comments

* fix: custom error

* fix: errors and tests

* fix: errors and tests

* fix: tests

* fix: tests

* fix: weth

* fix: remove types

* fix: coverage tests (#612)

* fix: separate setUp function tests (#613)

---------

Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: Ashitaka <96790496+ashitakah@users.noreply.github.com>

* test: custom gas token invariants (#17489)

* test(inv): setup and total sup inv

* test(inv): accounting invariants

* chore: doc

* fix: import in OptimismPortal2CGT test and pre-pr

* fix(cgt): add missing native asset amount (#543)

* fix: upgrade contract  name

* feat: add nativeAssetLiquidityAmount to config json files

* fix: add correct nativeAssetLiquidityAmount in op-deployer

* fix: add correct nativeAssetLiquidityAmount in op-e2e and fix withCustomGasToken argument on op-devstack

* fix: restore OptimismPortal2CGT

* fix: all comments

* fix: comments

* fix: governace

* fix: remove aux

* fix: remove aux

* fix: deploy cgt

* fix: revert cgt deploy config

* fix: deploy config

* chore: run linter

* fix: remove unnecessary GetNativeAssetLiquidityAmount

---------

Co-authored-by: Ashitaka <ashitaka@defi.sucks>
Co-authored-by: agusduha <agusnduha@gmail.com>
Co-authored-by: hexshire <hex@wonderland.xyz>

* fix: l2 genesis pipeline (#554)

* fix: add nativeAssetLiquidityAmount in e2e apply test (#555)

* fix: failing test

* chore: doc

Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* chore: remove unused imports

* chore: fix semgrep

* chore: change error name

---------

Co-authored-by: drgorillamd <83670532+drgorillamd@users.noreply.github.com>
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: Ashitaka <ashitaka@defi.sucks>
Co-authored-by: agusduha <agusnduha@gmail.com>
Co-authored-by: hexshire <hex@wonderland.xyz>
Co-authored-by: AgusDuha <81362284+agusduha@users.noreply.github.com>
Co-authored-by: Hex <165055168+hexshire@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* refactor: use skipIfDevFeatureDisabled for cgt predeploys test (#614) (#17621)

Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>

* fix: tests

* fix: auth minter helper & bound _mint in depositTransaction tests (#17642)

* refactor: auth minter helper tests (#618)

* fix: bound _mint correctly in depositTransaction test function (#619)

* chore: run pre-pr

* chore: address ci errors

* chore: fix go tests

* chore: run checks

* test(wip): fix failing tests

* chore: run pre-pr

* fix: cgt flag tests

* test: skip fee split invriant when CGT enabled

* test: fix l2 genesis override test (#673)

* feat: add ownable liquidity (#671)

* feat: add ownable liquidity

* feat: remove enable and add default liquidity

* feat: pre pr fixed

* fix: initializer

* fix: comments

* fix: comments

* fix: pre-pr

* fix: override

* fix: tests

* fix: cursor issues

* fix: cursor bug bot

* fix: cursor bot

* fix: remove override

* fix: comment

* feat: add checks

* fix: tests

* fix: nil in cgt config

---------

Co-authored-by: agusduha <agusnduha@gmail.com>

* fix: semver

* test: fix cgt fork tests (#676)

* test: fix cgt fork tests

* fix: remove dev flag in L1 tests

* fix: go linter (#679)

* fix: go linter

* fix: with custom gas token func

* test: fix go fuzz (#680)

* fix: cgt config jsons (#681)

* fix: zero owner and sepolia address (#685)

* feat: predeploys (#684)

* fix: predeploys

* fix: predeploys

* fix: L2 genesis

* test: fix cgt with revenue sharing tests (#691)

* fix: semver

* fix: cgt liquidity controller natspec (#694)

* fix: remove dev feature flag from opcm (#695)

* fix: remove dev feature flag from opcm

* fix: lint

---------

Signed-off-by: Hex <165055168+hexshire@users.noreply.github.com>
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: Ashitaka <96790496+ashitakah@users.noreply.github.com>
Co-authored-by: AgusDuha <81362284+agusduha@users.noreply.github.com>
Co-authored-by: Mark Tyneway <mark.tyneway@gmail.com>
Co-authored-by: Ashitaka <ashitaka@defi.sucks>
Co-authored-by: agusduha <agusnduha@gmail.com>
Co-authored-by: Stefano Charissis <stefano@oplabs.co>
Co-authored-by: Simon Something /DrGoNoGo <83670532+simon-something@users.noreply.github.com>
Co-authored-by: drgorillamd <83670532+drgorillamd@users.noreply.github.com>
Co-authored-by: graphite-app[bot] <96075541+graphite-app[bot]@users.noreply.github.com>

* fix(scripts): skip validation for missing test artifacts (#18367)

* fix(scripts): skip validation for missing test artifacts

- add extractTestFileName() to extract test filename from artifact path
- add testFileExists() to check if test source file exists recursively in test directory
- skip validation in processFile() when test source file does not exist
- add TestExtractTestFileName test
- add TestTestFileExists test with subdirectory validation
- update TestProcessFile to create test source file and artifact structure
- add setupTestDir() helper function for test directory setup
- add createTestArtifact() helper function for artifact creation
- refactor test setup to use helper functions in 5 tests

* fix(script): skip validation for missing test contracts

- add testContractExistsInFile() to check if contract exists in test file
- skip validation in processFile() when test contract not found in source file
- add TestTestContractExistsInFile test

* feat: have heavy-fuzz tests also use dev feature matrix (#18368)

* chore: Github release binary provider: Version check & static cache pather (#18369)

* chore: Promote static cache pather

* chore: Add runtime version check

* feat: OPCM v2 (#18079)

* feat: OPCMv2

* fix: bug in deploying dispute games

* fix: no more opcmv1 changes

* fix: bad interface

* fix: further clean diff

* fix: reduce diff

* fix: undo artifacts diffs

* fix: broken go structs

* fix: opcm output struct ordering

* fix: better tests

* fix: justfile path

* fix: lcov issue

* fix: pr review comments

* fix: pr comments

* fix: rebase tweaks

* fix: contract verification failure

* fix: last few ci issues

* Add DeployFeesDepositor script (#18223)

* Add DeployFeesDepositor script

* Refactor deploy script to remove Output struct

* forge fmt

* Make logResults() pure

* fix return value names

* remove unused import

* Apply suggestions from code review

Co-authored-by: Disco <131301107+0xDiscotech@users.noreply.github.com>

* Add missing natspec

* Add natspec to tests

---------

Co-authored-by: Disco <131301107+0xDiscotech@users.noreply.github.com>

* fix(scripts): check interfaces and libraries in testContractExistsInFile (#18370)

- update testContractExistsInFile() to match interfaces and libraries in addition to contracts
- add test cases for interface and library validation in TestTestContractExistsInFile

* op-deployer: activate jovian at genesis by default (#18342) (#18348)

* op-deployer: activate jovian at genesis by default (#18342)

* op-deployer: activate jovian at genesis by default

* fix tests for jovian activation

* use inclusive instead of exclusive arg

* op-acceptance-tests: only run Ecotone fees test against compatible networks (#18225)

* feat: add support for blockscout in VerifyOPCM (#18373)

* feat: add support for blockscout in VerifyOPCM

This commit adds support for blockscout in VerifyOPCM and defaults
to blockscout. Etherscan verification can still be used but
blockscout is simpler and more reliable on all networks.

* fix: formatting

* feat: safer safes audit (#18300)

* Use vm.prank(address,bool) for delegateCall, remove DelegateCaller contract (#18331)

* Use vm.prank(address,bool) for delegateCall, remove DelegateCaller contract

Remove imports of DelegateCaller

fmt

fix: by explicitly using delegatcall

was expecting foundry to override the CALL to a delegatcall for some
reason.

remove unused returndata vars

fix updatePrestate call testing

Fixes to ForkLive

Self review clean up

fix: handle empty EOA code in delegate call tests

Adds a prankDelegateCall() helper function to eliminate repetitive code pattern for handling Foundry's requirement that addresses have at least one byte of code to prank delegatecalls. This helper combines vm.etch() and vm.prank(_, true) into a single reusable function.

Create prankDelegateCall function

Restore DelegateCaller contract

Prevents merge conflicts with other inflight work

Clean up comments on prankDelegateCall

Delete DelegateCaller contract

* Fix outdated comment and etch restore

* fix unused imports

* Fix upgradeSuperchain call

* op-devstack: add WithArchive matcher (#18227)

and use it in the pectra acceptance tests.

* feat: have OPCMv2 revert if user tries to provide address(0) as SystemConfig for upgrade (#18376)

* fix: semver updates

* fix: semver lock

* fix: semver lock again

* op-acceptance: Add acceptance tests for withdrawals using cannon and cannon_kona (#18374)

* op-acceptance: Add acceptance tests for withdrawals using cannon and cannon_kona game types

* op-acceptance: Add game types through OPCM instead of separate op-deployer script

* op-acceptance: Remove unused method

* ci: add GitHub Actions workflow to build and attest container images (#18397)

- Add bake.yaml workflow using factory reusable multi-arch workflow
- Build all 16 OP Stack images (op-node, op-batcher, op-deployer, op-faucet, op-program, op-proposer, op-challenger, op-dispute-mon, op-conductor, da-server, op-supervisor, op-supernode, op-test-sequencer, cannon, op-dripper, op-interop-mon)
- Native ARM builds on ubuntu-24.04-arm for faster compilation
- Multi-arch manifest creation with SLSA Build Level 3 attestations
- Add compute-git-versions.sh script to replicate CircleCI GIT_VERSION logic
- Read KONA_VERSION from kona/version.json (single source of truth)
- Add Makefile target for compute-git-versions
- GitHub Actions cache support for faster builds
- BuildKit provenance (mode=max) + GitHub attestations for rich metadata

Signed-off-by: falcorocks <14293929+falcorocks@users.noreply.github.com>

* test(contracts): improve DevFeatures test coverage with fuzz tests (#18396)

* refactor(test): rename test functions to use _succeeds suffix and add docs

- Rename all test functions from _works to _succeeds suffix
- Simplify test names by removing redundant 'check' and 'Against' words
- Add @notice documentation for each test function

* test(contracts): add fuzz tests for isDevFeatureEnabled function

- Add testFuzz_isDevFeatureEnabled_featureMatchesSelf_succeeds
- Add testFuzz_isDevFeatureEnabled_emptyFeatureAlwaysFalse_succeeds
- Add testFuzz_isDevFeatureEnabled_featureInSuperset_succeeds
- Add testFuzz_isDevFeatureEnabled_featureNotInDisjointBitmap_succeeds

---------

Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>

* op-challenger: Update list-games sub command to support optimistic zk games (#18393)

* op-challenger: Update list-games sub command to support optimistic zk games.

Starts to build out the OptimisticZK contract bindings and make challenger not require everything to look like a FaultDisputeGame.

* Fix variable name

* contracts: Replace mock contracts with vm.mock functions (#18388)

* Replace Reverter contract with vm.mockCallRevert()

* Replace Call Recorder with vm.expectCall()

* fix imports

* Fix selector data on recipient

* Rename Callers to GasBurner

It's the only contract left in the file now.

* ci: split bake workflow in protected/unprotected flows (#18443)

* ci: split bake workflow in protected/unprotected

* ci: address review feedback

Signed-off-by: falcorocks <14293929+falcorocks@users.noreply.github.com>

---------

Signed-off-by: falcorocks <14293929+falcorocks@users.noreply.github.com>

* chore(op-acceptance-tests): flake-shake; slack notifications for failures only (#18439)

* feat: add new check for strict pragma (#18390)

Adds a new check in the contracts package that confirms that all
source contracts are using a strict pragma instead of a dynamic
one.

* Add Openchain import on CI (#18447)

* start

* add upload to ci

* fix: update CI

* feat: rm update-selectors from pre-pr

* fix: rm checkout from workspace

* Add flashblocks and matrix testing support to sysgo (#18318)

* Fix CI (#18450)

* start

* add upload to ci

* fix: update CI

* feat: rm update-selectors from pre-pr

* fix: rm checkout from workspace

* fix: checkout

* fix: contract dependencies

* op-supernode: Superroot API Activity (#18180)

* op-supernode: Superroot API Activity

* Response Object Cleanup

* Update return struct for full Optimistic Outputs ; In-Proc RPC

* Use eth.NotFound Errors

* op-node: Light CL: Disabling Derivation (#18290)

* op-node: Logic for Disabling Derivation

* op-devstack: Support UnsafeOnly preset and twoVerifiers System

* op-acceptance-tests: UnsafeOnly Tests for Seq and Ver

* Do not check second verifier safe head because of EL Sync

* op-node: Fix EngineController Reset logic for sequencer init

* doc string fix

* Defensive protection for avoiding FCU to genesis

* Modularize ext sync tester config

* op-acceptance-tests: Unsafe Only with Ext Network

* Also check unsafe head advances after initial EL Sync is done

* check unsafe gap is closed

* remove temp

* Allow alt sync when unsafeOnly

* check seq restart with API

* better init EL syncing log msg

* fix comments and add warning

* Check  isSequencer for unsafeOnly initial Reset at SyncDeriver

* remove non initialized check during syncDeriver step

* Refactor for readability

* feat: add OPCMv2 tests for existing behaviors (#18389)

* feat: add OPCMv2 tests for existing behaviors

* feat: more tests

* fix: lint errors

* fix: test naming

* fix: improve some tests wrt pr comments

* fix: correct …
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.

Misleading constant for EIP-2935

6 participants