Skip to content

Conversation

@JustXxx
Copy link
Owner

@JustXxx JustXxx commented Apr 16, 2024

No description provided.

aliersh and others added 30 commits December 9, 2025 19:04
…8557)

- query GitHub API with commit SHA to find PR number for external PRs
- fall back to extracting PR number from CIRCLE_PULL_REQUEST URL for internal PRs
## Description

Removes unused `rollup` binary
…p-rs/kona#3148)

## Description

We dropped support for kurtosis a few months ago but never got around
cleaning up the test folder. This PR does some basic clean-ups and
updates the test docs
* feat: fast check runner for contracts

* feat: further script improvements

* fix: lint

* fix: comments

* feat: add fast checks to ci

* fix: add missing checks

* fix: corrected caching logic

* fix: handle interface check bugs
)

## Description

This PR fixes our peer resolution process for bootnodes in kona. We were
not properly resolving bootnodes that were only providing a DNS address
* feat: add audit report

* chore: update report with audit fixes commit hash

* chore: update release tag

* feat: add superchain ops upgrader audit report

* chore: rename upgrader audit report

* fix: proper report naming

* fix: rev sharing item order
<!--
Thank you for your Pull Request. Please provide a description above and
review
the requirements below.

Bug fixes and new features should include tests.

Contributors guide:
https://github.com/alloy-rs/core/blob/main/CONTRIBUTING.md

The contributors guide includes instructions for running rustfmt and
building the
documentation.
-->

<!-- ** Please select "Allow edits from maintainers" in the PR Options
** -->

## Motivation

<!--
Explain the context and why you're making that change. What is the
problem
you're trying to solve? In some cases there is not a problem and this
can be
thought of as being the motivation for your change.
-->

## Solution

<!--
Summarize the solution and provide any necessary context needed to
understand
the code change.
-->

## PR Checklist

- [ ] Added Tests
- [ ] Added Documentation
- [ ] Breaking changes
<!--
Thank you for your Pull Request. Please provide a description above and
review
the requirements below.

Bug fixes and new features should include tests.

Contributors guide:
https://github.com/alloy-rs/core/blob/main/CONTRIBUTING.md

The contributors guide includes instructions for running rustfmt and
building the
documentation.
-->

<!-- ** Please select "Allow edits from maintainers" in the PR Options
** -->

## Motivation

<!--
Explain the context and why you're making that change. What is the
problem
you're trying to solve? In some cases there is not a problem and this
can be
thought of as being the motivation for your change.
-->

## Solution

<!--
Summarize the solution and provide any necessary context needed to
understand
the code change.
-->

## PR Checklist

- [ ] Added Tests
- [ ] Added Documentation
- [ ] Breaking changes
…18566)

* Add tests for future/unknown SystemConfig events

* Return typed errors for SystemConfig events

Add ErrUnknownEventVersion and ErrUnknownEventType and return wrapped
typed errors (%w) when encountering unknown event versions or types.
Replace NewCriticalError for ErrParsingSystemConfig with a plain error.
Update tests to assert errors with require.ErrorIs and adjust event
topics/data accordingly.

* Fix error text for unknown event type
* op-acceptance-tests: batcher: add pending nonce busy wait

* comment

* better name
Co-authored-by: Arsenii Kulikov <klkvrr@gmail.com>
…h#20181)

Co-authored-by: Matthias Seitz <matthias.seitz@outlook.de>
* op-interop-filter: Service skeleton with flags and metrics

* feat(op-interop-filter): add service skeleton

Add op-interop-filter service scaffolding:

**Core structure:**
- flags/flags.go: CLI flag definitions with L2 RPC parsing
- flags/flags_test.go: Unit tests for flag parsing
- filter/config.go: Configuration struct and parsing
- filter/service.go: Service lifecycle management
- filter/frontend.go: RPC handlers (supervisor and admin)
- filter/backend.go: Stub backend (returns ErrUninitialized)
- metrics/metrics.go: Prometheus metrics interface and implementation
- cmd/main.go: Application entry point

**Build infrastructure:**
- justfile and Makefile for building
- docker-bake.hcl target
- Dockerfile builder and target stages
- Dockerfile.dockerignore allowlist entry

The service compiles and starts but CheckAccessList returns
ErrUninitialized until the actual implementation is added.

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

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

* refactor(op-interop-filter): align with op-faucet and op-interop-mon patterns

- Change --l2-rpcs to StringSliceFlag (query chain ID from RPC)
- Remove custom ParseL2RPCs parsing and tests
- Add doc subcommand for metrics documentation
- Add Document() method to metrics
- Fix NewMetrics() to take procName parameter
- Remove Required: true from flag (use CheckRequired only)
- Use "message" key in log.Crit for consistency

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

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

* fix(op-interop-filter): use v0.0.0 version to match other services

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

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

---------

Co-authored-by: opsuperchain <opsuperchain@slop.bot>
Co-authored-by: Claude <noreply@anthropic.com>

* fix(op-interop-filter): use procName for metrics namespace

* op-interop-filter: Address PR review comments, add Rewind stub, and fix JWT auth

* op-interop-filter: Address PR review comments

- Remove comment from .gitignore
- Remove 'op-geth' from app description to be client-agnostic
- Simplify CheckAccessList error handling to match op-supervisor
- Update SetFailsafeEnabled to indicate pending implementation
- Add JWT secret flag and wire up authentication for admin RPC

* op-interop-filter: Add Rewind admin RPC stub

Adds Rewind method to AdminFrontend as a stub for future implementation.
This will allow operators to recover from reorg-induced stuck states
via manual intervention.

* op-interop-filter: Wire up JWT secret

- Fix ObtainJWTSecret to always generate if file is empty (use true)

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

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

* op-interop-filter: Require JWT when admin RPC is enabled

Add validation in Config.Check() to ensure a JWT secret path is
configured when the admin RPC is enabled. This prevents exposing
admin functionality without proper authentication.

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

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

* op-interop-filter: Remove gitignore

---------

Co-authored-by: opsuperchain <opsuperchain@proton.me>
Co-authored-by: opsuperchain <opsuperchain@slop.bot>
Co-authored-by: Claude <noreply@anthropic.com>
* op-deployer: support op-contracts/v5.0.0-rc.2 upgrade (#18154)

* superchain-registry: update validation import to include op-contracts/v5.0.0-rc.2

* op-deployer: support op-contracts/v5.0.0-rc.2 upgrade

* fix(op-deployer): adjust block for v5.0.0

* fix(op-validator): correct semver for v5.0.0

---------

Co-authored-by: Sam Stokes <35908605+bitwiseguy@users.noreply.github.com>
* feat: add cgt to opcmv2

* feat: add cgt to opcmv2

* fix: change semver

* feat: add cgt to opcmv2

* feat: add cgt to opcmv2

* fix: change semver

* refactor: change disputeGameConfigs order in _loadFullConfig

* fix: comment slash rules

* feat: add opcmv2-cgt matrix in CI

* fix: enable cgt overrides on OPCMv2 (#724)

* fix: check CGT is not enabled before enabling it

* fix: enable CGT overrides

* fix: add extra instruction overrides for useCustomGasToken on OPCMv2 (#725)

* chore: link TODO to issue (#727)

* fix: opcm2 revert upgrade cgt (#728)

* fix: add check enabled CGT during upgrades

* test: set CGT false by default during forked tests

* chore: expand comment on OPCMv2 regarding CGT

* chore: pre-pr ready

* refactor: remove unnecessary check for CGT feature (#735)

* fix: cgt upgrade in opcm v2 and semver (#738)

* fix: Full checkout for FFI build (#18527)

* chore(op-acceptance-tests): delete very old logs (#18529)

* chore(op-acceptance-tests): op-acceptor v3.8.0 (#18530)

* jovian: remove feature toggles (#17978)

* jovian: remove feature toggles

scope is now fixed

* Updated op-geth to v1.101604.0-synctest.0.0.20251120150812-e50f80a16afc

* lint

* just update-op-geth f48f382

* Use Jovian in test error message

* just update-op-geth ba6bdcfef42341fe2b5ce124c31ff2d6b264e9e4

* chore(ai-eng): add ReinitializableBase test to exclusion list (#18531)

* feat: have OPCM upgrade allowances be upgrade specific (#18462)

* feat: have OPCM upgrade allowances be upgrade specific

Updates the OPCMv2 check for allowed extra instructions to be
specific to releases. When release versions are bumped, the
allowances become automatically invalid and would reveal
anywhere in the codebase where the allowance is being used.

* fix: semver lock

* fix: emit instruction key in error

* fix: better semantics

* docs: proper OPCM versioning policy

* fix: final version tweaks

* fix(op-acceptance-test): flake-shake; empty slack notifications. (#18542)

* feat: add cgt to opcmv2

* feat: add cgt to opcmv2

* fix: change semver

* feat: add cgt to opcmv2

* feat: add cgt to opcmv2

* fix: change semver

* refactor: change disputeGameConfigs order in _loadFullConfig

* fix: enable cgt overrides on OPCMv2 (#724)

* fix: check CGT is not enabled before enabling it

* fix: enable CGT overrides

* fix: opcm2 revert upgrade cgt (#728)

* fix: add check enabled CGT during upgrades

* test: set CGT false by default during forked tests

* chore: expand comment on OPCMv2 regarding CGT

* fix: cgt upgrade in opcm v2 and semver (#738)

* fix: merge conflicts

* fix: pre-pr

* fix: add missing isMatchingInstruction for cgt in false

* refactor: opcm2 extra instruction keymatch (#747)

* refactor: add helper function to match instruction by key only

* chore: pre-pr ready

* test: refactor key matching test

* test: add test suite for IsMatchingKey helper function

* chore: pre-pr ready

* fix: opcmv2 semver

---------

Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com>
Co-authored-by: Ján Jakub Naništa <jan.jakub.nanista@gmail.com>
Co-authored-by: Stefano Charissis <stefano@oplabs.co>
Co-authored-by: George Knee <georgeknee@googlemail.com>
Co-authored-by: Ariel Diaz <65925295+aliersh@users.noreply.github.com>
Co-authored-by: smartcontracts <14298799+smartcontracts@users.noreply.github.com>
* all: Remove cannon-kona dgv2 feature flags

* review comments

* move dg impls to stdvalidator impls

* fix typo

* remove dead assignment

* update opcmv2 semver
feat: add is_static to PrecompileInput
…aled payload (op-rs/kona#3172)

Adds unit tests when attributes builder returns critical / reset /
temporary error while building unsealed payload

Part of op-rs/kona#3070
…ps (#18601)

* feat(ai-contracts-test): add TOML-based no-changes tracking system

- add no-need-changes.toml file for tracking tests with comprehensive coverage
- modify ranker to detect stale entries by comparing contract git hashes
- output stale_toml_entries array in ranking JSON
- inject formatted stale entry list into rendered prompt via placeholder
- remove ReinitializableBase.t.sol file from the exclusion file

* fix(ai-contracts-test): improve Devin client session handling

- add retry loop with exponential backoff for session creation
- track blocked state duration and exit after 5-minute timeout
- parse nested structured_output for no-changes detection
- change status value from finished_no_changes to no_changes_needed

* refactor(ai-contracts-test): simplify Slack notification logic

- replace prepare_notification.sh with build_notification.sh
- add notification for TOML tracking PRs when no changes needed
- create build-slack-notification just command wrapping the script
- update CircleCI to call new just command

* chore(ai-contracts-test): update configuration and documentation

- bump VERSION to 1.4.0 for TOML tracking feature
- remove ReinitializableBase.t.sol from exclusion list
- update runbook with TOML tracking system documentation
- document stale entry detection and automatic reintegration

* fix(ai-contracts-test): detect no-changes status from structured output

- check structured_output for changes_needed field when Devin blocks
- add PR URL logging for both "finished" and "no_changes_needed" statuses
- wait up to 5 minutes for structured_output to populate after blocked state
- prioritize structured_output check before falling back to PR-only detection

* chore(ai-contracts-test): add tests to no-changes tracking

- add ReinitializableBase.t.sol entry to no-need-changes.toml
- add SafeSend.t.sol entry to no-need-changes.toml
…#18540)

* Add op-rbuilder submodule

* Add rollup-boost submodule

* Move kona => kona-proofs

* Add kona submodule

* Update CI to build rust binaries ahead of acceptance test time
* op-e2e: Enable jovian for proofs precompile tests

* op-e2e: Also enable osaka on L1
theochap and others added 30 commits January 23, 2026 12:05
* feat: opcm2 interop migrate (#796)

* feat: support interop migration in OPCMv2

* fix: merge conflicts

* fix: proper interface usage

* feat: update VerifyOPCM for migrator

* chore: lint

* fix: pr tweaks

* fix: update go side

* fix: simplify game data decoding logic

* test: add test for invalid starting game type

* fix: pr review

* feat: add interop migration support for op-deployer

* feat: add opcm v2 input for interop migration

* feat: refactor interop migration to use ABI encoding and semver detection

Replace JSON marshaling with proper ABI encoding using w3 library for migrate inputs.
Change OPCM version detection from isDevFeatureEnabled to semantic version comparison.
Restructure MigrateInputV1 to use nested GameParameters and Proposal structs.
Update DisputeGameConfig.GameArgs from Hash to bytes for correct ABI encoding.
Add isVersionAtLeast helper for version comparison (OPCM v2 starts at 7.0.0).
Update tests and contracts to use version() method instead of feature flags.

* docs: add description comments to migrate.go

* feat: add opcmv2 migrate support to WithSuperRoots

* fix: game parameters uint64 types

* refactor: move IsVersionAtLeast helper to utils and add tests

* fix: uint64 to big int conversion in EncodedMigrateInputV1

* test: interop migration v2

* test: interop migration v2 (not working)

* test: updates migration test to migrate to OptimismPortalInterop

* fix: test comments

* test: add migrate input v1 encoding test

* test: add interop migration v1 test

* test: merge TestInteropMigration v1 and v2 tests

---------

Co-authored-by: Flux <175354924+0xiamflux@users.noreply.github.com>

* refactor: separate migrate from migrate-v2 cli command

---------

Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>

* test: opcm2 migrate cli test (#798)

* feat: add migrate cli command tests

* poc: e2e cli migrate tests

* fix: replace stdout with app writer

* refactor: replace default value for StartingRespectedGameTypeFlag

* fix: migrate cli v1 and v2 e2e tests

---------

Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>

* fix: interop migration fixes

* fix: remove address 0 condition to use opcmv2 & refactor useOPCMV2 internal variable in InteropMigration script

* test: add interop migration run revert cases

* fix: restore migrate cli flag order

* fix: migrateInput V2 json field

* chore: opcm2 pr (#799)

* chore: remove unused imports

* chore: fix tests naming

* fix: add uint32 input range validation in migrate v2

* fix: opcm2 misc (#802)

* test: fix struct property names

* fix: use correct exported function name

* chore: removes unused import

* fix: opcm2 review comments (#808)

* chore: remove unused flags

* chore: close rpc client in migrate

* chore: add sanity check when encoding migrate input

* refactor: reutilizes isVersionAtLeast to check if using OPCM v2

* refactor: unify migrate v1 and v2 flows in the same CLI

* refactor: check for common required flags, reduce repeated code between migrate v1 and v2 paths

* chore: rename Migrate exclusive vars to indicate they are supposed to be used during migration only

* chore: remove unused OPChainProxyAdminFlag flag

* chore: close underlying client in migrate path

* chore: add overflow uint check

* chore: rename variable deployer to deployerAddr

* chore: add overflow check for starting respected game type in migrate flow

* fix: encode gameArgs as abi encoded bytes32

* chore: rename starting Respected game type related vars on migrate flow

* chore: remove repeated required flags tests

* fix: migrate opd test (#816)

---------

Co-authored-by: Kelvin Fichter <kelvinfichter@gmail.com>
Co-authored-by: niha <205694301+0xniha@users.noreply.github.com>
Co-authored-by: 0xOneTony <112496816+0xOneTony@users.noreply.github.com>
Co-authored-by: OneTony <onetony@defi.sucks>
* Merge pull request #18662 from ethereum-optimism/feat/op-deployer/validator-upgrade-v600

feat(op-deployer): op-validator and upgrade to v600

* feat(op-deployer): Update for op-contracts/v6.0.0-rc.2 (#18809)

* feat(op-deployer): Update for op-contracts/v6.0.0-rc.2

* fix registry hash

* feat(op-deployer): tests

---------

Co-authored-by: Maurelian <john@oplabs.co>
* chore(kona): update vergen to 9.1.0

* Update rollup-boost and remove wrapper

* temp update to use 1.10.2 rollup boost

* point to crates.io version

* remove unnecessary comment

---------

Co-authored-by: Haardik H <haardik.haardik@coinbase.com>
* feat(op-deployer): add forge flag to bootstrap + apply

* feat(op-deployer): add artifact cleanup

* feat(op-deployer): lint

* feat(op-deployer): lint

* feat(op-deployer): comments

* fix(op-deployer): comments

* fix(op-deployer): lint
remove 'scheduled-kurtosis-acceptance-tests' job.
feat(op-alloy): upstream `op-alloy` to the monorepo
…da281182ee'

git-subtree-dir: alloy-op-hardforks
git-subtree-mainline: b7033fd
git-subtree-split: b0f7df2
…710b'

git-subtree-dir: alloy-op-evm
git-subtree-mainline: b7033fd
git-subtree-split: 7447d30
feat(op-hardforks): migrate `alloy-op-hardforks` to the monorepo
…ict instead of UInt64 for safety (#18921)

* op-node: Use Uint64Strict.

* op-node: Use big.Int to calculate yParity/v to support large chain IDs.

* Update tests to compare big.Int logically
* fix: better retries and caching for superchain registry

Introduces better timeout, retry, and caching for the superchain
registry code for grabbing historical OPCM versions. Avoids CI
flakes.

* fix: increase cache time to 30 mins

* test: add test for registry.go

* fix: lint issue

* fix: add debug logs for cache errors
* op-proposer: Support fetching proposals via supernode rpc

* replace L1BlockRef with BlockID

* add defensive check for missing proposal source
* feat(op-deployer): op-validator integration

* fix(op-deployer): default flag value
feat(alloy-op-evm): port `alloy-op-evm` to the monorepo
git-subtree-dir: op-reth
git-subtree-mainline: b7033fd
git-subtree-split: 910fed9
feat(op-reth): migrate `op-reth` to the monorepo
* feat(op-interop-filter): implement core filtering logic

Implements the core filtering logic for op-interop-filter, a lightweight
interop validation service designed to run alongside sequencers.

Key components:
- ChainIngester interface with LogsDBChainIngester (RPC + logsdb) and
  MockChainIngester (in-memory for tests)
- LockstepCrossValidator for cross-chain message validation with
  lockstep timestamp advancement across all chains
- Backend coordinator managing chain ingesters and failsafe state
- RPC frontends: supervisor_checkAccessList (public) and admin API (JWT)

Validation includes:
- Message timing (init < execution, expiry window)
- Cross-unsafe timestamp tracking
- Checksum verification via logsdb

Test coverage for validation logic, failsafe behavior, and cross-validator.

Future work (see TODOs):
- Reorg handling in chain ingester
- Specific invalid message flagging
- Kurtosis/devstack integration tests

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

* refactor(op-interop-filter): address all PR #18604 review feedback

This commit addresses all review comments from PR #18604, incorporating
feedback from manual review and automated agent analysis.

## PR Review Comments Addressed

### Validation Logic Consolidation
- Inline validation into cross-validator, delete validation.go
  #18604 (comment)
- Use uint64 instead of safemath for timestamp checks
  #18604 (comment)
- Add panic on overflow (later converted to error return for safety)
  #18604 (comment)
- Add min ingested timestamp validation
  #18604 (comment)

### Ingestion Loop Improvements
- Use ticker for poll loop instead of time.Sleep
  #18604 (comment)
- Check reorg in all cases (validate parent hash on every block)
  #18604 (comment)
- Clarify app context cancel handling
  #18604 (comment)

### Service/Config Integration
- Get head info by label instead of index
  #18604 (comment)
- Pull blocktime from rollup config
  #18604 (comment)
- Add --networks and --rollup-configs flags for chain configuration
  #18604 (comment)

### Backend/Interface Cleanup
- Add supportedSafetyLevel helper function
  #18604 (comment)
- Rename checkExecutingMessage to more descriptive name
  #18604 (comment)

### Test Organization
- Rename chain_ingester_test.go to logsdb_chain_ingester_test.go
  #18604 (comment)
- Replace binary search test with rollup config test
  #18604 (comment)

## Agent Review Findings (10 agents)

### Critical Fixes
- Replace 3 panics with error returns to prevent DoS via crafted timestamps
  Files: lockstep_cross_validator.go:137-143, 193-196
- Delete dead code: findBlockByTimestamp() function (50 lines)
  File: logsdb_chain_ingester.go:39-88
- Add failsafe triggers for ErrDataCorruption and ErrInvalidExecutingMessage
  File: logsdb_chain_ingester.go (ingestBlock error handling)

### Code Quality
- Standardize mock naming: MockChainIngester -> mockChainIngester
  File: mock_test.go
- Add constants: progressLogInterval, dataDirPermissions
  File: logsdb_chain_ingester.go
- Remove unreachable code in getMinIngestedTimestamp
  File: lockstep_cross_validator.go:324
- Add new error types: ErrInvalidLog sentinel, ErrorInvalidExecutingMessage reason
  File: errors.go

### Test Coverage Expansion
- Add 8 tests for initIngestion scenarios (fresh start, resume, errors)
- Add error injection tests for ErrDataCorruption, ErrInvalidLog
- Add cross-validator test coverage (450+ lines)

## Files Changed
- backend.go: Add supportedSafetyLevel helper
- backend_test.go: Update mock naming
- config.go: Add rollup config loading from flags
- errors.go: Add ErrInvalidLog, ErrorInvalidExecutingMessage
- interfaces.go: Rename checkExecutingMessage
- lockstep_cross_validator.go: Inline validation, fix panics
- lockstep_cross_validator_test.go: New comprehensive tests
- logsdb_chain_ingester.go: Ticker loop, constants, failsafe handling
- logsdb_chain_ingester_test.go: New tests (renamed from chain_ingester_test.go)
- mock_test.go: New consolidated mocks (renamed from mock_ingester_test.go)
- service.go: Rollup config integration
- validation.go: Deleted (inlined into cross-validator)
- flags/flags.go: Add --networks, --rollup-configs flags

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

* fix(op-interop-filter): fix restart edge case with consistent startTimestamp

On restart, the cross-validator was failing with "missing data, earliest
search checkpoint" error because:
1. startTimestamp was recalculated as new `now` on each startup
2. findAndSetEarliestBlock found the sealed anchor block instead of the
   first fully ingested block
3. The anchor block can't be queried via OpenBlock (no predecessor data)

Changes:
- Calculate startTimestamp once at startup, pass to all components
- Chain ingesters calculate backfillTimestamp internally with underflow
  protection
- Cross-validator waits for chains to be Ready() before initializing
- findAndSetEarliestBlock: Use OpenBlock instead of FindSealedBlock to
  find first queryable block
- sealParentBlock: Don't set earliestBlockNum (anchor is not queryable)
- ingestBlock: Set earliestBlockNum on first successful ingestion

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

* test(op-interop-filter): consolidate tests per PR review feedback

Merge related tests into single tests with sequential asserts:
- Backend Ready tests (2 → 1)
- Backend CheckAccessList tests (5 → 1)
- CrossUnsafe boundary tests (2 → 1)
- Ingester query tests (2 → 1)

Delete redundant tests:
- ChecksumMatch, ChecksumNotFound (fake checksums not useful)
- TimeoutZero (keep TimeoutExceedsExpiry)
- DirectUsage (covered by Integration_RealLogsDB)

Net -185 lines while maintaining coverage.

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

* refactor(op-interop-filter): address Jan 20 PR review feedback

- Change log levels from Info to Debug for metrics startup messages
- Remove unnecessary header/timestamp lookup at startup
- Use clock.SystemClock.Now() instead of time.Now() for startTimestamp
- Rename earliestBlockNum → earliestIngestedBlock for clarity
- Remove startingBlock/startingBlockSet fields, compute on demand via calculateStartingBlock()
- Add config validation to reject backfillDuration exceeding current timestamp
- Remove unused Timestamp fields from IngesterError and ValidatorError
- Inline dataDirPermissions constant

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

* fix(op-interop-filter): use earliestIngestedBlockSet flag in GetExecMsgsAtTimestamp

Fix bug where `earliest == 0` was used to check if data was uninitialized,
but block 0 is a valid genesis block for most OP chains (Base, Zora, etc.).
Now correctly uses the earliestIngestedBlockSet atomic bool flag.

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

* refactor(op-interop-filter): extract timing validation into pure function

- Extract validateMessageTiming() to consolidate temporal constraint checks
- Remove duplicate overflow check for expiresAt calculation
- Add genesis block underflow guard in initIngestion
- Reduce log verbosity for message expiry window config
- Add TestValidateMessageTiming with comprehensive edge cases
- Add TestCrossValidator_InitiatingMessageNotFound for RPC coverage

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

---------

Co-authored-by: opsuperchain <opsuperchain@slop.bot>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…18733)

* feat: update withdrawal command wip

* test: add E2E test for withdrawal proof from game extraData

Add TestSuperRootWithdrawalFromGameExtraData that proves withdrawals
by reading super root proof directly from SuperFaultDisputeGame.extraData()
instead of requiring supervisor-rpc.

Also adds DSL support via ProveFromGameExtraData() method.

* fix: reorder withdrawal tests to avoid l1Origin stuck issue

AdvanceTime() in shared orchestrator tests leaves L2 sequencer's
l1Origin stuck, causing subsequent tests to fail with "L2 Deposit
never found". Fix by:
- Moving TestProveFromGameExtraData first (Go runs tests in file order)
- Simplifying it to only test prove step (no AdvanceTime needed)
- Full withdrawal flow still tested by TestSuperRootWithdrawal

* refactor: remove supervisor-based withdrawal proof flow

--dispute-game is now required for super root withdrawals.

* refactor: unify proveWithdrawalTransaction to single 4-param signature

Replace two proveWithdrawalTransaction overloads (6-param for super roots,
4-param for output roots) with a single unified 4-param function.

When superRootsActive=true, the contract now calls game.rootClaimByChainId(chainId)
internally instead of requiring callers to pass SuperRootProof.

Changes:
- Remove 6-param proveWithdrawalTransaction and related errors
- Update _proveWithdrawalTransaction to use rootClaimByChainId
- Remove OptimismPortal_WrongProofMethod, InvalidSuperRootProof,
  InvalidOutputRootIndex, InvalidOutputRootChainId errors
- Update tests to use unified signature with mocked rootClaimByChainId

BREAKING: Callers using 6-param signature must update to 4-param.

* chore: remove dead code from withdrawal proof refactor

Remove unused code after unifying proveWithdrawalTransaction:
- ProveWithdrawalParametersSuperRoots function and struct (no callers)
- SupervisorClient interface in withdrawals/utils.go (no callers)
- supervisorClient field from StandardBridge (unused after refactor)
- Unused imports: hexutil, eth, rollup, depset

* chore: fix ci checks for interface, linter, and snapshots

* chore: fix go lint warnings

Remove goimports formatting issues and delete unused functions.

* chore: remove redundant ProveFromGameExtraData test and methods

After removing supervisor-based withdrawal proof flow, TestProveFromGameExtraData
became redundant as Prove() and ProveFromGameExtraData() now do the same thing.
TestSuperRootWithdrawal already covers the full prove + finalize flow.

* docs: remove outdated super roots section from withdrawal README

The --dispute-game and --rollup.config flags no longer exist.
The prove command now works uniformly for all proof types.

* chore: remove unused DecodeSuperRootProof and related types

DecodeSuperRootProof has zero callers. Remove it along with
SuperRootProofOutputRoot and SuperRootProof types, and the
encoding/binary import they required.
* Interop Activity

* Add Verified Database and Function Implementations

* Tests ; Cleanup ; VerifiedAt integration

* Use BBolt DB

* PR updates

* lint and logic fix

* ethereum.NotFound when not yet verified

* fix tests

* Expand test coverage

* only create interop activity if enabled

* downgrade log to Debug

* update go.mod

* PR Comments

* Fix Tests
* Enable UInt64 lint check and fix remaining violations.

* Fix op-chain-ops fuzz tests

* Fix safemath_test

* Return error instead of panicing if array length is not a uint64

* Review feedback

* Fix newly introduced violations.
)

* ci: migrate docker builds to GitHub Actions (except op-deployer)

Migrate Docker image builds from CircleCI to GitHub Actions for all images except `op-deployer`.

## Changes

**GitHub Actions:**
- Build all images (except op-deployer) in GHA with multi-arch support (amd64/arm64)
- Add scheduled daily builds at 2 AM UTC
- Add cross-platform verification job
- Push to `images` registry instead of `oss`
- Rename jobs: `local` → `build`, `fork` → `build-fork`

**CircleCI:**
- Keep `op-deployer` builds in CircleCI (main, release, scheduled workflows)
- Remove all other images from docker-build matrices

## Why op-deployer stays in CircleCI

`op-deployer` embeds compiled Solidity contract artifacts via `go:embed`. The CircleCI pipeline has an existing `contracts-bedrock-build` job that compiles these artifacts and passes them via workspace attachment. Replicating this in GHA requires changes to the Dockerfile build process that need more work.

* ci: add merge_group trigger support to branches workflow

Add merge_group event to triggers and build job condition so the
workflow runs properly when PRs go through the merge queue.
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.