Skip to content

chore(test-cli): check EIP reference versions up to Amsterdam - #3592

Merged
fselmo merged 5 commits into
ethereum:forks/amsterdamfrom
fselmo:chore/update-refspec-ci
Sep 16, 2026
Merged

fselmo merged 5 commits into
ethereum:forks/amsterdamfrom
fselmo:chore/update-refspec-ci

Conversation

@fselmo

@fselmo fselmo commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

Description

Every local check_eip_versions run and the CI collect job skipped all Amsterdam suites. This was leading to some bad hashes (commit sha instead of blob sha) passing by blindly. This updates the CI job to run these checks --until Amsterdam.

The only CI job, though, runs --collect-only and asserts a count floor. It never executes the version assertions, for any fork. A stale pin still won't fail CI after this... but any local checks would catch this. Perhaps this is something we should think about, but I think we may have had this at some point, posting to an issue? (I think this was before my time in STEEL), and it produced way too much noise? @danceratopz am I remembering this correctly?

Related Issues or PRs

N/A.

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

Screenshot 2026-09-15 at 11 21 10

@fselmo
fselmo requested a review from danceratopz September 15, 2026 17:21
@fselmo fselmo added C-chore Category: chore A-test-cli Area: execution_testing.cli labels Sep 15, 2026
@fselmo
fselmo marked this pull request as ready for review September 15, 2026 17:22
@codecov

codecov Bot commented Sep 15, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.44%. Comparing base (52161d9) to head (2bf8ee1).
⚠️ Report is 5 commits behind head on forks/amsterdam.

Additional details and impacted files
@@               Coverage Diff                @@
##           forks/amsterdam    #3592   +/-   ##
================================================
  Coverage            94.44%   94.44%           
================================================
  Files                  624      624           
  Lines                36928    36928           
  Branches              3326     3326           
================================================
  Hits                 34875    34875           
  Misses                1450     1450           
  Partials               603      603           
Flag Coverage Δ
unittests 94.44% <ø> (ø)

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.

@danceratopz danceratopz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks for catching this! Yes, in execution-spec-tests we had the Check EIP Versions action which ran weekly and generated these issues.

They became an annoyance. I think the main reason they were so annoying was the frequency of changes that weren't spec-bearing, so you would just create a pr to silence the action. Perhaps monthly would be a better tact, or, even better, update the CLI too to actually perform the change and create a PR instead of an issue. This could potentially trigger a rebase though if the hashes across the automated and other test pr both change (but not to the same hash); with this in mind, perhaps weekly is better after all.

Perhaps our multibranch (eips/*) world will protect us from too much noise if we only run it on the default development fork, but then it has less impact?

One comment below, but this is definitely and improvement for now! 🙂

Comment thread packages/testing/src/execution_testing/config/check_eip_versions.py Outdated
@danceratopz

danceratopz commented Sep 15, 2026

Copy link
Copy Markdown
Member

Perhaps monthly would be a better tact, or, even better, update the CLI too to actually perform the change and create a PR instead of an issue.

Yeah, this isn't a great idea if the changes are actually spec-bearing though! 😅 gn!

@fselmo

fselmo commented Sep 15, 2026

Copy link
Copy Markdown
Contributor Author

Most of our fork config is now set in the Justfile via latest_fork (except for this and our mkdocs flow), perhaps we can use default fill behavior in the CLI and then, if we ran it in CI, specify which fork to run until via that variable:

Took this as a one-source-of-truth suggestion and applied it bc I like it 😅. But I put the default in the checker plugin rather than the Justfile. A plain uv run check_eip_versions doesn't go through the Justfile, so a default there would still stop at the last deployed fork for anyone running the tool directly. The hard-coded UNTIL_FORK is gone though.

The plugin now defaults to every fork in the fork registry, including forks under development, so uv run check_eip_versions and just check-eip-versions-collect check the same range and nothing needs bumping when a fork is added. --fork and --until still work as before. As a side effect, --fork works again! lol. It used to error because the CLI always added --until and they would clash.

bonus: I also removed the "Automated Checks via GitHub Actions" docs section, which described a daily workflow that is nonexistent? 👀

will ask for re-review 👀

@fselmo
fselmo requested a review from danceratopz September 15, 2026 20:39
`pytest_collection_modifyitems` only inserted an `EIPSpecTestItem` for
items whose direct parent is a `Module`. Tests declared inside a class
have the class as their parent, so those modules' reference specs were
never checked at all.

Walk up the collection tree with `getparent()` instead. This recovers
three modules that declare a reference spec but were silently skipped:
`amsterdam/eip7976_increase_calldata_floor_cost` (two modules) and
`prague/eip7623_increase_calldata_cost`.
The help output only listed `--github-token`, so there was no indication
that collection can be narrowed to a directory or module, even though the
docs describe doing so.

`show_specific_help` builds its own parser, so add an optional positional
to it and enable it for `check_eip_versions`. The usage line now reads:

    usage: check_eip_versions [-h] [--github-token GITHUB_TOKEN]
                              [<test-path> ...]

@danceratopz danceratopz left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Thanks @fselmo! This is much nicer! I made two small follow-up commits directly to your branch, one fix for module collection and one CLI help output improvement.

About this:

The plugin now defaults to every fork in the fork registry, including forks under development, so uv run check_eip_versions and just check-eip-versions-collect check the same range and nothing needs bumping when a fork is added. --fork and --until still work as before. As a side effect, --fork works again! lol. It used to error because the CLI always added --until and they would clash.

I only realized this during the second review that while these flags do correspond to the fill behavior, they might not do what a user expects here (i.e., only check Amsterdam EIP versions if --fork=Amsterdam). They will limit the checks, but only to all tests until Amsterdam.

So if you really only want to check Amsterdam tests, you need a positional argument that specifies the test folder, just like for fill. I added this to the CLI help output in a commit directly to this branch to nudge users in the right direction.

While we dug deeper in the review, Claude noticed that some modules were ignored, so I had him fix this up (it's a two line fix). Hope you don't mind me pushing this upfront!

@fselmo

fselmo commented Sep 16, 2026

Copy link
Copy Markdown
Contributor Author

Thanks @danceratopz! No qualms at all with you pushing. I'm a big proponent if you've done the work locally with AI or what-have-you, then pushing it and reviewing / changing makes things go faster. If the work is already done, no need to comment it – just push and we can still discuss it.

I like the changes 👍🏼... I just refactored both tests here to be in the same file since they have some shared setup. Nothing else. Will merge when CI passes.

@fselmo
fselmo merged commit 7942da0 into ethereum:forks/amsterdam Sep 16, 2026
24 checks passed
@fselmo
fselmo deleted the chore/update-refspec-ci branch September 16, 2026 14:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-test-cli Area: execution_testing.cli C-chore Category: chore

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants