test(firehose): tracing-regression coverage for Base transactions - #20
Merged
maoueh merged 2 commits intoJul 28, 2026
Conversation
Wire base-firehose-tests onto the shared firehose-tracer-test (crates.io 5.3.0) framework — capture, block invariants, descriptor-driven JSON projection and golden — and add Base-specific coverage on top: - BaseFirehoseCapture: reth binding that installs the process-wide buffer-backed tracer so a test capturing a running node's FIRE output. - Docker-free prestate test asserting invariants + a projection golden. - base-system-tests firehose_b20: traces a real B-20 precompile transfer end to end (run with RUSTFLAGS="-C debug-assertions=off"). Also fix in-process consensus nodes in system tests sharing one checkpoint database ($HOME/.base/<chain id>/checkpoint.redb) — the sequencer and validator now each get their own temp dir, which was preventing every system-test stack from starting. Move firehose test notes into CLAUDE.md and drop the .dev todo plans.
billettc
approved these changes
Jul 28, 2026
…se-system-tests-for-firehose-tracer-b20-coverage # Conflicts: # CHANGELOG.sf.md # crates/execution/firehose-tests/tests/cases/nop_transfer/block.2099.binpb # crates/execution/firehose-tests/tests/cases/nop_transfer/block.2099.expected.txt # etc/systems/Cargo.toml # etc/systems/src/l2/in_process_consensus.rs
maoueh
deleted the
feature/explore-base-system-tests-for-firehose-tracer-b20-coverage
branch
July 28, 2026 15:48
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.
What
Adds Firehose tracing-regression coverage for Base transactions on top of the shared
firehose-tracer-testframework (crates.io5.3.0).Framework wiring
base-firehose-testsre-exports the chain-agnostic framework (capture, block invariants,descriptor-driven JSON projection, golden) and adds the Base bindings:
BaseFirehoseCapture::install— the reth binding that installs the process-widebuffer-backed tracer, so a test driving a real node captures the
FIRE BLOCKoutput itsfollower emits.
run_prestate— replays aprestate.jsonfixture through the tracer with no node.firehose-tracer/firehose-tracer-testpinned to crates.io5.3.0(the local dev-pathoverride is gone).
Tests
base-firehose-tests --test prestate: replaysnop_transfer, asserting theblock invariants and a
VolatilePolicy::none()JSON projection golden. Runs in the defaultworkspace test suite.
base-system-tests --test firehose_b20: boots a real L1 (Docker) + in-processL2 stack, traces a real B-20 precompile
transferend to end, and asserts the invariants plus aVolatilePolicy::live_node()projection golden. Manual / pre-release gate. Must run withRUSTFLAGS="-C debug-assertions=off"(reth'sdeferred_trie::wait_cloneddebug-asserts from aRayon worker — the same known issue the execution-node P2P sync test is
#[ignore]d for).Fix
base-system-testscould not start: the in-process sequencer and validator both defaulted to$HOME/.base/<chain id>/checkpoint.redband the second to open it failed withDatabase already open. Cannot acquire lock.Each consensus node now gets its own temp checkpointdirectory.
Housekeeping
CLAUDE.md; removed the.dev/todoplans.Verification
cargo fmt(nightly) +cargo clippyclean on the touched crates.base-firehose-testsgreen.firehose_b20verified green end-to-end on a real stack (generate + a fresh determinism re-run).