Skip to content

fix(spec-tests): use the testing fork's blob schedule for BPO fixtures - #3633

Merged
spencer-tb merged 1 commit into
ethereum:forks/amsterdamfrom
danceratopz:fix-nightly-fill
Sep 22, 2026
Merged

spencer-tb merged 1 commit into
ethereum:forks/amsterdamfrom
danceratopz:fix-nightly-fill

Conversation

@danceratopz

@danceratopz danceratopz commented Sep 22, 2026 •

Copy link
Copy Markdown
Member

Description

Fix EELS validation of BPO blockchain fixtures by using the same blob schedule as the testing fork that filled them. This resolves all 48 failures in the nightly fill validation job, across BPO2ToBPO3AtTime15k and BPO3ToBPO4AtTime15k excess-blob-gas and reserve-price tests.

Enabling validation of previously excluded fork-transition fixtures exposed a pre-existing blob-schedule mismatch: the JSON loader used the spec modules' built-in blob parameters. The filler already overrides those parameters from the testing fork. For example, the BPO3 testing fork uses target/max 21/32 and update fraction 20609697, while the BPO3 spec copy retains BPO2's 14/21 and 11684671. This caused valid fixtures to fail with InvalidBlock or BlobGasLimitExceededError. The affected tests are marked slow, so the regular push/PR fill jobs exclude them and the nightly run exposed the mismatch.

Apply the testing fork's target, maximum and fee update fraction for the duration of each BPO fixture, including both sides of a transition and standalone BPO networks. Patch the derived target/max blob-gas constants as well, and restore all values afterward. Updating the existing modules preserves the header class identities used to carry excess blob gas across the transition.

Validation: freshly filled the exact 48 failing cases, then replayed the same fixtures with the pre-fix loader and this branch: 48 failed → 48 passed. The 39 targeted blob-schedule and fork-transition unit tests pass, including checks for derived constants, restoration and unchanged non-BPO forks. Ruff lint/format checks, mypy and Vulture pass for the changed files. The broader JSON-loader suite reports 106 passed, 2 skipped and one unrelated failure because geth is unavailable. Full just static also passes.

Related Issues or PRs

Checklist

  • Ran fast static checks to avoid CI fails, see Code Standards & Verifying Changes: just static
  • PR title has the form <type>(<area>): <title>, where <type> and <area> come from an appropriate C-<type>, respectively A-<area>, label. The title should match the target squash commit message.

Cute Animal Picture

Cat

…dule

The json loader ran fork-transition fixtures into BPO3 and BPO4 against
the spec's placeholder blob schedule, which is a copy of BPO2's, and
rejected 48 fixtures of the nightly fill on the excess blob gas check.

Patch the schedule the fixtures were filled with in place for the
duration of each test, for both ends of a transition, as the loader
already does for FORK_CRITERIA. A ForkCache clone cannot validate a
chain across a transition: calculate_excess_blob_gas recognises the
parent header by the previous fork's Header class, which a clone refers
to under another name.
@danceratopz danceratopz added C-bug Category: this is a bug, deviation, or other problem A-spec-tests Area: tests for specifications e.g. json_infra labels Sep 22, 2026
@codecov

codecov Bot commented Sep 22, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.49%. Comparing base (80354f6) to head (94aa397).
⚠️ Report is 1 commits behind head on forks/amsterdam.

Additional details and impacted files
@@               Coverage Diff                @@
##           forks/amsterdam    #3633   +/-   ##
================================================
  Coverage            94.49%   94.49%           
================================================
  Files                  624      624           
  Lines                36964    36964           
  Branches              3331     3331           
================================================
  Hits                 34930    34930           
  Misses                1435     1435           
  Partials               599      599           
Flag Coverage Δ
unittests 94.49% <ø> (ø)

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@spencer-tb spencer-tb left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@spencer-tb
spencer-tb merged commit 4b43084 into ethereum:forks/amsterdam Sep 22, 2026
22 checks passed
@danceratopz
danceratopz deleted the fix-nightly-fill branch September 22, 2026 15:20
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-spec-tests Area: tests for specifications e.g. json_infra C-bug Category: this is a bug, deviation, or other problem

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants