Skip to content

test: migrate benchmarks to pipelining setup#23647

Merged
PhilWindle merged 2 commits into
merge-train/spartanfrom
spl/migrate-benches
May 29, 2026
Merged

test: migrate benchmarks to pipelining setup#23647
PhilWindle merged 2 commits into
merge-train/spartanfrom
spl/migrate-benches

Conversation

@spalladino

Copy link
Copy Markdown
Contributor

Summary

  • Run build-block, node RPC, and tx stats benchmarks with PIPELINING_SETUP_OPTS.
  • Run client-flow benchmarks through the Automine setup via ClientFlowsBenchmark.
  • Advance fee-juice bridge setup with explicit debug mineBlock() when available so Automine can progress empty blocks.

Testing

  • yarn format end-to-end
  • yarn build
  • yarn lint end-to-end

@spalladino spalladino added ci-full Run all master checks. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure labels May 28, 2026
@PhilWindle PhilWindle enabled auto-merge (squash) May 29, 2026 08:19
@AztecBot

Copy link
Copy Markdown
Collaborator

Flakey Tests

🤖 says: This CI run detected 1 tests that failed, but were tolerated due to a .test_patterns.yml entry.

\033FLAKED\033 (8;;http://ci.aztec-labs.com/ca8e89c06f5aaa51�ca8e89c06f5aaa518;;�):  yarn-project/end-to-end/scripts/run_test.sh simple src/e2e_epochs/epochs_invalidate_block.parallel.test.ts "proposer invalidates multiple checkpoints" (555s) (code: 0) group:e2e-p2p-epoch-flakes

@PhilWindle PhilWindle merged commit 5683aa0 into merge-train/spartan May 29, 2026
14 checks passed
@PhilWindle PhilWindle deleted the spl/migrate-benches branch May 29, 2026 08:57
spalladino added a commit that referenced this pull request May 29, 2026
Proposer pipelining (build for slot+1, defer finalization to the next
slot, build on the locally-proposed parent checkpoint) is now the only
behavior of the production sequencer. Removes the SEQ_ENABLE_PROPOSER_PIPELINING
env var / enableProposerPipelining config and every isProposerPipeliningEnabled()
and pipeliningOffset() check, collapsing each to the pipelining path. The
EpochCache always applies PROPOSER_PIPELINING_SLOT_OFFSET.

The checkpoint timing model is consolidated to a single pipelined model
(StandardCheckpointTimingModel deleted; the pipelining selector removed from
createCheckpointTimingModel / calculateMaxBlocksPerSlot). Gossipsub
maxBlocksPerSlot rises accordingly, now consistent with the always-pipelining
sequencer.

The test-only AutomineSequencer is preserved: it is selected by the separate
useAutomineSequencer flag, publishes synchronously in-slot via sendRequests, and
keeps passing pipeliningEnabled: false to getPreviousCheckpointOutHashes (the one
retained parameter, with dedicated unit coverage).

Checks for whether a proposed checkpoint exists (hasProposedCheckpoint,
proposedCheckpointData) are kept.

BREAKING CHANGE: SEQ_ENABLE_PROPOSER_PIPELINING removed; pipelining is always on.

Also includes the benchmark pipelining-setup migration from #23647.
spalladino added a commit that referenced this pull request May 29, 2026
Proposer pipelining (build for slot+1, defer finalization to the next
slot, build on the locally-proposed parent checkpoint) is now the only
behavior of the production sequencer. Removes the SEQ_ENABLE_PROPOSER_PIPELINING
env var / enableProposerPipelining config and every isProposerPipeliningEnabled()
and pipeliningOffset() check, collapsing each to the pipelining path. The
EpochCache always applies PROPOSER_PIPELINING_SLOT_OFFSET.

The checkpoint timing model is consolidated to a single pipelined model
(StandardCheckpointTimingModel deleted; the pipelining selector removed from
createCheckpointTimingModel / calculateMaxBlocksPerSlot). Gossipsub
maxBlocksPerSlot rises accordingly, now consistent with the always-pipelining
sequencer.

The test-only AutomineSequencer is preserved: it is selected by the separate
useAutomineSequencer flag, publishes synchronously in-slot via sendRequests, and
keeps passing pipeliningEnabled: false to getPreviousCheckpointOutHashes (the one
retained parameter, with dedicated unit coverage).

Checks for whether a proposed checkpoint exists (hasProposedCheckpoint,
proposedCheckpointData) are kept.

BREAKING CHANGE: SEQ_ENABLE_PROPOSER_PIPELINING removed; pipelining is always on.

Also includes the benchmark pipelining-setup migration from #23647.
spalladino added a commit that referenced this pull request Jun 1, 2026
Proposer pipelining (build for slot+1, defer finalization to the next
slot, build on the locally-proposed parent checkpoint) is now the only
behavior of the production sequencer. Removes the SEQ_ENABLE_PROPOSER_PIPELINING
env var / enableProposerPipelining config and every isProposerPipeliningEnabled()
and pipeliningOffset() check, collapsing each to the pipelining path. The
EpochCache always applies PROPOSER_PIPELINING_SLOT_OFFSET.

The checkpoint timing model is consolidated to a single pipelined model
(StandardCheckpointTimingModel deleted; the pipelining selector removed from
createCheckpointTimingModel / calculateMaxBlocksPerSlot). Gossipsub
maxBlocksPerSlot rises accordingly, now consistent with the always-pipelining
sequencer.

The test-only AutomineSequencer is preserved: it is selected by the separate
useAutomineSequencer flag, publishes synchronously in-slot via sendRequests, and
keeps passing pipeliningEnabled: false to getPreviousCheckpointOutHashes (the one
retained parameter, with dedicated unit coverage).

Checks for whether a proposed checkpoint exists (hasProposedCheckpoint,
proposedCheckpointData) are kept.

BREAKING CHANGE: SEQ_ENABLE_PROPOSER_PIPELINING removed; pipelining is always on.

Also includes the benchmark pipelining-setup migration from #23647.
spalladino added a commit that referenced this pull request Jun 1, 2026
## Motivation

Proposer pipelining (the proposer builds for `slot + 1` while in `slot`,
defers checkpoint finalization to the next slot, and builds on the
locally-gossiped proposed parent checkpoint) was gated behind
`SEQ_ENABLE_PROPOSER_PIPELINING`. Production already runs with it on and
every non-trivial e2e suite opts in, so the dual on/off code path was
dead weight — a duplicated timing model and `if (isPipelining)` branches
scattered across the sequencer, validator, and p2p stack. This makes
pipelining the only behavior of the production sequencer and removes the
toggle.

## Approach

Removed the `enableProposerPipelining` config /
`SEQ_ENABLE_PROPOSER_PIPELINING` env var everywhere and dropped every
`isProposerPipeliningEnabled()` / `pipeliningOffset()` check, collapsing
each to the pipelining branch (the `EpochCache` now always applies
`PROPOSER_PIPELINING_SLOT_OFFSET`). The checkpoint timing model was
consolidated to a single pipelined model. The test-only
`AutomineSequencer` is preserved — it is selected by the separate
`useAutomineSequencer` flag, publishes synchronously in-slot, and is the
one remaining caller of the non-pipelined
`getPreviousCheckpointOutHashes` branch. Checks for whether a proposed
checkpoint exists (`hasProposedCheckpoint` / `proposedCheckpointData`)
are kept.

## Changes

- **stdlib**: deleted `pipelining-config.ts`; consolidated `timetable`
to a single `CheckpointTimingModel` (removed
`StandardCheckpointTimingModel` and the `pipelining` option from
`createCheckpointTimingModel` / `calculateMaxBlocksPerSlot`); kept the
`pipeliningEnabled` param on `getPreviousCheckpointOutHashes` for
automine, with new dedicated unit coverage.
- **foundation / archiver / sequencer-client / epoch-cache (config)**:
removed the env-var registry entry and the `PipelineConfig` merges.
- **epoch-cache**: removed `isProposerPipeliningEnabled()` /
`pipeliningOffset()`; `getTargetSlot` /
`getTargetEpochAndSlotInNextL1Slot` / `getTargetAndNextSlot` always
apply the offset.
- **sequencer-client**: collapsed the sequencer /
checkpoint-proposal-job / publisher branches to the pipelining path;
`SequencerTimetable` no longer takes a `pipelining` flag;
`AutomineSequencer` untouched (boundary comment added).
- **validator-client / p2p**: collapsed proposal-handler, p2p-client,
and clock-tolerance branches; deleted the orphaned
`waitForBlockSourceSync` and the now-dead `block_source_not_synced`
reason.
- **p2p gossipsub**: `maxBlocksPerSlot` now uses the pipelined timing
model (a higher value), consistent with the always-pipelining sequencer.
- **end-to-end (tests)**: dropped the flag from `PIPELINING_SETUP_OPTS`
/ `AUTOMINE_E2E_OPTS` and ~40 test sites; `setup.ts` allows empty
checkpoints unconditionally.
- **spartan / docs / aztec-up / docker-compose**: removed the env var
from infra, and added a migration note.
- Also includes the benchmark pipelining-setup migration cherry-picked
from #23647.

Note: `SEQ_ENABLE_PROPOSER_PIPELINING` is a breaking change for node
operators — see the migration note. Labeled `ci-no-fail-fast` to survey
the full suite.
danielntmd pushed a commit to danielntmd/aztec-packages that referenced this pull request Jun 4, 2026
BEGIN_COMMIT_OVERRIDE
test(e2e): unskip pipelining related e2e tests (AztecProtocol#23642)
fix(archiver): prune blocks without proposed checkpoint by end of build
slot (AztecProtocol#23606)
test: migrate benchmarks to pipelining setup (AztecProtocol#23647)
fix(p2p): fall back to archiver in BLOCK_TXS response validation
(AztecProtocol#23624)
docs(slashing): align operator and slasher docs with AZIP-7 (AztecProtocol#23494)
fix(p2p): do not penalize peers that signal a missing block with Fr.ZERO
(AztecProtocol#23672)
chore: adjust metrics deployment (AztecProtocol#23676)
fix(cheat-codes): warpL2TimeAtLeastBy advances relative to leading clock
(AztecProtocol#23675)
chore: tighten node pool sizes (AztecProtocol#23678)
chore: remove archival nodes (AztecProtocol#23630)
chore: merge blob sink duties into RPC node (AztecProtocol#23631)
fix: sync avm-transpiler Cargo.lock with noir submodule (AztecProtocol#23683)
fix(spartan): set validator lag env vars in tps-scenario (AztecProtocol#23684)
fix: make world-state hash queries reorg-aware to close getWorldState
race (AztecProtocol#23677)
fix: pin noir submodule to next's version on merge-train/spartan
(AztecProtocol#23690)
fix: ensure image ref is used by bench runner (AztecProtocol#23682)
fix(ci): retry aztec-nr nargo dependency clone on transient network
flake (AztecProtocol#23653)
chore: run one-off jobs on network nodes (AztecProtocol#23701)
fix: simulate proposals inside target slot (AztecProtocol#23692)
chore: smaller eth-devnet (AztecProtocol#23704)
chore: enable testnet autoscaling (AztecProtocol#23705)
feat(api)!: redesign node log retrieval API around tag-based queries
(AztecProtocol#23625)
fix(sequencer): set own proposed checkpoint locally instead of via p2p
loopback (AztecProtocol#23659)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-full Run all master checks. ci-no-fail-fast Sets NO_FAIL_FAST in the CI so the run is not aborted on the first failure

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants