chore: opcm2 read sup deployment#767
chore: opcm2 read sup deployment#7670xOneTony merged 19 commits intosc-feat/opcm2-read-sup-deploymentfrom
Conversation
…optimism#18456) * 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>
…8154) (ethereum-optimism#18580) * op-deployer: support op-contracts/v5.0.0-rc.2 upgrade (ethereum-optimism#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 (ethereum-optimism#18527) * chore(op-acceptance-tests): delete very old logs (ethereum-optimism#18529) * chore(op-acceptance-tests): op-acceptor v3.8.0 (ethereum-optimism#18530) * jovian: remove feature toggles (ethereum-optimism#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 (ethereum-optimism#18531) * feat: have OPCM upgrade allowances be upgrade specific (ethereum-optimism#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. (ethereum-optimism#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
…ps (ethereum-optimism#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
…ethereum-optimism#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
…18606) * op-e2e: Enable jovian for proofs precompile tests * op-e2e: Also enable osaka on L1
…8571) * wiring for l2.follow.source * Follow Safe without handling external safe > local unsafe * safe follow * safe follow consider unsafe gap EL Sync * follow finalized * Comments * cleanup * drop unused interface methods * sanity check external finalized * Adjust follow source log level * op-devstack: Follow Source Support * op-acceptance-tests: Follow Source * op-devstack: Follow Source Support * simplify labeling * l1 reorg protection: reset * add reorg tc * typo * follow source: check unsafe * convention * Add unsafe only reorg test * devstack/acceptance test : rename FollowSource to FollowL2 * follow upstream source enabled when derivation disabled, reorg detection * fix unsafe only reorg sync test comments * rm unused interface method * dsl * devstack support for ext sync test + follow l2 * op-acceptance-tests: Follow L2 using Ext + SyncTester * use blockref * fix log msg err * Fix composite interface naming * op-node: Follow Source: EL / CL support * devstack: Allow EL or CL to be follow source * Inject CurrentL1 * logs for injecting CurrentL1 * refactor to less rpc calls * acceptance-tests: Check CurrentL1 is advancing * linter * fix error args * sanity check external values using L1 * op-node: Follow Source CL and drop unsafeOnly * op-acceptance-tests: drop EL follow source / Unsafe Only tests * op-devstack|acceptance-tests: Follow Source CL * op-node: Follow Client: only allow CL source * drop unused args * rm redundant unsafe head reorg logic * rm unused dsl * Do not use functions
* chore: Add SafeRename ioutil utility * fix: Lint
…8583) * feat: have OPCMv2 check upgrade ordering version This PR introduces a check in OPCM that validates that the version difference in the previous OPCM and the current OPCM is acceptable. This PR explicitly disallows skipping OPCM versions which was previously an implicit requirement. * fix: properly set version testing flag * fix: semver lock * fix: move valid instructions allowance * fix: semver lock * fix: better mechanism for checking permitted upgrades * fix: properly run permitted upgrade sequence tests
* chore: bump opcmv2 to v7 * fix: correct version in upgrade sequence * fix: broken tests
* verify opcm v2 * fixes * fixes * some fixes * some fixes * some fixes * fix verifyOPCM v1 tests * fix verifyOPCM v1 tests * fix ci checks * better approach to tests, less diff * improve test coverage * fix typo * fix semver * Update packages/contracts-bedrock/scripts/deploy/VerifyOPCM.s.sol Co-authored-by: 0xOneTony <112496816+0xOneTony@users.noreply.github.com> --------- Co-authored-by: 0xOneTony <112496816+0xOneTony@users.noreply.github.com>
…8637) * ci: Fix contracts test-upgrade test junit output * fix test-upgrade xml output
…nc/opcm2-read-sup-deployment
There was a problem hiding this comment.
This PR is being reviewed by Cursor Bugbot
Details
Your team is on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle for each member of your team.
To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.
| condition: always | ||
| steps: | ||
| - store_test_results: | ||
| path: packages/contracts-bedrock/results/results.xml |
There was a problem hiding this comment.
Bug: CircleCI test results won't upload on test failure
The when: condition: always pattern does not behave the same as when: always at the step level. The string "always" is truthy so the condition evaluates to true, but this doesn't override CircleCI's default behavior of skipping steps after a failure. When tests fail, store_test_results won't execute, defeating the purpose of storing test results for failed runs. CircleCI documentation explicitly recommends using when: always at the step level for store_test_results to ensure metadata is available for failed jobs. The correct pattern is to use when: always directly on the store_test_results step.
Additional Locations (2)
| @@ -20,24 +23,56 @@ func NewDefaultSingleChainTwoVerifiersSystemIDs(l1ID, l2ID eth.ChainID) DefaultS | |||
| } | |||
| } | |||
There was a problem hiding this comment.
Bug: TestSequencer field shadows embedded field but not initialized
The TestSequencer field in DefaultSingleChainTwoVerifiersSystemIDs shadows the identically-named field from the embedded DefaultMinimalSystemIDs struct. However, NewDefaultSingleChainTwoVerifiersSystemIDs doesn't initialize this field, leaving it as an empty string. When DefaultSingleChainTwoVerifiersFollowL2System calls WithTestSequencer(ids.TestSequencer, ...), it passes an empty ID. The pattern in DefaultSingleChainMultiNodeWithTestSeqSystemIDs shows the correct approach - it also shadows but explicitly initializes to "dev". The fix is to either remove the shadowing field or initialize it in the constructor.
Note
Defaults the stack to OPCM v2 (V2 dispute games/custom gas token handling), adds follow-source syncing across op-node and infra, introduces the op-interop-filter service, and modernizes CI/build (Rust binaries, JUnit, kona-proofs), alongside broad contract, test, and tooling updates.
devFeatureBitmap,isPermittedUpgradeSequence) and rename utils accessors.useCustomGasToken(only at initial deploy); version bumps across OPCM/validator; standard validator now validates V2 viagameArgsand includes fault/permissioned impls.VerifyOPCM, deploy flows) and storage/ABI snapshots accordingly.--l2.unsafe-only.op-interop-filter(CLI, RPC, metrics) with Docker target.store_test_results; speed up submodules (--single-branch); widespreadmisecache.kona-proofsfor versions/paths.superchain-registrydep.Written by Cursor Bugbot for commit eee902c. This will update automatically on new commits. Configure here.