Skip to content

refactor(sequencer): drop the unread pre-gossip bucket hint - #180

Draft
spalladino wants to merge 1 commit into
spl/fi-s08-store-failure-diagnosticsfrom
spl/fi-s09-drop-bucket-hint
Draft

spalladino wants to merge 1 commit into
spl/fi-s08-store-failure-diagnosticsfrom
spl/fi-s09-drop-bucket-hint

Conversation

@spalladino

@spalladino spalladino commented Sep 12, 2026

Copy link
Copy Markdown
Collaborator

The checkpoint proposal job resolved a live Inbox bucket sequence during its pre-gossip
preflight and carried it out of proposeCheckpoint on the broadcast result. Nothing ever
read it. By the time a checkpoint is actually published, attestation collection has taken
seconds and L1 has moved, so preflightBeforePublication re-runs the integrated header and
Inbox 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 was
returned.

This removes bucketHint from CheckpointProposalBroadcast and from the two places that
filled it: the final return after broadcast, and the fisherman-mode early return, whose
bucketHint: 0n existed only to satisfy the type. preflightWithinDeadline's result is no
longer 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

CheckpointProposalBroadcast has exactly two consumers in the tree:
waitForAttestationsAndEnqueueSubmissionAsync, which destructures { checkpoint, streamingState }, and getSignedCommitteeAttestations, which destructures { proposal, blockProposedAt }. A repo-wide grep for bucketHint returns no read off a broadcast
result. The surviving occurrences are the separate CheckpointProposalResult field fed by
preflightBeforePublication, the publisher's own propose argument and encoded calldata,
the automine sequencer's completion.bucketSeq, the Rollup contract JSDoc, and test
fixtures — 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: drop
unused 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.

5397c7d61f is split four ways across this stack. Its archiver hunks landed earlier as
FI-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.ts override-type hunks and its rollup_fixture_builder.nr fixture
deletion 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 test gave 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 format and yarn lint are all clean from yarn-project.

No e2e suites were run; they are left to CI.

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
spalladino added this pull request to stack #188 September 12, 2026 04:52
@spalladino spalladino added the ci-draft Run CI on this draft PR label Sep 12, 2026
@spalladino
spalladino removed this pull request from stack #188 September 15, 2026 22:42
@spalladino
spalladino added this pull request to stack #217 September 15, 2026 22:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-draft Run CI on this draft PR

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant