Repository navigation
fix(spec-tests): use the testing fork's blob schedule for BPO fixtures - #3633
Merged
spencer-tb merged 1 commit intoSep 22, 2026
Merged
Conversation
…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.
Codecov Report✅ All modified and coverable lines are covered by tests. 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
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
2 tasks done
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.
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
BPO2ToBPO3AtTime15kandBPO3ToBPO4AtTime15kexcess-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
InvalidBlockorBlobGasLimitExceededError. The affected tests are markedslow, 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
gethis unavailable. Fulljust staticalso passes.Related Issues or PRs
Checklist
just static<type>(<area>): <title>, where<type>and<area>come from an appropriateC-<type>, respectivelyA-<area>, label. The title should match the target squash commit message.Cute Animal Picture