Skip to content

test(e2e): migrate more e2e suites to proposer pipelining#23482

Merged
PhilWindle merged 6 commits into
merge-train/spartanfrom
palla/e2e-pipelining-stragglers
May 22, 2026
Merged

test(e2e): migrate more e2e suites to proposer pipelining#23482
PhilWindle merged 6 commits into
merge-train/spartanfrom
palla/e2e-pipelining-stragglers

Conversation

@spalladino

@spalladino spalladino commented May 21, 2026

Copy link
Copy Markdown
Contributor

Migrates more e2e suites onto PIPELINING_SETUP_OPTS (or inline enableProposerPipelining: true for tests that build their own config). Excludes docker-compose-only composed tests (e2e_cheat_codes, e2e_local_network_example, e2e_token_bridge_tutorial_test) and integration_proof_verification for now.

Migrates the §8a "genuinely un-migrated" e2e suites onto PIPELINING_SETUP_OPTS
where the test actually enables pipelining. Excludes docker-compose-only
composed tests (e2e_cheat_codes, e2e_local_network_example,
e2e_token_bridge_tutorial_test) and integration_proof_verification, which
either need separate compose env-var work or have no sequencer/prover
pipelining surface.

Suites migrated:
- e2e_cross_chain_messaging: l1_to_l2, l2_to_l1, token_bridge_{failure_cases,
  private, public}; CrossChainMessagingTest.setup(opts) added.
- e2e_fees: account_init, fee_juice_payments, public_payments,
  sponsored_payments via FeesTest.setup(opts).
- e2e_prover: client, full; FullProverTest.setup(opts) added; TIMEOUT
  branches on REAL_PROOFS (15min fake, 45min real).
- e2e_p2p: fee_asset_price_oracle_gossip, reqresp, reqresp_no_handshake
  (inline enableProposerPipelining + inboxLag + slot offset on
  getProposerIndexes).
- composed: e2e_persistence (PIPELINING_SETUP_OPTS into all 7 setup()
  calls), uniswap_trade_on_l1_from_l2 (via shared/uniswap_l1_l2.ts).
- composed/web3signer/e2e_multi_validator_node_key_store: opted into
  PIPELINING_SETUP_OPTS with aztecEpochDuration=8 and
  aztecProofSubmissionEpochs=4 to keep the proven-wait under the 10min
  jest budget; B2 fix is already on merge-train/spartan via the squashed
  PR #23165 (a7a0d8c).
- Standalone: e2e_fee_asset_price_oracle, e2e_multi_eoa (rotation test
  it.skip with sharpened TODO — pipelining has no same-proposal-retry
  semantic), e2e_multiple_blobs, e2e_simple, e2e_snapshot_sync,
  e2e_synching, e2e_sequencer/reload_keystore.

Files modified: 28. All within yarn-project/end-to-end/src/. No
source-code changes.
@spalladino spalladino changed the title test(e2e): migrate remaining straggler suites to proposer pipelining test(e2e): migrate more e2e suites to proposer pipelining May 22, 2026
…lic}

The migration commit added jest.setTimeout(...) inside the describe body
but didn't add the import — token_bridge_private failed at suite-load with
ReferenceError: jest is not defined. Matches the pattern already in
l2_to_l1.test.ts.
…eckpointed chain

Under pipelining, publisher #1's mocked silent-drop in slot N invalidates
the proposed chain (parent-of-pipelined-child verification fails for slot
N+1), and the resulting archiver prune + world-state reorg used to drop
the wallet's in-flight tx from the mempool before slot N+2's publisher #2
could mine it.

Anchoring the PXE to the checkpointed chain (syncChainTip: 'checkpointed')
keeps the wallet's anchor block on the last sealed-on-L1 checkpoint, which
predates the discarded proposed chain. The mempool re-validation finds the
anchor still present, the tx stays, and slot N+2's rotation publishes it.

Verified locally: 1/1 passes in 72.5s with two rotation cycles
(publisher A blocked → B fallback; B blocked → C fallback).
CI hit a propose_action_not_successful → Reorg/Chain pruned to block 0
cascade on slot 12. The cascade dropped the wallet's in-flight tx via
handlePrunedBlocks (Block header not found) with the canonical Tx
dropped by P2P node thrown out of waitForTx.

Same family as the e2e_multi_eoa rotation case (commit 55ee51b):
proposed-chain invalidation kills the wallet tx because the PXE
anchored to a proposed-but-not-yet-checkpointed block. Anchoring to
the checkpointed chain leaves the wallet's anchor on the last sealed
L1 checkpoint, which survives the prune.

Threads pxeOpts: Partial<PXEConfig> through CrossChainMessagingTest
(4th constructor arg, 2nd setup() arg) so opt-in is per-test. Verified
locally: 1 passed / 3 skipped in 389.83s, no Tx dropped, no Chain
pruned to block 0, only benign trim-the-pipeline prunes back to the
last sealed block.
@spalladino spalladino force-pushed the palla/e2e-pipelining-stragglers branch from 14547fe to 60a0bbb Compare May 22, 2026 13:02
@PhilWindle PhilWindle enabled auto-merge (squash) May 22, 2026 14:21
@PhilWindle PhilWindle disabled auto-merge May 22, 2026 14:51
@PhilWindle PhilWindle merged commit 8211880 into merge-train/spartan May 22, 2026
17 checks passed
@PhilWindle PhilWindle deleted the palla/e2e-pipelining-stragglers branch May 22, 2026 14:51
danielntmd pushed a commit to danielntmd/aztec-packages that referenced this pull request Jun 4, 2026
BEGIN_COMMIT_OVERRIDE
refactor(p2p): merge FastTxCollection into TxCollection with sequential
pipeline (AztecProtocol#23245)
refactor(publisher): bundle-level simulate; drop per-action enqueue sims
(AztecProtocol#23165)
refactor(stdlib): remove deprecated RevertCode/TxExecutionResult aliases
(AztecProtocol#23249)
test(e2e): fix race in 'proposer invalidates multiple checkpoints'
(AztecProtocol#23259)
fix: clean up old jobs regardless of pending status (AztecProtocol#23260)
refactor(p2p): remove unused sendBatchRequest (AztecProtocol#23273)
chore(p2p): remove proposal_tx_collector leftovers (AztecProtocol#23276)
feat: slash truncated checkpoint proposals (AztecProtocol#23250)
refactor: remove unused map in attestation pool (AztecProtocol#23284)
chore(p2p): assert last block in checkpoint proposal is correct (AztecProtocol#23274)
refactor(l1-tx-utils): use DateProvider for fail-fast timeout check
(AztecProtocol#23257)
feat(sandbox): support proposer pipelining in local network (AztecProtocol#23277)
test(e2e): fix race in broadcasted_invalid_block_proposal_slash under
pipelining (AztecProtocol#23302)
fix(archiver): atomic getter for L2 tips (AztecProtocol#23295)
fix(sequencer): use targetSlot in tryVoteWhenEscapeHatchOpen under
pipelining (AztecProtocol#23296)
fix(world-state): make fork close idempotent for pruned forks (AztecProtocol#23298)
test(e2e): migrate passing tests to proposer pipelining (AztecProtocol#23275)
chore: update dashboard (AztecProtocol#23312)
chore: Revert "feat(sandbox): support proposer pipelining in local
network" (AztecProtocol#23313)
test: slash on bad attestation (AztecProtocol#23184)
feat(slasher): per-slot data-withholding watcher (A-523, A-525) (AztecProtocol#23116)
test(e2e): enable pipelining on e2e debug trace (AztecProtocol#23301)
test(e2e): enable pipelining on l1-to-l2 test (AztecProtocol#23300)
test(e2e): switch fee_settings to organic fee bumps under pipelining
(AztecProtocol#23303)
fix(ci): retry sqlite3mc-wasm download on transient DNS/TLS failures
(AztecProtocol#23333)
test(e2e): wait for real oracle rotation in fee_settings inflate helper
(AztecProtocol#23334)
test(e2e): anchor e2e_amm PXE to checkpointed tip under pipelining
(AztecProtocol#23336)
fix(spartan-bench): tolerate older node images in SlasherConfig schema
(AztecProtocol#23351)
fix: interrupt prover jobs in stop (AztecProtocol#23358)
test(e2e): enable pipelining on bot, fees, and avm simulator tests
(AztecProtocol#23329)
feat(sentinel): end-of-epoch evaluation with re-execution outcomes
(AztecProtocol#23286)
feat: slash for invalid checkpoint proposals (AztecProtocol#23270)
fix: fork closure in epoch proving jobs (AztecProtocol#23390)
fix(slasher): anchor watcher scans at archiver synced L2 slot (AztecProtocol#23394)
fix: avoid npm uplink for aztec-up local publishes (AztecProtocol#23396)
test(e2e): ignore benign 'Insufficient valid txs' block-build-failed in
epochs tests (AztecProtocol#23424)
chore: refactor weekly proving test wait (AztecProtocol#23395)
refactor: add fifo set (AztecProtocol#23271)
feat(sandbox): support proposer pipelining in local network (AztecProtocol#23327)
fix(p2p): validate BLOCK_TXS in BatchTxRequester (AztecProtocol#23371)
chore(p2p): simplify IBatchRequestTxValidator (AztecProtocol#23373)
feat(sequencer): AutomineSequencer for single-sequencer e2e tests
(AztecProtocol#23354)
fix(prover): wait for previous epoch to be proven (AztecProtocol#23458)
chore: collocate provers (AztecProtocol#23439)
chore: rm staging-ignition (AztecProtocol#23440)
chore: rm unused networks (AztecProtocol#23441)
test(e2e): migrate block_building, multi_validator_node,
publisher_funding, invalid_checkpoint_proposal to pipelining (AztecProtocol#23414)
fix(archiver): reconcile local blocks with L1 checkpoints by block
number (AztecProtocol#23461)
feat: Updated slash conditions on block proposals (AztecProtocol#23466)
test(e2e): migrate HA full test to pipelining (AztecProtocol#23463)
chore: update resource profiles (AztecProtocol#23442)
chore: update debug log levels (AztecProtocol#23456)
test: fix flaky sentinel_status_slash by asserting the fault on the
checkpoint slot (AztecProtocol#23483)
feat(slasher): slash checkpoint equivocation between P2P and L1 (A-980)
(AztecProtocol#23436)
refactor(slasher): rename ATTESTED_DESCENDANT_OF_INVALID ->
PROPOSED_DESCENDANT_OF_CHECKPOINT_WITH_INVALID_ATTESTATIONS (AztecProtocol#23468)
fix: reject block proposals in poisoned slots (AztecProtocol#23411)
fix: retry nargo dep + solc downloads to survive transient DNS drops
(AztecProtocol#23490)
fix: enrich json-rpc tracing (AztecProtocol#23412)
feat: add trace export controls (AztecProtocol#23413)
test(e2e): assert no equivocation offenses in HA full test (AztecProtocol#23496)
test: cover invalid checkpoint proposal slashing (AztecProtocol#23503)
test(e2e): migrate more e2e suites to proposer pipelining (AztecProtocol#23482)
test: flag e2e_slashing_attested_invalid_proposal as flake under
pipelining (AztecProtocol#23501)
test: flag e2e_p2p_duplicate_proposal_slash as flake under pipelining
(AztecProtocol#23515)
test(e2e): require cross-observer agreement on sentinel fault slot
(AztecProtocol#23513)
test: flag e2e_ha_full afterAll hook timeout as flake under pipelining
(AztecProtocol#23524)
fix(e2e): propagate l1ContractsArgs into node config so archiver matches
L1 (AztecProtocol#23514)
test: flag e2e_multi_validator_node_key_store P2P tx-dropped failure as
flake (AztecProtocol#23528)
test(cheat-codes): retry warpL2TimeAtLeastTo in-current-slot test on L1
race (AztecProtocol#23533)
test(e2e_ha_full): parallel HA peer node teardown with per-node deadline
(AztecProtocol#23539)
test: flag e2e_ha_full as flake under HA pipelining (AztecProtocol#23541)
test(ci): skip e2e_ha_full entirely on merge-train/spartan (AztecProtocol#23542)
test(ci): skip e2e_multi_validator_node_key_store entirely on
merge-train/spartan (AztecProtocol#23544)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants