refactor(sequencer): drop the unread pre-gossip bucket hint - #180
Draft
spalladino wants to merge 1 commit into
Draft
spalladino wants to merge 1 commit into
spalladino wants to merge 1 commit into
Conversation
The bucket sequence the pre-gossip preflight resolved was threaded through the checkpoint broadcast result and never read: the pre-publication preflight resolves its own hint fresh before the send. Removing it also removes the fisherman-mode dummy that existed only to fill the field. Pre-gossip validation and publication-time resolution are unchanged.
spalladino
added this pull request to stack #188
September 12, 2026 04:52
spalladino
removed this pull request from stack #188
September 15, 2026 22:42
spalladino
added this pull request to stack #217
September 15, 2026 22:43
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.
The checkpoint proposal job resolved a live Inbox bucket sequence during its pre-gossip
preflight and carried it out of
proposeCheckpointon the broadcast result. Nothing everread it. By the time a checkpoint is actually published, attestation collection has taken
seconds and L1 has moved, so
preflightBeforePublicationre-runs the integrated header andInbox preflight and takes a fresh hint from that run; that fresh value is the one handed to
enqueueProposeCheckpoint. The pre-gossip value was therefore dead the moment it wasreturned.
This removes
bucketHintfromCheckpointProposalBroadcastand from the two places thatfilled it: the final return after broadcast, and the fisherman-mode early return, whose
bucketHint: 0nexisted only to satisfy the type.preflightWithinDeadline's result is nolonger captured at the pre-gossip call site, but its return type is unchanged — the
publication path still reads it.
Nothing about validation changes. The pre-gossip preflight still runs, still bounds itself
by the attestation deadline, and still aborts the slot on failure. The pre-publication
preflight still resolves its own hint and still abandons the slot when it comes back
undefined.
Evidence that the value was unread
CheckpointProposalBroadcasthas exactly two consumers in the tree:waitForAttestationsAndEnqueueSubmissionAsync, which destructures{ checkpoint, streamingState }, andgetSignedCommitteeAttestations, which destructures{ proposal, blockProposedAt }. A repo-wide grep forbucketHintreturns no read off a broadcastresult. The surviving occurrences are the separate
CheckpointProposalResultfield fed bypreflightBeforePublication, the publisher's ownproposeargument and encoded calldata,the automine sequencer's
completion.bucketSeq, the Rollup contract JSDoc, and testfixtures — all publication-side, all untouched.
Stack position
This is rung 17 of 25 in the Fast Inbox node stack, stacked on
spl/fi-s08-store-failure-diagnostics.Source
Reconstructs the bucket-hint and fisherman-return hunks of
5397c7d61f("refactor: dropunused streaming Inbox plumbing") from old PR #25440. The destination file still carried the
source's exact pre-image for all four hunks: N3b and N3c removed the bucket abstraction
everywhere except L1's own surface, and this hint sits on that surface, so none of it had
already been removed.
5397c7d61fis split four ways across this stack. Its archiver hunks landed earlier asFI-S10. Its range-reuse hunks in this same file — reusing the resolver's range when a
selection ends exactly on the resolved endpoint — are FI-S11 and are deliberately left
untouched here, including the neighbouring JSDoc paragraph they rewrite. Its
chain_state_override.tsoverride-type hunks and itsrollup_fixture_builder.nrfixturedeletion are deferred to the override-type and Noir-fixture cleanup and are not in this stack at all.
Validation
This is a behavior-preserving removal of a value nothing reads, so red/green in its usual
form does not apply; the repo's refactor rule asks for a passing pre-change baseline and an
identical result after. Measured on this branch before touching anything:
yarn workspace @aztec-labs/sequencer-client testgave 12 suites, 302 passed, 1 skipped,exit 0. After the change: 12 suites, 302 passed, 1 skipped, exit 0 — unchanged, as a
behavior-preserving rung requires.
yarn build,yarn formatandyarn lintare all clean fromyarn-project.No e2e suites were run; they are left to CI.