Skip to content

Firehose/fix lib finalized - #9

Closed
maoueh wants to merge 4 commits into
release/2.xfrom
firehose/fix-lib-finalized
Closed

Firehose/fix lib finalized#9
maoueh wants to merge 4 commits into
release/2.xfrom
firehose/fix-lib-finalized

Conversation

@maoueh

@maoueh maoueh commented Jul 21, 2026

Copy link
Copy Markdown

Re-creating PR for Advertise finalized head as LIB on engine-API path since its base branch was moved to release/2.x

The cloned OpFirehoseEngineValidator started the Firehose block tracer with
`finalized = None`, so live engine-API blocks carried no finalized reference and
downstream LIB (last irreversible block) never advanced.

Read the finalized head from the node provider via
`finalized_block_num_hash()` (adding a `BlockIdReader` bound) and pass it as the
block's `FinalizedBlockRef`, mirroring the reth fork's `runner.rs` ExEx path.
Cold builds took ~32m (no layer cache; maxperf LTO). Cache the cargo-chef
dependency layer across runs (type=gha) and use the fast-build profile for PR
builds, keeping maxperf for branch/tag releases. Mirrors build-images.yaml.
@sduchesneau

Copy link
Copy Markdown

@copilot resolve the merge conflicts in this pull request

Copilot AI commented Aug 19, 2026

Copy link
Copy Markdown

@copilot resolve the merge conflicts in this pull request

Resolved the merge conflicts in CHANGELOG.sf.md, .github/workflows/sf-release.yml, and rust/op-reth/crates/firehose/src/engine_validator.rs by merging release/2.x. The finalized-head fix in engine_validator.rs is preserved; the other two conflicts took the release/2.x changes (the newer v2.4.0-fh3.1 changelog entry placed above the v2.3.3-fh-1 entry, and the improved BUILD_PROFILE expression).

@sduchesneau

Copy link
Copy Markdown

@copilot resolve the merge conflicts in this pull request
I've merged the 2.4.2 from upstream

Copilot AI commented Aug 19, 2026

Copy link
Copy Markdown

@copilot resolve the merge conflicts in this pull request
I've merged the 2.4.2 from upstream

Merged release/2.x (including the v2.4.2 bump) in commit 4d38279. The only conflict was in the reth_provider import block in engine_validator.rs — kept BlockIdReader (required for our finalized_block_num_hash() call) and dropped the now-unused OverlayBuilder, otherwise taking the v2.4.2 import formatting.

@sduchesneau

Copy link
Copy Markdown

@maoueh got some concerns here:

  • FinalityStatus::is_empty() is last_finalized_block_number == 0, so a Some(genesis) finalized still takes the fallback.

Once real finality kicks in, LIB switches from block − 200 to the true finalized head. On a 2s-block L2 the fallback is ~400s behind, while L1 finality is ~768s (2 epochs) — so the true finalized is further back, and LIB would move backwards at that transition.

Does not matter to us much because we have FORCE_FINALITY_AFTER_BLOCKS=100 on arb-one in production.
Should we disable the "200" mechanism that lives in reth ?

@maoueh maoueh closed this Aug 19, 2026
@sduchesneau
sduchesneau deleted the firehose/fix-lib-finalized branch August 20, 2026 17:34
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.

3 participants