docs(sequencer-client): rewrite top-level and timing READMEs#23149
Merged
Conversation
Rewrite the sequencer-client package README to document the current multi-block-per-slot architecture and proposer pipelining flow, and trim the timing-model README down to the pipelined case only since non-pipelined scheduling is being removed.
PhilWindle
approved these changes
May 13, 2026
spalladino
added a commit
that referenced
this pull request
May 15, 2026
Second batch of e2e tests migrated under pipelining -- the ones that needed test-level or infrastructure-level adjustments. The global default still stays false; tests opt in explicitly via PIPELINING_SETUP_OPTS. Infrastructure changes the §2 tests depend on: - p2p dummy_service.ts: notifyOwnCheckpointProposal invokes the all-nodes callback synchronously, mirroring libp2p loopback. Without this the in-process e2e sequencer never sees its own proposal and the pipelined parent verification blocks indefinitely. - sequencer-publisher.ts: error log on publisher exhaustion now includes the underlying viem error and tried-addresses context. - sequencer.ts: B5 fix -- tryVoteWhenEscapeHatchOpen now takes targetSlot, signs the voter for targetSlot, and delays submission via sendRequestsAt(getTimestampForSlot(targetSlot)) under pipelining. Mirrors the existing tryVoteWhenSyncFails and CheckpointProposalJob patterns. Plus a refactor of canProposeAt simulation overrides via SimulationOverridesBuilder. - sequencer-client READMEs: rewritten to document the multi-block-per-slot pipelined architecture (was PR #23149 originally). - end-to-end bootstrap.sh / test_simple.sh: suite/Jest timeout bumps for pipelined cadence. - per-file const TIMEOUT bumps across the §2 tests. Per-suite test fixes follow §2 of the categorization in PR #23150. Test files that use base-class fixtures (BlacklistTokenContractTest, FeesTest, CrossChainMessagingTest, DeployTest, FullProverTest, EpochesTest, P2P fixtures) are migrated with their branch changes preserved but without adding explicit pipelining opt-in -- the base class is shared with other tests not in this batch and a blanket opt-in would over-migrate. They'll get explicit pipelining opt-in in follow-up PRs. §5 still-skipped tests are not part of this PR. They remain at base state.
rangozd
pushed a commit
to rangozd/aztec-packages
that referenced
this pull request
May 16, 2026
BEGIN_COMMIT_OVERRIDE fix(test): warp L1 forward when proposer scan hits EpochNotStable (AztecProtocol#22967) test(e2e): fail epochs tests on proposer-rollup-check-failed (AztecProtocol#22965) fix: grafana switch to aztec_status="proposed" (AztecProtocol#22978) chore: update benchmark scraper (AztecProtocol#22984) test(e2e): migrate simple epoch tests to pipelining (AztecProtocol#22973) chore: remove top-level yarn.lock (AztecProtocol#22987) refactor(archiver)!: unify L2BlockSource checkpoint lookups via query objects (AztecProtocol#22933) fix(sequencer): bounded sweep instead of event scan for governance proposal check (AztecProtocol#22989) fix(docs): allow webapp-tutorial yarn install to populate empty lockfile in CI (AztecProtocol#23000) test(e2e): enable pipelining in l1-reorgs and mbps redistribution tests (AztecProtocol#23009) fix(archiver): restore pending block height metric under pipelining (AztecProtocol#22994) chore(p2p): remove skipped validation result option (AztecProtocol#23034) refactor(p2p)!: remove slow tx collection flow (AztecProtocol#22878) chore(spartan): add next-net-clone environment config (AztecProtocol#22995) chore(sequencer): add context to proposer-rollup-check-failed logs (AztecProtocol#23071) test(e2e): wait for archiver sync before asserting pipelining (AztecProtocol#22997) refactor(node-rpc)!: remove deprecated AztecNode methods and L2BlockSource tip helpers (AztecProtocol#22934) feat(p2p): detect and track announce IP changes at runtime (AztecProtocol#22405) test: mark tx_stats_bench 10 TPS as flake-retryable on merge-train/spartan (AztecProtocol#23083) fix(sequencer): bind vote-only multicalls to target slot under pipelining (AztecProtocol#23090) feat(sequencer): build optimistically across pruning epoch boundary (AztecProtocol#23056) fix(sequencer): use chainTipsOverride.pending for log context (AztecProtocol#23098) test(e2e): relax post-boundary slot assertion in epochs_proof_at_boundary (AztecProtocol#23108) fix(bb-prover): pool long-lived bb verifier processes instead of spawning per-call (AztecProtocol#23093) fix(sequencer): anchor fee asset price modifier to predicted parent (AztecProtocol#23113) chore: error log when L1 head timestamp drifts (AztecProtocol#22947) fix(sequencer): override full parent checkpoint cell in pipelined simulation (AztecProtocol#23073) test(e2e): enable pipelining on missed l1 slot test (AztecProtocol#23068) fix: more robust metrics reporting in IRM monitor (AztecProtocol#23038) fix: preserve LMDB slashing protection (AztecProtocol#23145) test(e2e): enable pipelining on p2p tests (AztecProtocol#23070) fix(archiver): move L2 tips cache refresh out of write transactions (AztecProtocol#23110) test(e2e): fix data_withholding_slash flake by freezing L1 across restart (AztecProtocol#23162) fix(validator): include proposed checkpoint out-hashes when validating checkpoint proposals (AztecProtocol#23119) refactor(config): drop nested config option, flatten l1Contracts (AztecProtocol#23143) test(e2e): bump bash TIMEOUT for e2e_p2p/add_rollup to match jest 20m (AztecProtocol#23177) fix(p2p): chunk archive of mined txs on block finalization (A-969) (AztecProtocol#23085) fix(p2p): stream tx pool hydration to bound startup memory (A-968) (AztecProtocol#23086) chore: remove orphan --archiver flag usages from start invocations (AztecProtocol#23186) feat(ci): daily merge-train/spartan stale-PR notifier (AztecProtocol#23189) fix: preserve contract artifact permissions (AztecProtocol#23174) fix(ci3): accept slashes in /list/<path:key> for merge-train history (AztecProtocol#23160) feat(ci): route merge-train/spartan flake notifications to #team-alpha-ci (AztecProtocol#23219) fix(cheat-codes): wait for post-warp L2 block in warpL2TimeAtLeastTo (AztecProtocol#23213) feat: slash attesters signing over bad checkpoints (AztecProtocol#23180) refactor(prover-client): split orchestrator into sub-tree + top-tree pair (AztecProtocol#22996) fix(srs): retry transient CRS HTTP downloads with exponential backoff (AztecProtocol#23244) refactor(p2p): remove old reqresp mode (AztecProtocol#23158) docs(sequencer-client): rewrite top-level and timing READMEs (AztecProtocol#23149) fix(aztec-node): include upcoming checkpoint's L1 to L2 messages in simulatePublicCalls (AztecProtocol#23163) END_COMMIT_OVERRIDE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
The top-level
sequencer-client/README.mdwas years out of date — it still referred to single-block-per-slot building and made no mention of proposer pipelining or the multi-block checkpoint model. The timing-model README still documented both pipelined and non-pipelined scheduling even though the non-pipelined mode is about to be removed. New contributors (human or AI) lacked the context they need to make changes to block building.Approach
Rewrote the top-level README from scratch following the package's
readme-writerguidelines: slots / blocks / checkpoints, proposed vs checkpointed chain, an architecture diagram, theSequencerwork loop,CheckpointProposalJoblifecycle, per-block loop pseudocode, theSequencerPublisherMulticall3 bundling andsendRequestsAtsemantics, events, configuration reference, and failure modes. Trimmedsrc/sequencer/README.mdto cover only the pipelined timing model with formulas grounded inPipelinedCheckpointTimingModeland a corrected 72 s / 8 s walkthrough. Ran/codexfor a critical review and fixed all flagged issues (last-sub-slot-is-not-cooldown, event-emit timing, config env-var names, attestation-deadline nuance,insufficient-valid-txshandling, publisherpreChecksemantics).Changes
README.mdwith an architecture-first rewrite covering pipelining (build slot vs target slot, depth bound of 2, parent-invalidation discard), the per-slot job lifecycle, the publisher's Multicall3 flow, and the full config reference.src/sequencer/README.mdwith a pipelining-only timing model. DocumentstimeReservedAtEnd,maxNumberOfBlocks, per-state deadlines, proposer-vs-committee parallel timeline, and timing-variation handling.