Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
4fe6809
feat(bridge_ui): add opt-in aggkit backend mode + target-image support
arnaubennassar Jul 14, 2026
6bb85bc
fix(bridge_ui): use ecdsa-multisig consensus so L2->L1 certificates s…
arnaubennassar Jul 17, 2026
2bd2fad
feat(multi-l2): support a 2-L2 enclave on the develop aggkit image
arnaubennassar Aug 3, 2026
e299752
feat(autoclaim): add opt-in per-chain AutoClaim component (destinatio…
arnaubennassar Aug 3, 2026
c837bbb
feat(aggkit-proxy): add standalone aggkit-proxy additional service
arnaubennassar Aug 3, 2026
f06d662
feat(bridge_ui): rewire haproxy to aggkit-proxy + per-chain L2 RPC ro…
arnaubennassar Aug 3, 2026
b759521
docs: guide for 2-L2 AggKit setup with bridge UI + autoclaim
arnaubennassar Aug 3, 2026
98f2ddb
docs(aggkit-2l2): local-image build recipe, correct certificate-caden…
arnaubennassar Aug 3, 2026
c124850
feat(bridge-tracker): rc4 image bump, proxy+tracker components, fix v…
arnaubennassar Aug 7, 2026
8e1d41a
fix(aggkit): _get_agglayer_endpoint float-collapse gates rc4 to readrpc
arnaubennassar Aug 7, 2026
7df436b
fix(aggkit-proxy): thread L1 GlobalExitRoot address into tracker config
arnaubennassar Aug 7, 2026
88e22ea
docs(aggkit-2l2): drop local-image build recipe, document rc4 + bridg…
arnaubennassar Aug 7, 2026
5ff07e8
feat(bridge-tracker): rc5 image bump, adapt REST/tracker config comments
arnaubennassar Aug 10, 2026
127edf4
docs(aggkit-2l2): enclave-reset and tracker troubleshooting, fix dang…
arnaubennassar Aug 10, 2026
c31231d
docs(aggkit-2l2): fix broken smoke-test port derivation and status enum
arnaubennassar Aug 10, 2026
937f405
Merge branch 'main' into feat/aggkit-bridge-ui-backend
arnaubennassar Aug 10, 2026
fdf145c
fix(aggkit): dodge pre-existing typos-checker false positive in comment
arnaubennassar Aug 10, 2026
7915e40
feat(snapshot): anvil-aggkit devnet snapshot flavor + CI publish work…
arnaubennassar Aug 12, 2026
a164f12
fix(snapshot-devui): grant id-token/actions permissions for GCR auth
arnaubennassar Aug 12, 2026
d5dea87
fix(snapshot-verify): correct dev-ui config.json structural-check schema
arnaubennassar Aug 12, 2026
d69a6de
docs(snapshot): fix stale kurtosis-cdk-devnet- naming in compose comm…
arnaubennassar Aug 12, 2026
00ad85c
docs(snapshot-devui): record that GHCR packages came back public by d…
arnaubennassar Aug 12, 2026
a534dd3
test(anvil): S15 unit/regression tests for the anvil-L2 surface + CI …
arnaubennassar Aug 12, 2026
ac3b919
fix(test.yml): poll aggkit bridge sync-status instead of a single shot
arnaubennassar Aug 12, 2026
868eb0d
docs(snapshot): document the anvil-flavor devui snapshot (S16)
arnaubennassar Aug 12, 2026
d1aeb0a
docs(snapshot): correct auto-verify claim for the anvil-aggkit flavor
arnaubennassar Aug 12, 2026
6f15191
fix(anvil,snapshot,ci): adversarial-review fixes (S17)
arnaubennassar Aug 12, 2026
5689c40
feat(aggkit): merge the bridge component into the main aggkit contain…
arnaubennassar Aug 13, 2026
16c4fde
fix(ci,aggkit): wire anvil-rollup into the matrix, delete dead bridge…
arnaubennassar Aug 13, 2026
32a7ca6
fix(agglayer): migrate dead settlement config, bump to rc.8, expose l…
arnaubennassar Aug 13, 2026
82197a8
feat(snapshot): immutable per-service image tags + digest pinning (K4)
arnaubennassar Aug 13, 2026
44d0a4c
feat(snapshot): dev-ui profile gating, config-mount compose variant, …
arnaubennassar Aug 13, 2026
1c5544e
fix(snapshot): make the discovered-component healthcheck audit encode…
arnaubennassar Aug 13, 2026
b7a360b
fix(snapshot): close agglayer/aggkit claim-syncer startup race on the…
arnaubennassar Aug 13, 2026
d0296f9
docs(snapshot): de-dev-ui the anvil bundle docs, add overrides + reor…
arnaubennassar Aug 13, 2026
95367ca
test(snapshot,input-parser): regression tests for K1-K5's new surface…
arnaubennassar Aug 13, 2026
fe6c2b1
ci(snapshot-devui,test): K7b diagnostics -- dump aggkit/agglayer logs…
arnaubennassar Aug 13, 2026
093ead7
fix(snapshot): silence a shellcheck SC2317 false positive on apply-di…
arnaubennassar Aug 13, 2026
e84a1be
ci(snapshot-devui): K7b diag v2 -- dump full untruncated aggkit/aggla…
arnaubennassar Aug 13, 2026
902a54e
fix(snapshot): close the default-variant agglayer gRPC-bind race that…
arnaubennassar Aug 13, 2026
4032d5f
ci(snapshot-devui): remove the K7b temporary log-dump diagnostic step
arnaubennassar Aug 13, 2026
d10c8db
fix(ci): pin anvil-rollup fixture's agglayer image below the interop_…
arnaubennassar Aug 13, 2026
d410e3a
fix(ci): extend rc.5 agglayer pin to cdk-erigon rollup/validium fixtu…
arnaubennassar Aug 14, 2026
fc16045
feat(dev-ui): migrate generated config onto aggkitProxy, bump baked i…
arnaubennassar Aug 14, 2026
5b54641
fix(snapshot): make verification failures non-vacuous
arnaubennassar Aug 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
23 changes: 23 additions & 0 deletions .github/scripts/monitor.sh
Original file line number Diff line number Diff line change
Expand Up @@ -63,6 +63,11 @@ case "${sequencer_type}" in
"op-reth")
rpc_name="op-el-1-op-reth-op-node${deployment_suffix}"
;;
"anvil")
# The anvil L2 is its own RPC endpoint (no separate sequencer/rpc split,
# unlike cdk-erigon/op-reth). constants.L2_RPC_MAPPING[anvil] = "l2-anvil".
rpc_name="l2-anvil${deployment_suffix}"
;;
*)
log_error "Unsupported sequencer type: ${sequencer_type}"
exit 1
Expand All @@ -82,6 +87,9 @@ case "${sequencer_type}" in
"op-reth")
target=50 # blocks
;;
"anvil")
target=20 # blocks -- anvil self-produces one block per l2_anvil_block_time (default 1s)
;;
*)
log_error "Unsupported sequencer type: ${sequencer_type}"
exit 1
Expand Down Expand Up @@ -126,6 +134,18 @@ for step in $(seq 1 "${num_steps}"); do
exit 0
fi
;;
"anvil")
# anvil advances "finalized" itself (--slots-in-an-epoch), same
# latest/safe/finalized triple as op-reth (S3/S4 measured this).
LATEST_BLOCK=$(cast bn --rpc-url "${rpc_url}")
SAFE_BLOCK=$(cast bn safe --rpc-url "${rpc_url}")
FINALIZED_BLOCK=$(cast bn finalized --rpc-url "${rpc_url}")
log_info "Got blocks: latest=${LATEST_BLOCK}, safe=${SAFE_BLOCK}, finalized=${FINALIZED_BLOCK}"
if [[ "${LATEST_BLOCK}" -ge "${target}" && "${SAFE_BLOCK}" -ge "${target}" && "${FINALIZED_BLOCK}" -ge "${target}" ]]; then
log_info "Target blocks reached for all block types (latest, safe and finalized)"
exit 0
fi
;;
*)
log_error "Unsupported sequencer type: ${sequencer_type}"
exit 1
Expand Down Expand Up @@ -184,6 +204,9 @@ case "${consensus_contract_type}" in
"op-reth")
log_error "Target blocks have not been reached for all block types (latest, safe and finalized)"
;;
"anvil")
log_error "Target blocks have not been reached for all block types (latest, safe and finalized)"
;;
*)
log_error "Unsupported sequencer type: ${sequencer_type}"
exit 1
Expand Down
22 changes: 22 additions & 0 deletions .github/tests/cdk-erigon/rollup.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,25 @@ args:
sequencer_type: cdk-erigon
consensus_contract_type: rollup
zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12
# K9: pin agglayer below the DEFAULT_IMAGES 0.6.0-rc.8 default (K3). Upstream
# agglayer PR #1637 ("feat(rpc): disable the interop_sendTx method", closing
# issue #1632, first shipped in 0.6.0-rc.6) permanently and unconditionally
# disables the interop_sendTx JSON-RPC method (always returns error -10009
# "The interop_sendTx method is disabled" -- there is no config flag to
# re-enable it; the upstream commit explicitly deprecates the whole legacy
# flow). consensus_contract_type "rollup"/"cdk-validium" rely on that exact
# method: cdk-node's Aggregator (SettlementBackend = "agglayer" in
# static_files/chain/cdk-erigon/cdk-node/config.toml) relays each verified
# batch's proof-settlement tx through it, so with it disabled
# zkevm_verifiedBatchNumber never advances past 0 and
# .github/scripts/monitor.sh's "latest, virtual and verified" check times
# out -- confirmed via the cdk-node aggregator log repeating
# `failed to send tx to the agglayer: -10009 The interop_sendTx method is
# disabled` for the entire run. 0.6.0-rc.5 (the DEFAULT_IMAGES value before
# K3) still has the legacy flow and is confirmed working in CI (verified
# batches progressed normally to the target, see anvil-rollup.yml's
# identical pin, applied first in K7c). rc.5 already understands the
# [settlement.pessimistic-proof-tx-config] schema K3 introduced (present
# since agglayer's agglayer-settlement-service, PR #1393, well before rc.5),
# so this override does not require any config.toml template change.
agglayer_image: ghcr.io/agglayer/agglayer:0.6.0-rc.5
22 changes: 22 additions & 0 deletions .github/tests/cdk-erigon/validium.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,25 @@ args:
sequencer_type: cdk-erigon
consensus_contract_type: cdk-validium
zkevm_prover_image: hermeznetwork/zkevm-prover:v8.0.0-RC16-fork.12
# K9: pin agglayer below the DEFAULT_IMAGES 0.6.0-rc.8 default (K3). Upstream
# agglayer PR #1637 ("feat(rpc): disable the interop_sendTx method", closing
# issue #1632, first shipped in 0.6.0-rc.6) permanently and unconditionally
# disables the interop_sendTx JSON-RPC method (always returns error -10009
# "The interop_sendTx method is disabled" -- there is no config flag to
# re-enable it; the upstream commit explicitly deprecates the whole legacy
# flow). consensus_contract_type "rollup"/"cdk-validium" rely on that exact
# method: cdk-node's Aggregator (SettlementBackend = "agglayer" in
# static_files/chain/cdk-erigon/cdk-node/config.toml) relays each verified
# batch's proof-settlement tx through it, so with it disabled
# zkevm_verifiedBatchNumber never advances past 0 and
# .github/scripts/monitor.sh's "latest, virtual and verified" check times
# out -- confirmed via the cdk-node aggregator log repeating
# `failed to send tx to the agglayer: -10009 The interop_sendTx method is
# disabled` for the entire run. 0.6.0-rc.5 (the DEFAULT_IMAGES value before
# K3) still has the legacy flow and is confirmed working in CI (verified
# batches progressed normally to the target, see anvil-rollup.yml's
# identical pin, applied first in K7c). rc.5 already understands the
# [settlement.pessimistic-proof-tx-config] schema K3 introduced (present
# since agglayer's agglayer-settlement-service, PR #1393, well before rc.5),
# so this override does not require any config.toml template change.
agglayer_image: ghcr.io/agglayer/agglayer:0.6.0-rc.5
65 changes: 65 additions & 0 deletions .github/tests/other/anvil/anvil-l2-rollup.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# S15 (dev-ui-ci-snapshot plan): single-chain anvil-L2 CI fixture. Exercises
# sequencer_type: anvil end to end -- the new anvil L2 launcher path added in
# S3, extended by S4 (template branches), S4b (anvil_image v1.5.1 bump for
# certificate settlement) and S5. Wired into test.yml's run-with-anvil-l2 job
# so kurtosis-cdk's own CI covers the anvil-L2 bring-up on every PR, not just
# this plan's snapshot workflow.
#
# Modeled on params-aggkit-anvil-l2l2-run1.yml, minus agglayer_extra_rollups
# (single chain, no rollup 2) -- that pair is for the 2-L2 snapshot topology,
# this file is a standalone single `kurtosis run`.

deployment_stages:
deploy_op_succinct: false
# Legacy zkevm-bridge-service is not needed; the aggkit-001 process serves
# the bridge REST API itself (--components=...,bridge) unconditionally.
# See params-aggkit-anvil-l2l2-run1.yml for the same choice, and S15's
# evidence (04-agglayer-config-data.json / 05-zkevmbridge-config-data.json)
# for confirmation that the legacy bridge-service template ALSO renders
# cleanly for anvil now (S4 fixed it), in case a future step wants it on.
deploy_cdk_bridge_infra: false
# postgres-001 is otherwise deployed by default and unused by the anvil
# path (databases.star returns CENTRAL_ENV_DBS for anvil, which nothing
# reads when deploy_cdk_bridge_infra is false and sequencer_type is anvil).
deploy_databases: false

args:
# Anvil on both layers -- L1 AND its own L2.
l1_engine: anvil
# Deliberately NOT setting l1_rpc_url/l1_ws_url/l1_beacon_url: this job is
# the CI regression net for set_l1_client_args()'s anvil early-return. If
# that guard is ever removed, the L1 URLs get clobbered back to the
# ethereum-package service names and this job fails.
sequencer_type: anvil
# Mandatory for sequencer_type: anvil (args_sanity_check rule V1).
consensus_contract_type: ecdsa-multisig

aggkit_image: ghcr.io/agglayer/aggkit:0.11.0-rc5
# "autoclaim" so destination network 1 gets an AutoClaim claimer -- see
# aggkit_autoclaim_destinations below. "bridge" so this same process also
# serves the bridge REST API (port 5577) -- there is no longer a separate
# aggkit-001-bridge service.
aggkit_components: "aggsender,aggoracle,autoclaim,bridge"

# aggsender multisig committee: 1 validator, threshold 1.
use_agg_sender_validator: true
agg_sender_validator_total_number: 1
agg_sender_multisig_threshold: 1

# Off for determinism, same choice as the 2-L2 anvil params (no dedicated
# test-runner/bridge-spammer wiring for the anvil bridge topology yet --
# this job verifies bridge/GER bytecode and aggkit sync-status directly).
additional_services: []

l2_chain_id: 20201
l2_network_id: 1

aggkit_autoclaim_destinations: [1]
aggkit_autoclaim_bridge_urls:
- network_id: 1
bridge_url: "http://aggkit-001:5577"

# NOTE: deliberately NO optimism_package: block -- sequencer_type: anvil
# rejects one entirely (args_sanity_check rule V4: "sequencer_type 'anvil'
# does not use the optimism-package; remove the optimism_package block from
# your args file").
29 changes: 29 additions & 0 deletions .github/tests/other/anvil/anvil-rollup.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,32 @@
args:
l1_engine: anvil
# An anvil L1 cannot be combined with the default sequencer_type (op-reth):
# the optimism-package's op-node launcher unconditionally requires an
# `el_cl_genesis_data` artifact that only the ethereum-package L1 flow
# produces, and src/l1/anvil.star never creates one, so the run dies at
# Starlark validation time. args_sanity_check now rejects that combination
# with an explicit message; pin cdk-erigon here, which is the pairing this
# fixture was always meant to exercise.
sequencer_type: cdk-erigon
consensus_contract_type: rollup
# K7c: pin agglayer below the DEFAULT_IMAGES 0.6.0-rc.8 default (K3). Upstream
# agglayer PR #1637 ("feat(rpc): disable the interop_sendTx method", closing
# issue #1632, first shipped in 0.6.0-rc.6) permanently and unconditionally
# disables the interop_sendTx JSON-RPC method (always returns error -10009
# "The interop_sendTx method is disabled" -- there is no config flag to
# re-enable it; the upstream commit explicitly deprecates the whole legacy
# flow). consensus_contract_type "rollup"/"cdk-validium" rely on that exact
# method: cdk-node's Aggregator (SettlementBackend = "agglayer" in
# static_files/chain/cdk-erigon/cdk-node/config.toml) relays each verified
# batch's proof-settlement tx through it, so with it disabled
# zkevm_verifiedBatchNumber never advances past 0 and
# .github/scripts/monitor.sh's "latest, virtual and verified" check times
# out -- confirmed via the cdk-node aggregator log repeating
# `failed to send tx to the agglayer: -10009 The interop_sendTx method is
# disabled` for the entire run. 0.6.0-rc.5 (the DEFAULT_IMAGES value before
# K3) still has the legacy flow and is confirmed working in CI (verified
# batches progressed normally to the target). rc.5 already understands the
# [settlement.pessimistic-proof-tx-config] schema K3 introduced (present
# since agglayer's agglayer-settlement-service, PR #1393, well before rc.5),
# so this override does not require any config.toml template change.
agglayer_image: ghcr.io/agglayer/agglayer:0.6.0-rc.5
Loading
Loading