Skip to content

docs(sequencer-client): rewrite top-level and timing READMEs#23149

Merged
PhilWindle merged 3 commits into
merge-train/spartanfrom
palla/sequencer-readme-rewrite
May 13, 2026
Merged

docs(sequencer-client): rewrite top-level and timing READMEs#23149
PhilWindle merged 3 commits into
merge-train/spartanfrom
palla/sequencer-readme-rewrite

Conversation

@spalladino

Copy link
Copy Markdown
Contributor

Motivation

The top-level sequencer-client/README.md was 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-writer guidelines: slots / blocks / checkpoints, proposed vs checkpointed chain, an architecture diagram, the Sequencer work loop, CheckpointProposalJob lifecycle, per-block loop pseudocode, the SequencerPublisher Multicall3 bundling and sendRequestsAt semantics, events, configuration reference, and failure modes. Trimmed src/sequencer/README.md to cover only the pipelined timing model with formulas grounded in PipelinedCheckpointTimingModel and a corrected 72 s / 8 s walkthrough. Ran /codex for 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-txs handling, publisher preCheck semantics).

Changes

  • sequencer-client: Replaced README.md with 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.
  • sequencer-client (sequencer): Replaced src/sequencer/README.md with a pipelining-only timing model. Documents timeReservedAtEnd, maxNumberOfBlocks, per-state deadlines, proposer-vs-committee parallel timeline, and timing-variation handling.

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.
@spalladino spalladino marked this pull request as ready for review May 12, 2026 21:54
@PhilWindle PhilWindle merged commit 99e99fd into merge-train/spartan May 13, 2026
22 checks passed
@PhilWindle PhilWindle deleted the palla/sequencer-readme-rewrite branch May 13, 2026 14:46
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
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