Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
7b0a300
feat(op-alloy-network): make reqwest opt-in (#21175)
fakedev9999 Jun 26, 2026
0cc0297
l2genesis: integrate l2cm (#21477)
0xCoati Jun 26, 2026
d5863c4
fix(op-node): tolerate EL-expired genesis history during L2 config va…
einar-oplabs Jun 26, 2026
da197e4
test(contracts): fix OptimismMintableERC20Factory CREATE2 prediction …
mds1 Jun 26, 2026
0cd2fa5
docs: u19 notice page updates (#21590)
joshklop Jun 27, 2026
b3e0997
docs: refresh component release notes (#21594)
mintlify[bot] Jun 27, 2026
6f8420c
docs: add reth/revm/alloy update review guide and reviewer agent (#21…
ajsutton Jul 5, 2026
77e64da
feat(op-challenger): add game-proposal-outputs subcommand (replaces s…
ajsutton Jul 5, 2026
89e14a6
fix(op-reth): drain Prometheus metric buckets in op-proofs CLI (#21596)
dhyaniarun1993 Jul 6, 2026
4cd1249
contracts-bedrock: handle disabled cannon fork state (#21621)
ajsutton Jul 6, 2026
315ba66
ci: move scheduled tests to daily (#21595)
mds1 Jul 6, 2026
9061e8b
ci: validate CircleCI schedule triggers (#21575)
ajsutton Jul 6, 2026
c59ae79
docs(chain-operators): default feature guides (Flashblocks, Alt-DA) t…
donoso-eth Jul 7, 2026
64447e0
Remove kona-link-checker job, simplify kona README. (#21628)
ajsutton Jul 7, 2026
3f06793
docs: relabel node architecture overview as explanation (#21626)
sbvegan Jul 7, 2026
61e2760
fix: Super ZK game QA fixes (#21615)
0xarktos Jul 7, 2026
0a954c0
Update upgrade-19.mdx with gas configuration check (#21632)
geoknee Jul 7, 2026
d52c4c8
docs: add op-node v1.19.2 release notes (#21631)
mintlify[bot] Jul 7, 2026
a8efce7
test: ZK Game Integration Test Coverage and E2E SuperGame Migration T…
0xarktos Jul 7, 2026
fa4f651
docs: add app-developer getting-started tutorial for deploying a cont…
sbvegan Jul 7, 2026
9d7765a
feat: op deployer zk mock verifier (#21571)
ashitakah Jul 7, 2026
67ceca2
fix(kona): graceful OOG on precompile gas overspend in fpvm provider …
ajsutton Jul 7, 2026
e21a28c
contracts-bedrock: post-U19 cannon deprecation follow-ups (#21625)
mds1 Jul 7, 2026
4cdfbce
fix(kona): spend all gas on precompile halt in fpvm provider (#21634)
wwared Jul 7, 2026
eb00be8
ci: extract CircleCI workflow routing into a script (#21579)
ajsutton Jul 7, 2026
e66ce92
ci: run Go fuzz seeds in PR checks (#21547)
falcorocks Jul 7, 2026
c7cef48
ci: retire Go fuzz CI jobs (#21639)
geoknee Jul 8, 2026
0edbd10
test(op-service/eth): relax FuzzDetectNonBijectivity for non-encoded …
geoknee Jul 8, 2026
32f9a79
superchain: reject unknown keys when decoding registry configs (#21648)
sebastianst Jul 8, 2026
def01c8
feat(kona-sp1): scaffold super interop programs (#21578)
Inphi Jul 8, 2026
a8ca4a6
fix: uses isBundleApplied to detect previously applied bundles (#21652)
0xiamflux Jul 8, 2026
73f9975
op-node: move rollup-config loading into op-node/superchain (#21650)
sebastianst Jul 8, 2026
5ff6e9f
kona-host: Clarify handling of precompile status. (#21640)
ajsutton Jul 9, 2026
4d594a1
ci: make CircleCI workflow routing declarative (#21580)
ajsutton Jul 9, 2026
b003efa
docs: reorder create-l2-rollup entry page — prerequisites before setu…
sbvegan Jul 9, 2026
8438342
contracts-bedrock: support post-migration fork live setup (#21643)
ajsutton Jul 9, 2026
ea01be6
refactor(kona-sp1): dedup advance_to_target onto kona-driver (#18494)…
digorithm Jul 9, 2026
bd4c6a1
feat(op-reth): make OpPoolBuilder ordering and validator injectable (…
op-will Jul 9, 2026
b40d2ce
(docs) post karst activation cleanup (#21660)
sbvegan Jul 9, 2026
2c0eff6
Merge tag 'op-reth/v2.4.0' into feature/update-to-op-reth-version-2-4-0
maoueh Jul 14, 2026
027d74e
chore(op-reth): record v2.4.0 merge in SF changelog + task plan
maoueh Jul 14, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
166 changes: 17 additions & 149 deletions .circleci/config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,17 +87,19 @@ orbs:

jobs:
# --------------------------------------------------------------------------
# This job prepares the dynamic continuation pipeline in 6 steps:
# This job prepares the dynamic continuation pipeline in 7 steps:
#
# 1. Install yq (YAML processor for merging configs)
# 2. Store string pipeline params → /tmp/pipeline-parameters.json
# 3. Store boolean pipeline params → /tmp/pipeline-parameters.json
# 4. Detect file-tree changes → /tmp/pipeline-parameters.json
# 5. Decision tree: read the JSON, enable c-run_* workflow flags, strip
# intermediate params, write final JSON
# 5. Routing policy (compute-workflow-conditions.sh): read the JSON, enable
# c-run_* workflow flags, strip intermediate params, write final JSON
# 6. Merge continuation YAML configs → /tmp/merged-config.yml
# 7. Call CircleCI continuation API with merged config + JSON params
#
# The routing data (schedules, dispatch flags, change patterns, passthrough
# params) is declarative in routing.yml; the scripts only hold the logic.
# The result: only workflows whose c-run_* flag is true will execute.
# --------------------------------------------------------------------------
prepare-continuation-config:
Expand Down Expand Up @@ -141,8 +143,8 @@ jobs:
# Same as above but for booleans. Separate step because CircleCI renders
# boolean pipeline params as 0/1 in environment blocks — the "bool" mode
# normalizes them to JSON true/false.
# These dispatch flags are consumed only by the decision tree below;
# they do NOT reach continuation configs.
# These dispatch flags are consumed only by the routing policy
# (compute-workflow-conditions.sh); they do NOT reach continuation configs.
- run:
name: Store boolean pipeline parameters in JSON file
command: .circleci/scripts/collect-params.sh bool
Expand All @@ -160,166 +162,32 @@ jobs:
c-rust_ci_dispatch: << pipeline.parameters.rust_ci_dispatch >>
c-rust_e2e_dispatch: << pipeline.parameters.rust_e2e_dispatch >>
c-l2_fork_test_dispatch: << pipeline.parameters.l2_fork_test_dispatch >>
# Each env var value is a POSIX Extended Regular Expression (ERE, like grep -E).
# Matched line-by-line against `git diff --name-only origin/develop...HEAD`.
# Result: the c-* key is set to true/false in the JSON.
# Change-detection patterns live in routing.yml (change_patterns.any and
# change_patterns.all). Each is a POSIX ERE matched line-by-line against
# `git diff --name-only origin/develop...HEAD`; collect-params.sh writes
# the resulting c-<name> boolean into the JSON.
#
# Test a pattern locally:
# git diff --name-only origin/develop...HEAD | grep -E "^your/pattern/"
#
# When to add: you need path-based workflow gating. Also add a corresponding
# is_true/run call in the decision tree below.
- run:
name: Detect file tree changes and store in JSON file
command: .circleci/scripts/collect-params.sh detect
environment:
c-contracts_changed: "^(packages/contracts-bedrock|op-core/forks|op-core/nuts|\\.circleci|\\.github|ops/check-changed)/|^(package\\.json|mise\\.toml)$"
c-docs_changes_detected: "^docs/public-docs/"
c-rust_changes_detected: "^(rust|op-e2e|\\.circleci)/"
# Safer "docs-only" detection: true iff EVERY changed file is under docs/public-docs/.
# Using an inclusion (all-match) check instead of an exclusion of known code categories
# makes the fast path safe-by-default — any path not enumerated by the patterns above
# still falls through to the full main workflow.
- run:
name: Detect docs-only changes (all-match)
command: .circleci/scripts/collect-params.sh detect_all
environment:
c-only_docs_changes: "^docs/public-docs/"
# Decision tree: determines which workflows to enable based on trigger, branch, and params.
#
# Helpers (defined in workflow-helpers.sh):
# run foo → sets c-run_foo: true in JSON (maps 1:1 to
# "when: << pipeline.parameters.c-run_foo >>" in a continuation config)
# is_true x → checks if c-x is true in JSON (set by earlier steps)
# param x → reads raw value of c-x from JSON
# finalize → strips intermediate params, keeps only the listed whitelist + all c-run_* flags
#
# How to add a new workflow:
# 1. Add "c-run_your_workflow: {type: boolean, default: false}" in the relevant continuation config
# 2. Add "run your_workflow" in the appropriate branch below
# Routing policy: enables the c-run_* workflow flags based on trigger,
# branch, schedule, and the detected params. The workflow lists are data
# in routing.yml; the conditions live in compute-workflow-conditions.sh.
# Each c-run_<name> maps 1:1 to "when: << pipeline.parameters.c-run_<name> >>"
# in a continuation config under .circleci/continue/.
- run:
name: Compute workflow conditions from pipeline parameters and store in JSON file
environment:
BRANCH: << pipeline.git.branch >>
TRIGGER_SOURCE: << pipeline.trigger_source >>
TAG: << pipeline.git.tag >>
SCHEDULE_NAME: << pipeline.schedule.name >>
command: |
set -euo pipefail
source .circleci/scripts/workflow-helpers.sh
init_json

case "${TRIGGER_SOURCE}" in

# Scheduled pipelines: map schedule name → workflows
scheduled_pipeline)
case "${SCHEDULE_NAME}" in
build_four_hours) run scheduled_todo_issues scheduled_cannon_full_tests ;;
build_daily) run scheduled_preimage_reproducibility scheduled_stale_check scheduled_heavy_fuzz_tests ;;
build_weekly) run scheduled_weekly_tests scheduled_kona_link_checker ;;
esac
;;

# Webhook (push events)
webhook)
# --- Tag push ---
if [[ -n "${TAG}" ]]; then
run release

# =========================================================
# Three mutually exclusive lifecycle stages:
# =========================================================

# 1. PR (feature branch push)
# Runs on every push to a feature branch.
# Path-based gating: only changed areas are tested.
# Docs-only changes skip main/release entirely.
# ---------------------------------------------------------
elif [[ "${BRANCH}" != "develop" && ! "${BRANCH}" =~ ^gh-readonly-queue/ ]]; then
if is_true only_docs_changes; then
run ci_gate_skip
run contracts_feature_tests_short
run rust_ci_gate_short
run rust_e2e_gate_skip
else
run main
run release
if is_true contracts_changed; then
run contracts_feature_tests
else
run contracts_feature_tests_short
fi
if is_true rust_changes_detected; then
run rust_ci
run rust_e2e_ci
else
run rust_ci_gate_short
run rust_e2e_gate_skip
fi
fi

# 2. Merge queue (pre-merge validation)
# Runs when GitHub merge queue picks up the PR.
# Full contract tests, path-gated rust/docs.
# ---------------------------------------------------------
elif [[ "${BRANCH}" =~ ^gh-readonly-queue/ ]]; then
run main
run release
run contracts_feature_tests
if is_true rust_changes_detected; then
run rust_ci
run rust_e2e_ci
else
run rust_ci_gate_short
run rust_e2e_gate_skip
fi

# 3. After merge (develop push)
# Runs after the merge queue completes and pushes to develop.
# Adds expensive post-merge jobs: fault proofs, kontrol, prestate publishing.
# ---------------------------------------------------------
elif [[ "${BRANCH}" == "develop" ]]; then
run main
run release
run publish_contract_artifacts
run develop_fault_proofs
run develop_kontrol_tests
run contracts_feature_tests
if is_true rust_changes_detected; then
run rust_ci
run rust_e2e_ci
run kona_publish_prestates
else
run rust_ci_gate_short
run rust_e2e_gate_skip
fi
fi
;;

# API triggers: dispatch flags select workflows
api)
run release
if is_true main_dispatch && [[ "$(param github-event-type)" == "__not_set__" ]]; then
run main contracts_feature_tests
fi
if is_true fault_proofs_dispatch; then run develop_fault_proofs; fi
if is_true kontrol_dispatch; then run develop_kontrol_tests; fi
if is_true cannon_full_test_dispatch; then run scheduled_cannon_full_tests; fi
if is_true reproducibility_dispatch; then run scheduled_preimage_reproducibility; fi
if is_true stale_check_dispatch; then run scheduled_stale_check; fi
if is_true heavy_fuzz_dispatch; then run scheduled_heavy_fuzz_tests; fi
if is_true publish_contract_artifacts_dispatch; then run publish_contract_artifacts; fi
if is_true l2_fork_test_dispatch; then run l2_fork_test; fi
if is_true rust_ci_dispatch; then run rust_ci; fi
if is_true rust_e2e_dispatch; then run rust_e2e_ci; fi
if [[ "$(param github-event-type)" == "pull_request" && "$(param github-event-action)" == "labeled" ]]; then
run close_issue
fi
;;
esac

# Params to forward to continuation configs (everything else is stripped)
finalize "c-default_docker_image,c-rust_base_image,c-base_image,c-github-event-base64,c-go-cache-version,c-publish_contract_artifacts_ref"
command: .circleci/scripts/compute-workflow-conditions.sh
# Deep-merges the 3 continuation YAML configs (main, rust-ci, rust-e2e)
# into /tmp/merged-config.yml using yq. Later files win on key conflicts.
# explode(.) resolves YAML anchors/aliases so the output is self-contained.
Expand Down
Loading
Loading