Skip to content

chore(ci): skip preferred_gossip_network e2e pending proper block-0 world-state fix#22706

Draft
AztecBot wants to merge 1 commit intomerge-train/spartanfrom
claudebox/fix-worldstate-block0-historical
Draft

chore(ci): skip preferred_gossip_network e2e pending proper block-0 world-state fix#22706
AztecBot wants to merge 1 commit intomerge-train/spartanfrom
claudebox/fix-worldstate-block0-historical

Conversation

@AztecBot
Copy link
Copy Markdown
Collaborator

Summary

Skip yarn-project/end-to-end/src/e2e_p2p/preferred_gossip_network.test.ts on merge-train/spartan to unblock CI while a proper fix for the underlying PXE-anchor-at-genesis vs advanced-world-state race is developed as a follow-up to #22679.

Why skip and not fix in this PR

The failure on run https://github.com/AztecProtocol/aztec-packages/actions/runs/24737258199 is the exact Proving public value inclusion failed scenario that #22679 intended to address, but the TS portion of that fix is logically incomplete.

In AztecNodeService.getWorldState(initialBlockHash), the merged code returns this.worldStateSynchronizer.getCommitted(). getCommitted() is backed by WorldStateRevision.empty() whose blockNumber is LATEST, so at the native layer revision.is_historical() is false and every tree op reads the current committed tip. Once the node commits block 1 while PXE still holds the initial-header anchor, the public-data witness is computed against the tip root but storage_read.nr:44 validates against the genesis root carried in the anchor header, so assert(is_leaf_in_tree, ...) fires.

#22679's PR description specifies the intended fix ("replace the initial-header early return with a block-number resolution to BlockNumber.ZERO that falls through to the standard snapshot + archive-root double-check"), which would rely on getSnapshot(0) actually working. But ContentAddressedIndexedTree::find_low_leaf and friends still throw "Unable to find low leaf for block 0", so getSnapshot(0) would crash instead of silently returning wrong data. Neither the shipped getCommitted() nor the documented getSnapshot(0) actually returns the genesis view when the node has advanced.

A proper fix likely needs one of: pre-seeding a block-0 historical snapshot at world-state init (using meta.initialRoot / meta.initialSize, the same data fork-at-0 already uses in cached_content_addressed_tree_store.hpp:1282-1285), exposing a cached fork-at-0 as a read view on NativeWorldStateService, or closing the race in PXE by refusing to proveTx while the anchor is at genesis and the node's l2BlockSource reports a higher tip. None of these are small changes, so skip-and-unblock is the right trade-off for the merge-train.

Regression window

The test started failing at 504c330c41 on merge-train/spartan. The proximate cause is #22535 (refactor(e2e): skip initial sequencer in p2p and epochs tests) which removed the setup-time block-1 wait that previously advanced every PXE's anchor past genesis before proving. Detailed CI-run timeline and relevant file pointers are in the gist.

Full analysis: https://gist.github.com/AztecBot/3746d9cdc497132bbc40ee48f74f1944

Follow-up

Once the world-state block-0 handling is properly fixed (tracked as a follow-up to #22679), revert the skip entry added here.

ClaudeBox log: https://claudebox.work/s/bc11878814db57b9?run=1

@AztecBot AztecBot added ci-draft Run CI on draft PRs. claudebox Owned by claudebox. it can push to this PR. labels Apr 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-draft Run CI on draft PRs. claudebox Owned by claudebox. it can push to this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant