Skip to content

Merge upstream changes#23

Open
pdobacz wants to merge 208 commits into
forks/monad_ninefrom
upstream
Open

Merge upstream changes#23
pdobacz wants to merge 208 commits into
forks/monad_ninefrom
upstream

Conversation

@pdobacz

@pdobacz pdobacz commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator

IMPORTANT: Merge with MERGE COMMIT!

This PR merges Mar 17th - Jun 9th range of upstream changes into forks/monad_nine, our default branch.

Carsons-Eels and others added 30 commits March 16, 2026 22:40
* (refactor): unify forgotten gas constants in spec

* refactor: GAS_STORAGE_UPDATE -> GAS_COLD_STORAGE_WRITE

* refactor: GAS_COLD_SLOAD -> GAS_COLD_STORAGE_ACCESS

* fix: CI issues from leftover refs
* feat(ci): dual-publish fixture releases to EELS and EEST.

- Create canonical draft release on EELS using `github.token`.
- Mirror to EEST with `tests-` prefix stripped and provenance banner.
- Find previous fixture tag for scoped auto-generated release notes.
- Add `permissions: contents: write` to the release job.
- Pass `github.ref_name` via `env:` bindings to prevent script injection.
- Add `--prerelease` to feature release workflow.

* fix(ci): use bash array for optional args to satisfy shellcheck.
…introduced by BALs (ethereum#2197)

* feat(tests): add hash chain test to test parallel execution benchs

* refactor: move test file to compute/scenario/

* refactor: clean up, address TODOs, parametrize more evenly

* feat(test): Add initial state root computation benchmark test for BALs

* refactor(test): use gas_cost as appropriately as we can for costs

* feat(test): think through more BAL benchmark tests

- test_prefetch_cold_storage: Cold SLOAD workload with sequential and
  hash-chain scattered access patterns. The scattered pattern is
  unpredictable without BAL but trivially prefetchable with one.
- test_coinbase_serialization: Disjoint contracts where coinbase fee
  accumulation is the only shared state. Implicit (fees) and explicit
  (CALL to coinbase) variants.
- test_deploy_then_interact: Deploy/call tx pairs in a single block.
  Independent pairs (parallelizable) and single-contract (serial)
  variants.
- test_mixed_dependency_graph: Interleaved groups of serial keccak
  chains. Group sizes 1/2/5 control available parallelism.

* refactor(test): clean up, DRY, and refactor

* fix(test): updates from comments

* refactor: move to agreed upon path for BAL benchmarks

* fix(benchmarks): add reference dummy

* fix(benchmarks): skip test in cases where gas limit is too low

* fix(benchmarks): make ruff happy

* fix(benchmarks): make mypy happy

---------

Co-authored-by: fselmo <fselmo2@gmail.com>
…2525)

Skip inclusion of the `ported_static` tests in the Test Case Reference; this caused a 6x increase in the time to generate docs.
- Pass BAL as RLP bytes through the T8N interface
- Convert to JSON on the testing framework side

This greatly simplifies the BAL T8N implementation and
reduces complexity for implementation in other clients.
It also gives us more control over the JSON serialization.
…onfig` (ethereum#2515)

* fix: chainid passed by user is used, not 1

* fix: ci

* fix(src): address PR review feedback for custom chain ID flow

Use DEFAULT_CHAIN_ID in pre-alloc groups, simplify chain ID reset in the
filler plugin, and remove the unused legacy_payload variable from the
extract_config regression test.

Co-authored-by: raxhvl <10168946+raxhvl@users.noreply.github.com>

* fix: ruff

* fix: felipe feedback

---------

Co-authored-by: raxhvl <10168946+raxhvl@users.noreply.github.com>
…-range runners (ethereum#2529)

* chore(ci): split `py3` job into 5 parallel fork-range runners

The `py3` job runs ~419 minutes of `fill` test time. Split it into
5 matrix runners using `--from`/`--until` flags, grouped by fork
duration from `.test_durations_py3`:

- `pre-cancun` (Frontier→Shanghai): ~61m
- `cancun`: ~72m
- `prague`: ~104m (bottleneck — `stCreateTest` outliers)
- `osaka`: ~86m
- `amsterdam`: ~97m

This replaces the single monolithic run with parallel execution.
Coverage reports are auto-merged by Codecov via the shared
`unittests` flag.

* chore(ci): include `ported_static` tests in `py3` job

Remove `--ignore=tests/ported_static` from `[testenv:py3]`. The
fork-range duration analysis already accounted for these tests,
so the grouping estimates remain valid.
…nt logs in test reports (ethereum#2476)

* chore(deps): bump ethereum-hive to latest release

No changes for single-test hive test/clients; this ethereum-hive release updates the name of the method and endpoint for registering tests agains a multi-test client, cf ethereum/hive-python-api#15.

* feat(test-consume): activate per-test result reporting for enginex tests
* feat: verify transaction status

* refactor: apply suggestion

* refactor: test gen logic

* fix: block out of index
Co-authored-by: danceratopz <danceratopz@gmail.com>
* feat(cli-evm-bytes): Detect repeating opcodes

* feat: add evm_bytes edge-case coverage and fix assembly formatting

Co-authored-by: raxhvl <10168946+raxhvl@users.noreply.github.com>

* fix: ruff

---------

Co-authored-by: Felix H <felix314159@users.noreply.github.com>
Co-authored-by: raxhvl <10168946+raxhvl@users.noreply.github.com>
…#2540)

* chore(test-fill): don't collect tests for unsupported forks

* chore(test-tests): update expected outcomes for excluded unsupported forks
…ereum#2541)

Prevents PytestAssertRewriteWarning caused by filler.py importing
pre_alloc before pytest can register it for assertion rewriting.
…ring (ethereum#2542)

* refactor(tests): merge opcode+jumpi_condition parametrize in test_clz_jump_operation

Filter `(JUMP, jumpi_condition=False)` at parametrize time instead of
skipping at runtime. JUMP ignores the condition operand, so this
combination is a duplicate of `(JUMP, jumpi_condition=True)`.

Removes 10 skipped tests per fork (30 total across fixture types).

* refactor(tests): merge calldata_size+non_zero_data parametrize in test_calldatacopy_from_call

Filter `(size=0, non_zero_data=True)` at parametrize time instead of
skipping at runtime. Non-zero data with zero-length calldata is
nonsensical.

Removes 4 skipped tests per fork (8 total across fixture types).

* chore(tests): improve skip reason messages in benchmark tests

- test_call_context: fix missing f-string prefix so min_gas and
  tx_gas_limit values are interpolated
- test_arithmetic: explain MOD chain length is data-dependent,
  incompatible with --fixed-opcode-count
- test_account_query: explain cold-account queries are gas-driven,
  not fixed-count
…rker to avoid runtime skips (ethereum#2543)

* feat(test-forks): add `filter_combinations` pytest marker

Add a collection-time marker that deselects parametrized test cases
based on cross-parameter predicates, replacing runtime `pytest.skip()`
calls for invalid parameter combinations.

- Run predicates in `pytest_collection_modifyitems` after all
  parametrize expansion is complete, so both covariant and regular
  parameters are visible uniformly.
- Report deselected items via `pytest_deselected` for accurate
  terminal counts.
- Print a per-function summary with reasons at default verbosity;
  expand to individual node IDs at `-vv`.
- Fail with `USAGE_ERROR` if a predicate eliminates every
  parametrization of a test function.

* refactor(tests): use `filter_combinations` in frontier create tests

- Replace runtime `pytest.skip()` with a `filter_combinations` marker
  that deselects non-CREATE opcodes paired with `transaction_create=True`
  at collection time.

* refactor(tests): use `filter_combinations` in EIP-7702 set-code tests

- Replace runtime `pytest.skip()` with `filter_combinations` markers
  that deselect call opcodes without a `value` kwarg when paired with
  nonzero value, in both `test_set_code_to_self_caller` and
  `test_set_code_call_set_code`.

* feat(test-forks): add pytester tests for `filter_combinations` marker

- Verify cross-parameter filtering with covariant and regular parametrize axes.
- Verify filtering with only regular parametrize axes.
- Verify no-op predicate keeps all combinations.
- Verify stacked markers apply AND logic.
- Verify predicate that empties a function exits with USAGE_ERROR.

* fix(test-forks): validate `filter_combinations` predicate is callable

- Assert that the first argument to `filter_combinations` is callable,
  exiting with `USAGE_ERROR` and the test node ID if not.

* refactor(test-forks): use Tuple for filter_stats type hint

- Change filter_stats from Dict[str, List[Any]] to
  Dict[str, Tuple[str, int, int]] for stronger typing.
…ods (ethereum#2442)

* refactor(tests): Remove block_number/timestamp parameters from fork methods

* chore(tests): Rest of the fixes

* chore(docs): Document transition fork special case

* fix(test-execute): Use `fork_at`

* fix(test-forks): Add properties to transition fork

* fix(test-tools): Fix generator

* fix(tests): Fix tests requiring transition forks

* fix(tests): Fix tests/osaka/eip7594_peerdas/test_max_blob_per_tx.py

* feat(test-hive): Automate ruleset generation

* feat(test-hive): Remove old ruleset

* feat(test-hive): comments

* fix: Review comments

Co-authored-by: felipe <fselmo2@gmail.com>

* fix(docs): Review comments

Co-authored-by: felipe <fselmo2@gmail.com>

---------

Co-authored-by: marioevz <marioevz@Marios-MacBook-Pro.local>
Co-authored-by: felipe <fselmo2@gmail.com>
chfast and others added 18 commits May 28, 2026 13:20
…2943)

* feat: nethermind state test added

* fix: i was lINTING again
… (EIP-7778) (ethereum#2949)

In test_multi_transaction_gas_accounting, a block whose included transaction
exceeds the remaining block gas was expected to fail only with the block-level
BlockException.GAS_USED_OVERFLOW. A client may legitimately report the same
condition at the transaction level: EELS raises GasUsedExceedsLimitError (an
InvalidTransaction subclass) when `tx.gas > gas_available`, and evmone reports
it as a rejected transaction (GAS_LIMIT_REACHED).

List both BlockException.GAS_USED_OVERFLOW and
TransactionException.GAS_ALLOWANCE_EXCEEDED as acceptable so either
categorization passes.
…wcase erigon statetest bug (ethereum#2951)

* feat: erigon support for 'consume direct'

* feat: add minimal test to showcase erigon statetest behavior differs from other clients
…b/) (ethereum#2962)

* chore: ignore local memory files (CLAUDE.local.md, .mb/, mb/)

These are local-only AI memory and notes files; ignore them so they do not show up as untracked in working trees.

* chore: exclude local memory files from codespell

Skip CLAUDE.local.md and the .mb/mb memory-bank dirs so codespell does not scan local-only AI memory and notes files (which may be present as symlinks).
Co-Authored-By: Claude <claude-opus-4-7>
Using not_valid_for(*forks, subsequent_forks=) validity marker.
@pdobacz pdobacz requested review from QEDK and mijovic as code owners June 11, 2026 13:46
@greptile-apps

greptile-apps Bot commented Jun 11, 2026

Copy link
Copy Markdown

Too many files changed for review. (3000 files found, 500 file limit)

@socket-security

socket-security Bot commented Jun 11, 2026

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updateddocc@​0.4.1 ⏵ 0.6.19910010010070
Updatedethereum-hive@​0.1.0a2 ⏵ 0.1.0a59910010010070
Updatedmypy@​1.17.0 ⏵ 1.20.075 +1100100100100
Addedijson@​3.5.0100100100100100
Updatedethereum-rlp@​0.1.5 ⏵ 0.1.6100 +1100100100100
Updatedethereum-types@​0.3.0 ⏵ 0.4.1100 +1100100100100

View full report

@pdobacz

pdobacz commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator Author

@greptile-apps, review only changes in commits following after the Merge commit

@pdobacz

pdobacz commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator Author

Ready to review

@pdobacz

pdobacz commented Jun 11, 2026

Copy link
Copy Markdown
Collaborator Author

@greptileai review only changes in commits following after the Merge remote-tracking branch 'upstream/forks/amsterdam' into upstream commit

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.