Skip to content

test(firehose): tracing-regression coverage for Base transactions - #20

Merged
maoueh merged 2 commits into
release/1.xfrom
feature/explore-base-system-tests-for-firehose-tracer-b20-coverage
Jul 28, 2026
Merged

test(firehose): tracing-regression coverage for Base transactions#20
maoueh merged 2 commits into
release/1.xfrom
feature/explore-base-system-tests-for-firehose-tracer-b20-coverage

Conversation

@maoueh

@maoueh maoueh commented Jul 28, 2026

Copy link
Copy Markdown

What

Adds Firehose tracing-regression coverage for Base transactions on top of the shared
firehose-tracer-test framework (crates.io 5.3.0).

Framework wiring

  • base-firehose-tests re-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-wide
      buffer-backed tracer, so a test driving a real node captures the FIRE BLOCK output its
      follower emits.
    • run_prestate — replays a prestate.json fixture through the tracer with no node.
  • firehose-tracer / firehose-tracer-test pinned to crates.io 5.3.0 (the local dev-path
    override is gone).

Tests

  • Docker-free base-firehose-tests --test prestate: replays nop_transfer, asserting the
    block invariants and a VolatilePolicy::none() JSON projection golden. Runs in the default
    workspace test suite.
  • Integration base-system-tests --test firehose_b20: boots a real L1 (Docker) + in-process
    L2 stack, traces a real B-20 precompile transfer end to end, and asserts the invariants plus a
    VolatilePolicy::live_node() projection golden. Manual / pre-release gate. Must run with
    RUSTFLAGS="-C debug-assertions=off" (reth's deferred_trie::wait_cloned debug-asserts from a
    Rayon worker — the same known issue the execution-node P2P sync test is #[ignore]d for).

Fix

base-system-tests could not start: the in-process sequencer and validator both defaulted to
$HOME/.base/<chain id>/checkpoint.redb and the second to open it failed with
Database already open. Cannot acquire lock. Each consensus node now gets its own temp checkpoint
directory.

Housekeeping

  • Firehose test notes moved into CLAUDE.md; removed the .dev/todo plans.

Verification

  • cargo fmt (nightly) + cargo clippy clean on the touched crates.
  • base-firehose-tests green.
  • firehose_b20 verified green end-to-end on a real stack (generate + a fresh determinism re-run).

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.
…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
maoueh merged commit 18304f9 into release/1.x Jul 28, 2026
3 checks passed
@maoueh
maoueh deleted the feature/explore-base-system-tests-for-firehose-tracer-b20-coverage branch July 28, 2026 15:48
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.

2 participants