Skip to content
This repository was archived by the owner on Dec 5, 2021. It is now read-only.

[pull] develop from ethereum-optimism:develop#573

Open
pull[bot] wants to merge 10000 commits intoomgnetwork:developfrom
ethereum-optimism:develop
Open

[pull] develop from ethereum-optimism:develop#573
pull[bot] wants to merge 10000 commits intoomgnetwork:developfrom
ethereum-optimism:develop

Conversation

@pull
Copy link

@pull pull bot commented Oct 13, 2021

See Commits and Changes for more details.


Created by pull[bot]

Can you help keep this open source service alive? 💖 Please sponsor : )

teddyknox and others added 30 commits March 11, 2026 23:10
…et constructors (#19452)

* refactor(op-devstack): simplify acceptance testing around direct preset constructors

fix acceptance and kona e2e test harness regressions

fix same-timestamp cycle test and kona shared runtime wrappers

address review feedback and restore devstack test coverage

fix(ci): stabilize rust e2e websocket tests

* refactor(op-devstack): validate preset option support

* fix(ci): reduce rust subprocess log volume
* fix(kona/derive): add over-fill check in BlobSource::load_blobs

After the blob-pointer fill loop completes, add a post-loop check:
if `blob_index < blobs.len()` the provider returned more blobs than
were requested. Return `ResetError::BlobsOverFill` (→
PipelineErrorKind::Reset) rather than silently discarding the extras.

This mirrors op-node's `fillBlobPointers` check at
blob_data_source.go:162-163 which returns
`fmt.Errorf("got too many blobs")` wrapped as `NewResetError`.

Over-fill can occur with buggy blob providers (e.g. third-party RPC
services that ignore the requested hash list) or in rare L1 reorg
scenarios where the blob set shifts between hash collection and fetch.

Changes:
- Add `ResetError::BlobsOverFill(usize, usize)` variant to
  `pipeline.rs` (symmetric with the existing `BlobsUnderFill` variant).
- Import `ResetError` in `blobs.rs` and add the post-loop guard.
- Add `should_return_extra_blob` flag to `TestBlobProvider` for testing.
- Add `test_load_blobs_overfill_triggers_reset` regression test.

Fixes #19363

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

* chore: use function names instead of line numbers in Go references

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

* fix(kona/derive): use named fields for BlobsOverFill variant

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

* refactor(kona/derive): rename blob_index to filled_blobs in BlobSource (#19480)

Rename the `blob_index` variable in `load_blobs` to `filled_blobs`
for clarity, as the variable tracks the number of blob placeholders
that were filled rather than serving as a traditional index.

Addresses review feedback from optimism#19364.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>

* chore: remove references to Go implementation in comments

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

* fix(kona/derive): remove useless BlobProviderError conversion in map_err

The `From<BlobProviderError> for PipelineErrorKind` impl already exists,
so `?` handles the conversion automatically. The explicit `map_err` was
redundant.

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

---------

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* chore(linter): migrate Makefile to justfile

Migrate linter build targets from Make to Just. The Makefile now
delegates to just with a deprecation warning, preserving backwards
compatibility for existing make invocations.

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

* fix: pass make variables as env vars in deprecated.mk shim

The deprecated.mk shim forwards all make variable assignments to just
via JUSTFLAGS. This breaks when inherited variables (like GO_TEST_FLAGS
from parent make processes) are not defined in the target justfile,
since just rejects unknown variable overrides.

Fix by passing variables as environment variables instead of just CLI
args. Since all shared justfile variables (GITCOMMIT, GITDATE, VERSION,
GOOS, GOARCH, etc.) use env() for defaults, they still pick up the
forwarded values. Unknown variables are silently ignored.

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

* fix: correct .PHONY declaration in deprecated Make shim

The .PHONY declaration was formatted as a recipe (indented under .PHONY:)
rather than as a prerequisite list (.PHONY: targets). This caused Make to
treat targets like `cannon` and `op-program` as file/directory targets,
and since directories with those names exist in the repo, Make would skip
them with "is up to date" instead of running the just delegation.

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

* fix(linter): restore file-dependency tracking in justfile build target

The original Makefile only rebuilt when files under analyzers/ or
.custom-gcl.yml changed. Replicate this with a timestamp check in the
just build recipe.

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

* refactor(linter): extract uptodate check into reusable justfiles/uptodate.sh

Move the file-dependency freshness check from an inline bash script in
linter/justfile into a standalone helper at justfiles/uptodate.sh so other
justfiles can reuse the same pattern.

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

* fix(justfiles): rebuild when source paths don't exist in uptodate.sh

If a source path is neither a file nor a directory, force a rebuild
instead of silently skipping it.

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

* chore(justfiles): warn when source path doesn't exist in uptodate.sh

Print a warning to stderr before forcing a rebuild when a source path
doesn't exist — this is likely an error and should be visible.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Convert 9 hardcoded tests to fuzz tests for broader coverage:
- mint: fuzz recipient address and amount
- mint revert: fuzz non-owner caller address
- burn/burnFrom: fuzz mint and burn amounts
- transfer/transferFrom: fuzz mint and transfer amounts
- approve: fuzz approval amount
- increaseAllowance/decreaseAllowance: fuzz initial and delta amounts

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

* chore: remove accidental PR.md

Co-authored-by: karlfloersch <706123+karlfloersch@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: karlfloersch <706123+karlfloersch@users.noreply.github.com>
* chore: add fix-rust-fmt Claude Code skill

Adds a skill that fixes Rust formatting CI failures by running
`just fmt-fix` with the correct nightly toolchain via mise.

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

* Apply suggestion from @ajsutton

* Update .claude/skills/fix-rust-fmt/SKILL.md

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

* docs: link /fix-rust-fmt skill from kona CLAUDE.md

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

* docs: reference fix-rust-fmt skill in rust-dev.md

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Sebastian Stammler <seb@oplabs.co>
Bump all reth dependencies from v1.11.2 to v1.11.3 in the rust workspace,
including op-reth crate versions and the Cargo.lock.
* chore(cannon): migrate Makefile to justfile

Migrate cannon build targets from Make to Just. The Makefile now
delegates to just with a deprecation warning, preserving backwards
compatibility for existing make invocations.

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

* fix(cannon): add missing lint target and include justfiles in Docker context

- Add `lint` to DEPRECATED_TARGETS and justfile (CI compatibility stub)
- Copy justfiles/ into kona cannon-repro.dockerfile for deprecated.mk shim
- Install `just` binary in cannon Docker build for the Make shim

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

* fix(cannon): remove [default] attribute for just <1.38 compat

The Alpine 3.21 just package is v1.37.0 which doesn't support the
[default] attribute. Move cannon recipe to first position instead.

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

* fix(cannon): include justfiles/ in op-program Docker build context

The cannon Makefile deprecated shim requires justfiles/deprecated.mk,
which is resolved relative to cannon/ inside the Docker container. The
op-program Dockerfile.repro.dockerignore was excluding justfiles/ from
the build context, causing the cannon make shim to fail.

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

* docs(cannon): update README to use just instead of make

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

* fix(cannon): call just directly in cannon-repro.dockerfile

Instead of going through the deprecated Make shim, invoke just cannon
directly in the Docker build.

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

* fix(cannon): update Dockerfile.diff to use just diff-cannon directly

The diff-%-cannon Make pattern target was converted to a parameterized
just recipe (just diff-cannon VM). Update the Dockerfile to call just
directly instead of through make, which would fail since the deprecated
shim doesn't support pattern targets.

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

* fix(cannon): add diff-%-cannon pattern target to deprecated Makefile

Preserves backwards compatibility for make diff-<vm>-cannon invocations
(used by Dockerfile.diff and potentially other scripts) by translating
the pattern to just diff-cannon <vm>.

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

* fix: install just via system package manager in Dockerfiles

- cannon/Dockerfile.diff: use `apk add just` instead of curl install script,
  drop unnecessary `make` dependency
- cannon-repro.dockerfile: switch cannon-build stage from ubuntu:22.04 to
  golang:1.23.8-alpine3.21, matching the monorepo's Go builder image, so
  just can be installed via `apk add` instead of curl install script

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

* fix(cannon): bump Go to 1.24.10 in cannon-repro.dockerfile

The golang Docker image sets GOTOOLCHAIN=local which prevents automatic
toolchain downloading. Since go.mod requires go 1.24.0, the 1.23.8
image fails to build. Match Dockerfile.diff which already uses 1.24.10.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Returns NotEnoughData instead of NewTemporaryError when a span batch
is encountered before Delta activation. This drains the channel
immediately rather than taking O(N×backoff) cycles.

Fixes #19493.
…19502)

Classifies non-critical errors from DeriveSpanBatch (malformed tx type,
invalid encoding, etc.) as NotEnoughData so the pipeline drops the batch
immediately without backoff. Critical errors (logic errors) still
propagate as-is.

Fixes #19494.
…red after Ecotone (#19501)

Wraps the "beacon endpoint not configured" error with NewCriticalError
so the node stops with a clear fatal error instead of retrying
indefinitely on an unrecoverable operator misconfiguration.

Fixes #19495.
* op-node/derive: drop bad channel decompression as NotEnoughData

Fixes WriteChannel error classification in ChannelInReader.NextBatch:
returns NotEnoughData (immediate continue, no backoff) instead of
NewTemporaryError when channel data fails to decompress.

Also downgrades the log.Error in WriteChannel to log.Warn since this
is bad batcher data, not an infrastructure failure.

Fixes #19492.

* op-node/derive: address review comments
* chore(cannon): migrate Makefile to justfile

Migrate cannon build targets from Make to Just. The Makefile now
delegates to just with a deprecation warning, preserving backwards
compatibility for existing make invocations.

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

* fix(cannon): add missing lint target and include justfiles in Docker context

- Add `lint` to DEPRECATED_TARGETS and justfile (CI compatibility stub)
- Copy justfiles/ into kona cannon-repro.dockerfile for deprecated.mk shim
- Install `just` binary in cannon Docker build for the Make shim

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

* fix(cannon): remove [default] attribute for just <1.38 compat

The Alpine 3.21 just package is v1.37.0 which doesn't support the
[default] attribute. Move cannon recipe to first position instead.

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

* fix(cannon): include justfiles/ in op-program Docker build context

The cannon Makefile deprecated shim requires justfiles/deprecated.mk,
which is resolved relative to cannon/ inside the Docker container. The
op-program Dockerfile.repro.dockerignore was excluding justfiles/ from
the build context, causing the cannon make shim to fail.

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

* docs(cannon): update README to use just instead of make

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

* fix(cannon): call just directly in cannon-repro.dockerfile

Instead of going through the deprecated Make shim, invoke just cannon
directly in the Docker build.

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

* fix(cannon): update Dockerfile.diff to use just diff-cannon directly

The diff-%-cannon Make pattern target was converted to a parameterized
just recipe (just diff-cannon VM). Update the Dockerfile to call just
directly instead of through make, which would fail since the deprecated
shim doesn't support pattern targets.

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

* fix(cannon): add diff-%-cannon pattern target to deprecated Makefile

Preserves backwards compatibility for make diff-<vm>-cannon invocations
(used by Dockerfile.diff and potentially other scripts) by translating
the pattern to just diff-cannon <vm>.

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

* fix: install just via system package manager in Dockerfiles

- cannon/Dockerfile.diff: use `apk add just` instead of curl install script,
  drop unnecessary `make` dependency
- cannon-repro.dockerfile: switch cannon-build stage from ubuntu:22.04 to
  golang:1.23.8-alpine3.21, matching the monorepo's Go builder image, so
  just can be installed via `apk add` instead of curl install script

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

* fix(cannon): bump Go to 1.24.10 in cannon-repro.dockerfile

The golang Docker image sets GOTOOLCHAIN=local which prevents automatic
toolchain downloading. Since go.mod requires go 1.24.0, the 1.23.8
image fails to build. Match Dockerfile.diff which already uses 1.24.10.

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

* chore(op-e2e): migrate Makefile to justfile

Migrate op-e2e build targets from Make to Just. The Makefile now
delegates to just with a deprecation warning, preserving backwards
compatibility for existing make invocations.

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

* docs(op-e2e): update README to use just instead of make

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

* fix(justfiles): pass Make variable overrides as env vars in deprecated shim

The deprecated.mk shim was changed to pass JUSTFLAGS as just CLI
variable overrides (`just VAR=val target`), but just rejects overrides
for variables not declared in the justfile. This broke CI jobs where
Make variable assignments propagate through sub-makes (e.g.
GO_TEST_FLAGS, GUEST_PROGRAM).

Revert to passing them as environment variables via `env`, which is
how the shim originally worked in the cannon migration PR.

Fixes: go-tests-short, sanitize-op-program CI failures

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

* fix(op-e2e): manual shim for gen-binding positional arg

The generic deprecated.mk shim converts make variables to env vars, but
gen-binding CONTRACT: is a positional parameter in just. Write a manual
shim that passes CONTRACT correctly as a positional arg.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* docs(op-e2e): update README to use just instead of make

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

* fix(justfiles): pass Make variable overrides as env vars in deprecated shim

The deprecated.mk shim was changed to pass JUSTFLAGS as just CLI
variable overrides (`just VAR=val target`), but just rejects overrides
for variables not declared in the justfile. This broke CI jobs where
Make variable assignments propagate through sub-makes (e.g.
GO_TEST_FLAGS, GUEST_PROGRAM).

Revert to passing them as environment variables via `env`, which is
how the shim originally worked in the cannon migration PR.

Fixes: go-tests-short, sanitize-op-program CI failures

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

* chore(op-program): migrate Makefile to justfile

Migrate op-program build targets from Make to Just. The Makefile now
delegates to just with a deprecation warning, preserving backwards
compatibility for existing make invocations.

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

* fix(op-program): include justfiles/ in Docker contexts for Make shim

The Makefile shim includes ../justfiles/deprecated.mk which delegates to
just. Docker builds for vmcompat and repro excluded justfiles/ from the
build context, causing "No such file or directory" errors in CI.

- Add !justfiles/ to both .dockerignore files
- Install just in Dockerfile.vmcompat (Dockerfile.repro already has it)

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

* ci: re-trigger cannon-prestate build

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

* fix(op-program): remove unnecessary MIPS variable overrides from repro.justfile

The op-program-client-mips target hardcodes GOOS/GOARCH/GOMIPS64 in its
build commands, so passing GOOS=linux GOARCH=mips GOMIPS=softfloat from
repro.justfile was always redundant. With the Make-to-just migration, the
deprecated.mk shim forwards these as just variables, and just rejects
GOMIPS since it's not defined in the justfile.

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

* docs(op-program): update README to use just instead of make

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

* fix(op-program): use just in Dockerfile.vmcompat, restore TODO

- Update Dockerfile.vmcompat to call just directly for the analyze
  target instead of going through the deprecated make shim.
- Restore TODO(#18334) comment for go1.25 vm-compat support that was
  dropped during migration.

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

* fix(op-program): use just instead of make in repro.justfile

Convert repro.justfile to call just directly instead of going through
make's deprecated shim. GOOS/GOARCH are passed as env vars for cannon
(read by go.just), while VERSION/GITCOMMIT/GITDATE are passed as just
variable overrides. The op-program mips targets hardcode their own
GOOS/GOARCH/GOMIPS so they don't need to be passed.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* docs(op-e2e): update README to use just instead of make

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

* fix(justfiles): pass Make variable overrides as env vars in deprecated shim

The deprecated.mk shim was changed to pass JUSTFLAGS as just CLI
variable overrides (`just VAR=val target`), but just rejects overrides
for variables not declared in the justfile. This broke CI jobs where
Make variable assignments propagate through sub-makes (e.g.
GO_TEST_FLAGS, GUEST_PROGRAM).

Revert to passing them as environment variables via `env`, which is
how the shim originally worked in the cannon migration PR.

Fixes: go-tests-short, sanitize-op-program CI failures

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

* ci: re-trigger cannon-prestate build

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

* chore: migrate root Makefile to justfile

Migrate root build targets from Make to Just. The Makefile now
delegates to just with a deprecation warning, preserving backwards
compatibility for existing make invocations.

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

* docs: update CONTRIBUTING.md to use just instead of make

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

* fix: convert make -C calls to just and restore GOPRIVATE comment

All subdirectories now have justfiles with deprecated Make shims,
so convert remaining make -C calls to cd && just. Also restores
the explanatory comment on mod-tidy's GOPRIVATE usage.

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

* fix: run reproducible-prestate builds in parallel

just doesn't parallelize dependencies like make -j does. Use background
processes with wait to run op-program and kona prestate builds concurrently.

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

* fix: use subshell for cd in _go-tests-ci-internal

The cd into cannon/ was changing the CWD for the rest of the script,
causing gotestsum to run from cannon/ instead of the repo root. The
original Makefile used $(MAKE) -C which spawns a subprocess. Use a
subshell to match that behavior.

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

* fix: use subshells for sequential cd in reproducible-prestate

The bare `cd op-program` on line 180 changed cwd persistently, so the
following `cd rust` tried to resolve `op-program/rust/` which doesn't
exist. Wrap both in subshells to preserve the original working directory.

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

* fix: remove devnet-sdk and kurtosis-devnet from TEST_PKGS

These directories were removed in #19506 but the justfile still
referenced them, causing go-tests-short-ci to fail with
"lstat ./devnet-sdk/: no such file or directory".

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* docs(op-e2e): update README to use just instead of make

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

* fix(justfiles): pass Make variable overrides as env vars in deprecated shim

The deprecated.mk shim was changed to pass JUSTFLAGS as just CLI
variable overrides (`just VAR=val target`), but just rejects overrides
for variables not declared in the justfile. This broke CI jobs where
Make variable assignments propagate through sub-makes (e.g.
GO_TEST_FLAGS, GUEST_PROGRAM).

Revert to passing them as environment variables via `env`, which is
how the shim originally worked in the cannon migration PR.

Fixes: go-tests-short, sanitize-op-program CI failures

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

* ci: re-trigger cannon-prestate build

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

* chore: migrate root Makefile to justfile

Migrate root build targets from Make to Just. The Makefile now
delegates to just with a deprecation warning, preserving backwards
compatibility for existing make invocations.

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

* docs: update CONTRIBUTING.md to use just instead of make

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

* fix: convert make -C calls to just and restore GOPRIVATE comment

All subdirectories now have justfiles with deprecated Make shims,
so convert remaining make -C calls to cd && just. Also restores
the explanatory comment on mod-tidy's GOPRIVATE usage.

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

* fix: run reproducible-prestate builds in parallel

just doesn't parallelize dependencies like make -j does. Use background
processes with wait to run op-program and kona prestate builds concurrently.

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

* fix: use subshell for cd in _go-tests-ci-internal

The cd into cannon/ was changing the CWD for the rest of the script,
causing gotestsum to run from cannon/ instead of the repo root. The
original Makefile used $(MAKE) -C which spawns a subprocess. Use a
subshell to match that behavior.

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

* fix: use subshells for sequential cd in reproducible-prestate

The bare `cd op-program` on line 180 changed cwd persistently, so the
following `cd rust` tried to resolve `op-program/rust/` which doesn't
exist. Wrap both in subshells to preserve the original working directory.

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

* fix: remove devnet-sdk and kurtosis-devnet from TEST_PKGS

These directories were removed in #19506 but the justfile still
referenced them, causing go-tests-short-ci to fail with
"lstat ./devnet-sdk/: no such file or directory".

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

* ci: update CircleCI config to use just instead of make

Migrates all CircleCI make invocations to just for targets that have
been migrated to justfiles. Remaining make calls are for packages not
yet migrated (op-challenger, op-node, op-service, op-chain-ops fuzz
targets) and cannon/testdata which has its own Makefile.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* docs(op-e2e): update README to use just instead of make

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

* fix(justfiles): pass Make variable overrides as env vars in deprecated shim

The deprecated.mk shim was changed to pass JUSTFLAGS as just CLI
variable overrides (`just VAR=val target`), but just rejects overrides
for variables not declared in the justfile. This broke CI jobs where
Make variable assignments propagate through sub-makes (e.g.
GO_TEST_FLAGS, GUEST_PROGRAM).

Revert to passing them as environment variables via `env`, which is
how the shim originally worked in the cannon migration PR.

Fixes: go-tests-short, sanitize-op-program CI failures

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

* ci: re-trigger cannon-prestate build

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

* chore: migrate root Makefile to justfile

Migrate root build targets from Make to Just. The Makefile now
delegates to just with a deprecation warning, preserving backwards
compatibility for existing make invocations.

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

* docs: update CONTRIBUTING.md to use just instead of make

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

* fix: convert make -C calls to just and restore GOPRIVATE comment

All subdirectories now have justfiles with deprecated Make shims,
so convert remaining make -C calls to cd && just. Also restores
the explanatory comment on mod-tidy's GOPRIVATE usage.

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

* fix: run reproducible-prestate builds in parallel

just doesn't parallelize dependencies like make -j does. Use background
processes with wait to run op-program and kona prestate builds concurrently.

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

* fix: use subshell for cd in _go-tests-ci-internal

The cd into cannon/ was changing the CWD for the rest of the script,
causing gotestsum to run from cannon/ instead of the repo root. The
original Makefile used $(MAKE) -C which spawns a subprocess. Use a
subshell to match that behavior.

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

* fix: use subshells for sequential cd in reproducible-prestate

The bare `cd op-program` on line 180 changed cwd persistently, so the
following `cd rust` tried to resolve `op-program/rust/` which doesn't
exist. Wrap both in subshells to preserve the original working directory.

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

* fix: remove devnet-sdk and kurtosis-devnet from TEST_PKGS

These directories were removed in #19506 but the justfile still
referenced them, causing go-tests-short-ci to fail with
"lstat ./devnet-sdk/: no such file or directory".

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

* ci: update CircleCI config to use just instead of make

Migrates all CircleCI make invocations to just for targets that have
been migrated to justfiles. Remaining make calls are for packages not
yet migrated (op-challenger, op-node, op-service, op-chain-ops fuzz
targets) and cannon/testdata which has its own Makefile.

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

* chore(cannon): migrate testdata Makefiles to justfiles

Migrates cannon/testdata/, cannon/testdata/go-1-24/, and
cannon/testdata/go-1-25/ Makefiles to justfiles. The Make pattern rules
for building ELF binaries from go.mod directories are replaced with
shell loops that discover and build all directories dynamically.

Also updates cannon/justfile to call just instead of make -C for
testdata targets, and updates the CI config accordingly.

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

* fix(cannon): manual shim for diff-cannon positional arg

The generic deprecated.mk shim converts make variables to env vars, but
diff-cannon VM: is a positional parameter in just. Write a manual shim
that passes VM correctly. Also add deprecation warning to the diff-%-cannon
pattern target.

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

* fix: restore dump discovery from go.mod and TODO comment

Match the original Makefile behavior by iterating */go.mod directories
instead of bin/*.64.elf to avoid dumping stale ELFs. Restore the TODO
about the little-endian vs big-endian toolchain.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add binary entry point for external proofs in OP (op-rs/op-reth#222)

Closes op-rs/op-reth#164

---------

Co-authored-by: Arun Dhyani <dhyaniarun7@gmail.com>

* feat: add support for `eth_getProof` (op-rs/op-reth#257)

Adds support for `eth_getProof` RPC method. This required reworking the
launch command to still work with an alternative DB provider.

Closes op-rs/op-reth#173

---------

Co-authored-by: Emilia Hane <elsaemiliaevahane@gmail.com>

* perf(trie): feature gate `reth-optimism-trie` metrics (op-rs/op-reth#282)

Closes https://github.com/op-rs/bin/issues/281

- Feature gates `reth-optimism-trie` metrics
- Moves cursor impls out of proofs module into new module `cursor`
- Moves cursor factory impls into new module `cursor_factory`
- Updates cursor factory impls to return cursor types with metrics
wrapper if metrics feature is enabled

* fix(test): Enable live collector tests with metrics feature (op-rs/op-reth#291)

Closes https://github.com/op-rs/bin/issues/283

Enable live collector tests when metrics feature is enabled

* feat: implement `debug_executePayload` (op-rs/op-reth#276)

Closes https://github.com/op-rs/bin/issues/189

---------

Co-authored-by: Emilia Hane <elsaemiliaevahane@gmail.com>

* feat: live collector integration (op-rs/op-reth#306)

Closes op-rs/op-reth#296

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Emilia Hane <elsaemiliaevahane@gmail.com>

* fix: rebase conflicts (op-rs/op-reth#367)

Fix conflicts rebasing onto latest upstream main

* feat: implemented `OpProofStorage` Database metrics (op-rs/op-reth#407)

Closes op-rs/op-reth#224
Closes op-rs/op-reth#387

---------

Co-authored-by: Arun Dhyani <dhyaniarun7@gmail.com>

* feat: Implemented `OpProofStoragePrunerTask` (op-rs/op-reth#375)

Closes op-rs/op-reth#361
Closes op-rs/op-reth#395

---------

Co-authored-by: Emilia Hane <elsaemiliaevahane@gmail.com>

* chore: inmem proof storage removed (op-rs/op-reth#465)

This PR removes the CLI support for in-memory proof storage
(proofs_history_storage_in_mem). The in-memory storage implementation
was primarily intended for unit testing and is not feasible for running
a node due to the large memory requirements of storing historical trie
nodes.

Closes op-rs/op-reth#466

* chore(exex): Add metrics feature in `reth-optimism-exex` (op-rs/op-reth#438)

Closes https://github.com/op-rs/bin/issues/427

---------

Co-authored-by: itschaindev <jagrutk@protonmail.com>

* feat: prune cli added (op-rs/op-reth#507)

Closes op-rs/op-reth#452

* refactor(trie): return `OpProofsStorageError` from `execute_and_store_block_updates` (op-rs/op-reth#535)

Closes op-rs/op-reth#523

---------

Co-authored-by: Emilia Hane <elsaemiliaevahane@gmail.com>

* fix: reduce default proofs pruning interval (op-rs/op-reth#560)

Closes op-rs/op-reth#559

* feat: add verification interval for integrity check (op-rs/op-reth#577)

Closes op-rs/op-reth#449

The approach used is to perform full block verification after every N
blocks to ensure the state is still correct.

---------

Co-authored-by: Arun Dhyani <dhyaniarun7@gmail.com>

* chore: getProof benchmark utility added (op-rs/op-reth#550)

Utility for op-rs/op-reth#446

* chore: mv proof args to rollup node (op-rs/op-reth#625)

Closes op-rs/op-reth#613

* chore: ExEx config builder (op-rs/op-reth#642)

Closes op-rs/op-reth#641

---------

Co-authored-by: Himess <semihcvlk53@gmail.com>

* chore: moved proof initialization to `reth-optimism-node` (op-rs/op-reth#640)

Closes op-rs/op-reth#612

---------

Co-authored-by: Arun Dhyani <dhyaniarun7@gmail.com>

* chore(rust): fix compilation errors

* docs(op-reth): add historical proofs README to exex crate

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

* chore(op-reth): move proof-bench to rust/op-reth/bin/proof-bench

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

* fix(op-reth): fix go-lint and rust-clippy CI failures

- Replace big.Int.Uint64() calls with bigs.Uint64Strict() in proof tests
- Fix goimports ordering in proof test files (move ethereum-optimism/* before ethereum/go-ethereum/*)
- Fix const alignment in preset.go
- Fix uninlined_format_args clippy lint in proof-bench report.rs

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

fix(op-reth): update proofs preset to use stack.ComponentID

Replace removed type aliases (L1NetworkID, L1ELNodeID, L2CLNodeID, etc.)
with unified stack.ComponentID type. Also fix L2NodeMatcher generics and
match.Not calls to use stack.ByID wrapper.

fix(op-reth): remove duplicate crates/tests/proofs preset

This was a partial copy of rust/op-reth/tests/proofs/utils with no
go.mod, no test files, and no other sources. It caused go-lint CI
failures due to stale type references.

---------

Co-authored-by: jagroot <4516586+itschaindev@users.noreply.github.com>
Co-authored-by: Arun Dhyani <dhyaniarun7@gmail.com>
Co-authored-by: Julian Meyer <julianmeyer2000@gmail.com>
Co-authored-by: Emilia Hane <elsaemiliaevahane@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Sadiqur Rahman <sadiqurr8@gmail.com>
Co-authored-by: itschaindev <jagrutk@protonmail.com>
Co-authored-by: Himess <95512809+Himess@users.noreply.github.com>
Co-authored-by: Himess <semihcvlk53@gmail.com>
Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
* docs(ai): add Go development guidance for AI agents

Replace the placeholder go-dev.md with practical workflow guidance
covering tool versions (via mise), build system (just), linting
(custom golangci-lint build), and pre-commit/pre-PR checklists.

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

* docs(ai): add Rust development guidance for AI agents

Replace the placeholder rust-dev.md with practical workflow guidance
covering the workspace layout, build system (just), linting (including
nightly formatting and no_std checks), and pre-commit/pre-PR checklists.

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

* docs(ai): extract shared dev workflow to dev-workflow.md

Move tool versions (mise), PR workflow (rebase on develop, PR
guidelines), and CI notes into a shared doc referenced by both
go-dev.md and rust-dev.md. Reduces duplication and gives a single
place to update cross-language guidance.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
The compute-git-versions target was moved to a deprecated shim that
delegates to just, but the GitHub Actions prep job doesn't have just
installed. Restore it as a native make target that calls the shell
script directly.

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* fix(rust/op-reth): prefix function args with underscore in test contracts

Fixes semgrep-scan-local CI failure on develop caused by
sol-style-input-arg-fmt rule violations in SimpleStorage.sol and
TokenVault.sol test contracts.

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

* fix(ci): restore compute-git-versions as native make target

The compute-git-versions target was moved to a deprecated shim that
delegates to just, but the GitHub Actions prep job doesn't have just
installed. Restore it as a native make target that calls the shell
script directly.

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

* Revert "fix(ci): restore compute-git-versions as native make target"

This reverts commit 69dd757.

* fix(ci): add rust/op-reth/tests/ to .semgrepignore

The path was moved from rust/op-reth/crates/tests/ (already ignored) to
rust/op-reth/tests/ in #19252, taking test contracts out of the ignore
scope and breaking semgrep-scan-local on develop. Revert the Solidity
file changes and ignore the new path instead — these are test contracts,
not production code.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
* chore: add nut bundle check to just pr

* chore: add nut bundle generation step for just pr

* chore: remove output suppression from bundle checks
* chore(contracts): bump superchain-registry to latest

Updates superchain-registry submodule to latest main (446802f).

* fix(contracts): read addresses from extra/addresses.json after registry schema change

The superchain-registry moved most chain addresses from the per-chain
TOML files to superchain/extra/addresses/addresses.json. Only
SystemConfigProxy, OptimismPortalProxy, L1StandardBridgeProxy, and
DisputeGameFactoryProxy remain in the TOML [addresses] section.

Updates ForkLive.s.sol to read moved addresses (ProxyAdmin,
AddressManager, L1CrossDomainMessengerProxy, etc.) from the JSON file
using vm.parseJsonAddress keyed by chain ID.

* fix(contracts): allow reading superchain-registry extra addresses in foundry

Add fs_permissions entry for ./lib/superchain-registry/superchain/extra/
so ForkLive.s.sol can read addresses.json during fork tests.
…-reth (#19408)

* feat(kona): implement L2PayloadWitness hint for interop

Adds support for the L2PayloadWitness hint in kona interop mode, enabling
execution witness pre-fetching via debug_executePayload RPC.

Changes:
- Add enable_experimental_witness_endpoint flag to InteropHost config
- Add ExecutionWitness and OpPayloadAttributes imports
- Implement L2PayloadWitness handler with chain_id routing
  - Extracts chain_id from last 8 bytes (variable-length pattern)
  - Routes to correct L2 provider via providers.l2(&chain_id)
  - Calls debug_executePayload RPC with silent failure for unsupported clients
  - Stores witness preimages (state, codes, keys) with keccak256 keys
- Add unit tests for hint data parsing and validation

Follows the same pattern as single-chain implementation with multi-chain
routing added for interop. All tests pass.

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

* Fix package reference in interop acceptance tests

* feat(op-challenger): add --cannon-kona-experimental-witness-endpoint flag

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

* remove redundant witness endpoint acceptance test

* fix(kona): add L2PayloadWitness proactive hint and improve interop tests

- Register L2PayloadWitness as a proactive hint in interop cfg.rs to
  match single-chain behavior
- Extract parse_l2_payload_witness_hint() helper and update tests to
  call it directly rather than reimplementing the parsing logic

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

* fix(kona): extract preimages iterator before kv lock, add WithL2ELKind tests

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

* fix(op-reth): wire proof-history exex and RPC overrides into main entrypoint

main.rs was calling launch_with_debug_capabilities directly, bypassing
launch_node_with_proof_history entirely, so the proofs-history exex and
eth_getProof/debug_executePayload RPC overrides were never installed.
Made launch_node_with_proof_history generic over DB to work with the bare
DatabaseEnv the CLI provides. Removed --rpc.eth-proof-window from devstack
since the exex override now handles all eth_getProof requests.

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

* Lint fix

* fix(op-reth): make supervisor URL optional, disable interop validation when not set

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

* chore(rust): apply nightly rustfmt to op-reth changes

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

* Lint fixes

* fix(op-devstack): always enable proof history for op-reth, window=10000

Ports the proof history always-on change to mixed_runtime.go (the new
location after develop's devstack refactoring). Removes the ELProofHistory
toggle — proof history is now unconditionally enabled for all op-reth nodes
with a 10000-block window.

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

* feat(op-devstack): use op-reth for all interop tests, always enable proofs-history

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

* fix(op-devstack): remove supervisor RPC from op-reth node startup

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

* feat(op-devstack): use op-reth for supernode interop tests

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

* fix(op-node): handle reorged super authority safe head gracefully

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

* fix(op-devstack): skip op-reth tests gracefully when binary not available

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

* fix(op-devstack): revert startL2ELNodeWithSupervisor to op-geth

* fix(op-challenger): clarify --proofs-history requirement in flag usage

* fix(op-reth): fix imports and Cargo.toml after rebase conflict resolution

* review: fail on missing op-reth binary, clarify supervisor deprecation

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

* Revert "fix(op-node): handle reorged super authority safe head gracefully"

This reverts commit c054e41004b3e9d61850e1e1bf63d246ba4df87d.

* fix(kona): log info when debug_executePayload is unavailable, add tests

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

* chore(kona): fix import ordering from nightly rustfmt

* Lint fix

* fix(kona): make is_rpc_method_not_found const to satisfy clippy

* fix(op-devstack): respect DEVSTACK_L2EL_KIND in supernode runtime

startMixedOpRethNode was hardcoded so memory-all-opn-op-geth CI job
(which sets DEVSTACK_L2EL_KIND=op-geth) was still running op-reth.
Add startSupernodeEL helper that reads the env var and falls back to
op-reth when not set.

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

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ributesBuilder (#19503)

System config update errors in `prepare_payload_attributes` were propagated
as critical pipeline errors, halting derivation. One or more receipts may
contain malformed or invalid config update logs, which should not be fatal.

Change the error handling to log a warning and continue derivation instead.

Closes: AQ-10

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

⤵️ pull merge-conflict Resolve conflicts manually

Projects

None yet

Development

Successfully merging this pull request may close these issues.