Skip to content

🤖 [claude] Firehose finality: read the parent's Parlia snapshot (resolver never engaged in fh3.1-2) - #6

Merged
Johnaverse merged 1 commit into
release/develop-fhfrom
fix/firehose-finality-parent-snapshot
Sep 9, 2026
Merged

Johnaverse merged 1 commit into
release/develop-fhfrom
fix/firehose-finality-parent-snapshot

Conversation

@Johnaverse

Copy link
Copy Markdown
Collaborator

Summary

Follow-up to #5. On the first canary (bsc-sfdm822, writing production one-blocks) 33/33 one-blocks carried LIB = block − 200: the resolver always returned None. Cause: the Firehose tracer starts before consensus validates the block's header, which is when the block's own Parlia snapshot is created, so snapshot(hash) did not exist yet. The safe fallback worked as designed (no wrong LIB possible), but the deterministic finality never engaged.

  • pinax-network/bnb-reth tag bnb-bf76323c-fh3.1-3: finalized_for_block now receives parent_hash too (engine call sites and ExEx runner pass header().parent_hash()).
  • Resolver keys on the parent's snapshot: snapshot(parent_hash).vote_data.source — complete at tracer start, identical on every node, on the block's own ancestry. LIB is one block staler than before (head−3 steady state), which is the conservative direction. None paths are debug-logged under bsc::firehose.
  • Pins/lock → fh3.1-3; CHANGELOG dev-049d306-fh3.1-3.

Test plan

  • CI green
  • Tag dev-049d306-fh3.1-3, bump eosn-sf-bsc4-test, deploy on bsc-sfdm822: x822 one-block LIB distance becomes a constant 3 (not 200), monotonic, and equal for identical blocks across readers once others run it

🤖 Created by Claude Code Fable 5.1 (effort: high)

🤖 Generated with Claude Code

https://claude.ai/code/session_01YHvxpuVpZfzefJgwgqjAzn

…r engaged)

The first canary showed every one-block with LIB = block - 200: the resolver
keyed the Parlia snapshot on the block's own hash, but the tracer starts before
consensus validates the header, which is when that snapshot is created, so it
always found None. Key on the parent instead (new parent_hash argument in
bnb-reth bnb-bf76323c-fh3.1-3): the parent's attestation source is complete by
then, identical on every node, on the block's ancestry, and one block staler
(head-3 steady state). Debug-log the None paths under target bsc::firehose.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01YHvxpuVpZfzefJgwgqjAzn
@Johnaverse
Johnaverse merged commit 34fd807 into release/develop-fh Sep 9, 2026
10 checks passed
@Johnaverse
Johnaverse deleted the fix/firehose-finality-parent-snapshot branch September 9, 2026 02:04
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.

1 participant