Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
7e7f1ee
op-challenger: treat a missing datadir as nothing to clean up (#22995)
pauldowman Sep 23, 2026
7722215
docs: unhide the SDM guide, add the protocol explainer, document the …
geoknee Sep 23, 2026
f07f3e0
op-alloy,kona!,op-reth!: fix Bedrock deposit decoding and pin gas par…
sebastianst Sep 23, 2026
4e27339
op-devstack: Deploy chains through OPCM on local L1 (#22937)
ajsutton Sep 23, 2026
cc8a333
op-node: Truncate the safe head db to local-safe on reset (#22997)
ajsutton Sep 23, 2026
5e26774
op-supernode: Prevent local-safe promotion while verified state is st…
ajsutton Sep 24, 2026
56e3f8d
op-reth: export the SDM operator opt-in as a gauge (#22927)
einar-oplabs Sep 24, 2026
1cbf91a
rust!: update reth to v2.5.2 with Engine handoff backport (#22495)
sebastianst Sep 24, 2026
171b2ae
op-reth: assert l1FeeScalar is absent post-Ecotone (#22987)
geoknee Sep 24, 2026
ecb23b1
op-alloy,op-reth: record SDM refund counters on the import path (#22931)
einar-oplabs Sep 24, 2026
65805e1
op-alloy,op-reth: count post-exec validation failures by rule (#22932)
einar-oplabs Sep 24, 2026
59cdf77
alloy-op-evm: zero invalid sequencer SDM refunds (#22963)
nonsense Sep 24, 2026
ec1e5f2
op-alloy,op-reth,kona: enforce canonical PostExec entries (#23003)
nonsense Sep 24, 2026
77b66d5
op-reth: export the boot-time SDM opt-in as a gauge (#22961)
einar-oplabs Sep 24, 2026
0442573
kona-sp1-proposer: reject pending game ancestry (#22910)
Inphi Sep 24, 2026
81913a0
op-dispute-mon: count ZK bond distributions only after finality (#23010)
digorithm Sep 24, 2026
8bfe6c5
docs: add PublicNode to OP Stack RPC directory (#23002)
3eph1r0th Sep 24, 2026
3ce7fc2
op-reth: reuse shared payload EVM environment builder (#22968)
joshklop Sep 24, 2026
52aff8e
docs: add Goldsky to RPC provider directory (#23021)
aramalipoor Sep 24, 2026
1f94d97
op-challenger: warn instead of error when the local node is behind th…
geoknee Sep 25, 2026
5315305
docs: add cast rpc commands for disabling SDM (#23027)
geoknee Sep 25, 2026
f90ec53
op-service/log!: make op-service/log a leaf package and the monorepo'…
sebastianst Sep 25, 2026
7c65adf
all: log through op-service/log instead of go-ethereum/log (#23017)
sebastianst Sep 25, 2026
bf4fc51
op-revm,alloy-op-evm: exempt deposits from the gas cap in OpHandler::…
sebastianst Sep 25, 2026
fe0f799
Update release docs: op-proposer v1.16.6, op-challenger v1.10.0 (#23049)
mintlify[bot] Sep 26, 2026
9c1c970
docs: Add interop reviewer (#22824)
ajsutton Sep 28, 2026
4c1864d
op-alloy: omit gasPrice from PostExec RPC responses (#23051)
nonsense Sep 28, 2026
b6541c7
kona-std-fpvm,kona-client: keep native fds open on I/O errors and unb…
sebastianst Sep 28, 2026
3a29d94
kona-sp1: bump SP1 to 6.8.1 (#23048)
wwared Sep 28, 2026
ba941e1
kona-sp1-proposer: recover refund-mode bonds (#22835)
wwared Sep 28, 2026
45a8041
kona-sp1-proposer: make game discovery lag configurable (#23044)
Inphi Sep 28, 2026
a353585
kona-sp1: support mTLS and separate SPN signing (#22953)
wwared Sep 28, 2026
c82e935
op-service/log: own the Logger and its slog implementation (#23024)
sebastianst Sep 28, 2026
c673314
docs: require a partitioned full-range sweep in reth bump reviews (#2…
sebastianst Sep 28, 2026
8ab3bf2
op-node,op-batcher: stop running services without os.Exit (#23054)
geoknee Sep 28, 2026
bb2fefd
op-service/testlog!: make CapturingHandler safe for concurrent use (#…
sebastianst Sep 29, 2026
54e770f
all!: replace the legacy Lvl* log levels with Level* (#23064)
sebastianst Sep 29, 2026
f850b2c
op-reth: include OP fees in txpool cost for sender affordability (#23…
geoknee Sep 29, 2026
d76be38
op-node/sequencing: publish blocks asynchronously and after inserting…
geoknee Sep 29, 2026
bc0d320
op-chain-ops!: rename sdm-devnet to sdm-workload (#23075)
nonsense Sep 29, 2026
e7af974
op-acceptance-tests: cover non-interop ZK proposer and challenger (#2…
Inphi Sep 29, 2026
b806331
op-reth: address review nits on txpool OP fee reservation (#23077)
geoknee Sep 29, 2026
b1ee6f9
ci: build the op-deployer release without CI caches (#23062)
maurelian Sep 29, 2026
82600f1
op-deployer: update SCR dep and CurrentTag for op-contracts/v8.0.0 (#…
maurelian Sep 29, 2026
148b48c
docs: regroup the Protocol tab from eleven top-level groups to five (…
sbvegan Sep 29, 2026
75bf6b2
docs: Add a safedb review guide and reviewer agent (#22998)
ajsutton Sep 29, 2026
28121d8
kona-sp1-proposer: export SPN request, nonce and requester metrics (#…
digorithm Sep 29, 2026
0e91b98
docs: clarify CGT fee vault withdrawal configuration (#23099)
mds1 Sep 29, 2026
2c5719e
contracts-bedrock: Remove the startingAnchorRoot upgrade allowance (#…
ajsutton Sep 29, 2026
3982716
op-batcher: price auto DA for Glamsterdam (#22996)
joshklop Sep 30, 2026
1445c48
op-service/rpc: stop test goroutines from logging after the test ends…
sebastianst Sep 30, 2026
1c29947
op-chain-ops: consolidate SDM checks in check-lagoon (#23052)
nonsense Sep 30, 2026
90bec1f
op-service/testlog: keep inherited attributes across WithGroup (#23082)
sebastianst Sep 30, 2026
ea4a435
docs: give each tab's Get started group a label that names its journe…
sbvegan Sep 30, 2026
ed8a240
docs: stop claiming a working regeneration automation in the generato…
sbvegan Sep 30, 2026
9035cad
op-service!: own the RPC recording seam and JSON-RPC error type (#23055)
sebastianst Sep 30, 2026
a00b2fe
docs: add the component reference convention, Unreleased callout, and…
sbvegan Sep 30, 2026
9fa52af
docs: version in-tree Rust crate families as a group (#23110)
sebastianst Sep 30, 2026
c368ce9
kona-driver!: only retry invalid payloads as deposit-only (#23012)
fakedev9999 Sep 30, 2026
5a93038
op-service!: remove server-side RPC recording (#23114)
sebastianst Sep 30, 2026
0bd056c
contracts-bedrock: clarify Foundry upgrade threats (#23016)
maurelian Sep 30, 2026
5686e95
ci: publish kona-sp1-program prestate ELFs on tag and develop (#23117)
wwared Sep 30, 2026
031adbf
ops: verify tagged Kona SP1 prestates against the registry (#23090)
Inphi Sep 30, 2026
777fc39
kona-derive: Set the span batch parent hash in BatchStream (#23071)
ajsutton Sep 30, 2026
da6d325
kona-sp1: Fix README todo (#23129)
Inphi Sep 30, 2026
6f98d85
rust: bump webpki crates to distrust compromised eMudhra intermediate…
raffaele-oplabs Oct 21, 2026
3fdac9c
apko: require ca-certificates-bundle 20260909-r3 (#23566)
falcorocks Oct 21, 2026
e16bffa
security: Update go toolchain directive to v1.26.10 [SECURITY] (#23546)
oplabs-renovate[bot] Oct 21, 2026
a92344c
Merge tag 'op-reth/v2.6.1' into bump/op-reth-v2.6.1
sduchesneau Oct 22, 2026
15364bb
Adapt the OP Firehose engine validator to reth v2.5.2
sduchesneau Oct 22, 2026
32233ce
Emit Firehose init and genesis before the engine starts
sduchesneau Oct 22, 2026
3c05420
Warn that the Firehose validator ignores txpool prewarming
sduchesneau Oct 22, 2026
d385e7f
Record the op-reth v2.6.1 bump in SF notes
sduchesneau Oct 22, 2026
e70aa4c
Pin reth to the op-reth-v2.6.1-fh3.1 tag
sduchesneau Oct 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 1 addition & 1 deletion .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ parameters:

orbs:
continuation: circleci/continuation@2.0.1
utils: ethereum-optimism/circleci-utils@1.0.31
utils: ethereum-optimism/circleci-utils@1.0.32

jobs:
# --------------------------------------------------------------------------
Expand Down
200 changes: 127 additions & 73 deletions .circleci/continue/main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,7 @@ parameters:
default: false

orbs:
utils: ethereum-optimism/circleci-utils@1.0.31
utils: ethereum-optimism/circleci-utils@1.0.32
go: circleci/go@1.8.0
gcp-cli: circleci/gcp-cli@3.0.1
slack: circleci/slack@6.0.0
Expand Down Expand Up @@ -304,25 +304,35 @@ commands:
description: "The versions of solc to install"
type: string
default: "0.8.15,0.8.19,0.8.25,0.8.28"
use_cache:
description: Restore and save the solc cache. Disable to download every compiler fresh.
type: boolean
default: true
steps:
- restore_cache:
keys:
# use mise.toml to anchor on the underlying forge/svm versions
- svm-cache-{{ checksum "mise.toml" }}-<<parameters.solc_versions>>
# Fall back to any svm cache for the same forge/svm versions so a
# changed solc_versions list reuses what's there and installs only
# the difference instead of a full cold install.
- svm-cache-{{ checksum "mise.toml" }}-
- when:
condition: << parameters.use_cache >>
steps:
- restore_cache:
keys:
# use mise.toml to anchor on the underlying forge/svm versions
- svm-cache-{{ checksum "mise.toml" }}-<<parameters.solc_versions>>
# Fall back to any svm cache for the same forge/svm versions so a
# changed solc_versions list reuses what's there and installs only
# the difference instead of a full cold install.
- svm-cache-{{ checksum "mise.toml" }}-
- run:
name: Install solc compilers
command: |
for version in $(echo "<<parameters.solc_versions>>" | tr ',' '\n'); do
svm which $version || svm install $version
done
- save_cache:
key: svm-cache-{{ checksum "mise.toml" }}-<<parameters.solc_versions>>
paths:
- ~/.svm
- when:
condition: << parameters.use_cache >>
steps:
- save_cache:
key: svm-cache-{{ checksum "mise.toml" }}-<<parameters.solc_versions>>
paths:
- ~/.svm

install-contracts-dependencies:
description: "Install the dependencies for the smart contracts"
Expand All @@ -331,8 +341,13 @@ commands:
description: "The versions of solc to install"
type: string
default: "0.8.15,0.8.19,0.8.25,0.8.28"
use_cache:
description: Restore and save the solc cache.
type: boolean
default: true
steps:
- install-solc-compilers
- install-solc-compilers:
use_cache: << parameters.use_cache >>
- run:
name: Install dependencies
command: |
Expand Down Expand Up @@ -650,23 +665,6 @@ commands:
export CARGO_TARGET_DIR="$PWD/<< parameters.directory >>/target"
echo "CARGO_TARGET_DIR: $CARGO_TARGET_DIR"

# Leave one core idle so the build does not fill the executor's RAM.
# The release profile's peak is the tail of the build, where the big
# binaries (op-reth, kona-zkvm-canary, kona-sp1-proposer, the op-reth
# examples) link at once under `lto = "thin"`; rust-workspace-release
# has been OOM-killed there (`sccache: Compile terminated by
# signal 9`).
# nproc reflects the resource class on these executors, so this is 7
# on xlarge.gen2. The spare core is headroom, not a throughput knob:
# cargo's default is one unit per core, and dropping to n-1 costs far
# less than a retry.
CARGO_BUILD_JOBS="$(nproc)"
if [ "$CARGO_BUILD_JOBS" -gt 1 ]; then
CARGO_BUILD_JOBS=$((CARGO_BUILD_JOBS - 1))
fi
export CARGO_BUILD_JOBS
echo "CARGO_BUILD_JOBS: $CARGO_BUILD_JOBS (nproc: $(nproc))"

export PROFILE="--profile << parameters.profile >>"

# Debug profile is specified as "debug" in the config/target, but cargo build expects "dev"
Expand Down Expand Up @@ -745,7 +743,7 @@ jobs:
description: "Build a Rust workspace with target directory caching"
docker:
- image: <<pipeline.parameters.c-rust_base_image>>
resource_class: xlarge.gen2
resource_class: << parameters.resource_class >>
parameters:
directory:
description: "Directory containing the Cargo workspace"
Expand Down Expand Up @@ -782,6 +780,10 @@ jobs:
description: "Whether to persist the built binaries to the CircleCI workspace"
type: boolean
default: false
resource_class:
description: "Machine resource class"
type: string
default: xlarge.gen2
steps:
- rust-build:
directory: << parameters.directory >>
Expand Down Expand Up @@ -946,61 +948,90 @@ jobs:
description: Profile to use for building
type: string
default: ci
use_caches:
description: >-
Restore and save the mise, solc, forge build and Go caches. The
op-deployer release build disables them so the artifacts it ships don't
depend on content an earlier job saved to a cache.
type: boolean
default: true
steps:
- utils/checkout-with-mise:
checkout-method: blobless
enable-mise-cache: true
- install-contracts-dependencies
- when:
condition: << parameters.use_caches >>
steps:
- utils/checkout-with-mise:
checkout-method: blobless
enable-mise-cache: true
- unless:
condition: << parameters.use_caches >>
steps:
- utils/checkout-with-mise:
checkout-method: blobless
fresh-install: true
- install-contracts-dependencies:
use_cache: << parameters.use_caches >>
- run:
name: Print forge version
command: forge --version
- run:
name: Compute forge build cache key
command: |
# Key over every input affecting forge output: all tracked package
# files via `git ls-files -s` (sources, config, lib/ submodule
# pins), mise.toml toolchain pins, and profile/args. Exact-key only
# (no fallback restore): a hit never serves artifacts for changed
# or deleted contracts; a miss is a normal clean build. The
# installed solc set is deliberately unkeyed — drift only makes
# forge recompile mismatched artifacts, never serve stale ones.
{
echo "profile=<<parameters.profile>> args=<<parameters.build_args>>"
sha256sum mise.toml
git ls-files -s -- packages/contracts-bedrock
} | sha256sum | cut -d' ' -f1 | tee /tmp/forge-cache-key.txt
- restore_cache:
name: Restore forge build cache
keys:
- forge-build-v1-<<parameters.profile>>-{{ checksum "/tmp/forge-cache-key.txt" }}
- when:
condition: << parameters.use_caches >>
steps:
- run:
name: Compute forge build cache key
command: |
# Key over every input affecting forge output: all tracked package
# files via `git ls-files -s` (sources, config, lib/ submodule
# pins), mise.toml toolchain pins, and profile/args. Exact-key only
# (no fallback restore): a hit never serves artifacts for changed
# or deleted contracts; a miss is a normal clean build. The
# installed solc set is deliberately unkeyed — drift only makes
# forge recompile mismatched artifacts, never serve stale ones.
{
echo "profile=<<parameters.profile>> args=<<parameters.build_args>>"
sha256sum mise.toml
git ls-files -s -- packages/contracts-bedrock
} | sha256sum | cut -d' ' -f1 | tee /tmp/forge-cache-key.txt
- restore_cache:
name: Restore forge build cache
keys:
- forge-build-v1-<<parameters.profile>>-{{ checksum "/tmp/forge-cache-key.txt" }}
- run:
name: Build contracts
command: just forge-build <<parameters.build_args>>
environment:
FOUNDRY_PROFILE: <<parameters.profile>>
working_directory: packages/contracts-bedrock
- save_cache:
name: Save forge build cache
key: forge-build-v1-<<parameters.profile>>-{{ checksum "/tmp/forge-cache-key.txt" }}
# These paths hold for profiles that keep foundry.toml's default
# output dirs; a profile that redirects them (e.g. kprove's
# out = kout-proofs) needs this list extended.
paths:
- packages/contracts-bedrock/cache
- packages/contracts-bedrock/artifacts
- packages/contracts-bedrock/forge-artifacts
- when:
condition: << parameters.use_caches >>
steps:
- save_cache:
name: Save forge build cache
key: forge-build-v1-<<parameters.profile>>-{{ checksum "/tmp/forge-cache-key.txt" }}
# These paths hold for profiles that keep foundry.toml's default
# output dirs; a profile that redirects them (e.g. kprove's
# out = kout-proofs) needs this list extended.
paths:
- packages/contracts-bedrock/cache
- packages/contracts-bedrock/artifacts
- packages/contracts-bedrock/forge-artifacts
# copy-contract-artifacts runs `go run ... mktar`, which needs the Go
# module set. Restore the shared cache (warmed by prep-go-modules) so it
# doesn't hit proxy.golang.org.
- go-restore-cache:
namespace: contracts-bedrock-build
- when:
condition: << parameters.use_caches >>
steps:
- go-restore-cache:
namespace: contracts-bedrock-build
- run:
name: "Copy artifacts into deployer"
command: |
just copy-contract-artifacts
working_directory: op-deployer
- go-save-cache:
namespace: contracts-bedrock-build
- when:
condition: << parameters.use_caches >>
steps:
- go-save-cache:
namespace: contracts-bedrock-build
- persist_to_workspace:
root: "."
paths:
Expand Down Expand Up @@ -1615,6 +1646,9 @@ jobs:
name: run Go linter
command: |
just lint-go
- run:
name: Test prestate build driver
command: mise exec -- ./ops/prestate-reproducibility/test-build-prestates.sh
- go-save-cache:
namespace: go-lint
- save_cache:
Expand Down Expand Up @@ -2313,21 +2347,39 @@ jobs:
description: Goreleaser config file
default: .goreleaser.yaml
type: string
use_caches:
description: >-
Restore the mise and Go module caches and use Docker layer caching. The
op-deployer release disables them so its binary and images are built with
freshly installed tools and freshly downloaded modules.
type: boolean
default: true
docker:
- image: <<pipeline.parameters.c-default_docker_image>>
resource_class: large.gen2
steps:
- setup_remote_docker:
docker_layer_caching: true
docker_layer_caching: << parameters.use_caches >>
- gcp-cli/install
- gcp-oidc-authenticate:
gcp_cred_config_file_path: /tmp/gcp_cred_config.json
oidc_token_file_path: /tmp/oidc_token.json
- utils/checkout-with-mise:
enable-mise-cache: true
- when:
condition: << parameters.use_caches >>
steps:
- utils/checkout-with-mise:
enable-mise-cache: true
- unless:
condition: << parameters.use_caches >>
steps:
- utils/checkout-with-mise:
fresh-install: true
- attach_workspace: {at: "."}
# goreleaser compiles the Go release binaries on the host.
- restore-go-mod-cache
- when:
condition: << parameters.use_caches >>
steps:
- restore-go-mod-cache
- run:
name: Build superchain bundle
command: just build-superchain-go
Expand Down Expand Up @@ -2707,6 +2759,7 @@ workflows:
branches:
ignore: /.*/
build_args: --skip test
use_caches: false
context:
- circleci-repo-readonly-authenticated-github-token
- go-release:
Expand All @@ -2716,6 +2769,7 @@ workflows:
branches:
ignore: /.*/
module: op-deployer
use_caches: false
context:
- oplabs-gcr-release
- circleci-repo-readonly-authenticated-github-token
Expand Down
Loading
Loading