You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Tracker for finalizing EELS specs and test coverage for all Amsterdam EL EIPs, targeting the first "mainnet-scheme" release that includes Amsterdam. Aiming to be ready for the first Glamsterdam testnet launch.
Baseline items for every EIP (listed per section below): reconcile the stale implementation tracker, refresh the reference-spec pin and review the EIP diff since pin, review test coverage and add missing tests, complete the testing checklist (markers + not-applicable/external-coverage files), execute mode tests sufficient and passing on the most recent devnet with mainnet-marked tests added, and spec tests passing on every client via consume engine and consume enginex.
[M] Review test coverage and add missing tests: chore(tests): improve EIP-2780 coverage, checklist, and ref-spec pin #3515; 771 combined fixture cases pass, including shared EIP-8037 creation-collision cases. No missed statements in the seven audited EELS functions; test-code coverage is 1,556/1,561 statements, with five helper fallback statements documented. Warming assertions verified by fault injection.
[S] Refresh ref-spec pin and review spec diff: the old pin 172188d was never in ethereum/EIPs; chore(tests): improve EIP-7708 coverage, checklist, and ref-spec pin #3220 pins f7230c46a743 (2026-07-10 "Move to Review", still the last commit to eip-7708.md). The diff since the old pin (CREATE/CREATE2 emission site, interop decisions, EIP-8246 burn-log removal, coinbase fee logs excluded) is covered by the suite and matches the EELS emit_transfer_log call sites. Blob-sha repin is in the final Status item.
[M] Review test coverage and add missing tests: chore(tests): improve EIP-7708 coverage, checklist, and ref-spec pin #3220 adds test_emission_point_fork_transition (CALL, CREATE and SELFDESTRUCT sites gated individually at activation) and test_create_endowment_mainnet. 40 tests, 165 fixture cases collect on the tip; all four emission sites plus the no-log arms (self-transfer, zero value, insufficient balance, failed create, reverts, collisions, coinbase fee) are covered. EELS emit_transfer_log has full line coverage; vm/__init__.py 99%, interpreter.py 92%.
[S] Complete testing checklist: 3/3 applicable items, 15 categories N/A (no opcode, precompile, transaction type, header field, gas or validity change), zero warnings. The template has no logs/receipts category, so this covers the general items only.
[M] Mainnet-marked tests and execute-mode coverage prepared: test_eip_mainnet.py covers the transaction, CALL, CREATE endowment and SELFDESTRUCT sites; 77 execute-mode cases collect. One test (coinbase transfer without priority fee) is execute-skipped because it needs a specific base fee.
[S] Reconcile tracker EIP-7778 Implementation Tracker: Block Gas Accounting without Refunds #1874: the merge-PR follow-ups listed on it are settled. Refund-transaction OOG, revert and subcall failure, the fork transition and the refund quotient are covered by feat(tests): Finalize EIP-7778 #3522; the refund cap binds in every case (one storage clear refunds 11,616 against a cap of 5,421), so the over-cap regime is exercised throughout; multi-authorization refunds are void since EIP-2780 removed the EIP-7702 refund and Amsterdam's only refund type is the storage clear. Open boxes there (coverage, checklist, mainnet, execute, hive) are covered below or in Status. Closeout PR: feat(tests): Finalize EIP-7778 #3522.
[S] Refresh ref-spec pin and review spec diff: feat(tests): Finalize EIP-7778 #3522 pins blob 4897aec9, the 2026-07-10 "Move to Review" text; the old pin ce17d00 was the 2026-01-28 text and the only change between them is the status line. EELS settle_transaction_gas matches: block execution gas is the pre-refund usage less state gas, floored by the calldata floor, and the header gas_used is the larger of the block's execution and state totals.
[M] Review test coverage and add missing tests: feat(tests): Finalize EIP-7778 #3522 rewrote the suite around RefundTransaction (all failure modes, all transaction types, calldata-floor regimes, trailing-transaction admission, fork transition). chore(tests): complete EIP-7778 checklist and add access-list arm to the calldata floor test #3616 adds an access-list arm to test_varying_calldata_costs, the missing EIP-7778 x EIP-7981 pair: the floor carries the access-list tokens and the intrinsic cost the per-entry charges, against post-refund block accounting. 11 tests, 242 fixture cases pass on --until=Amsterdam.
[M] Complete testing checklist: 17/17 with chore(tests): complete EIP-7778 checklist and add access-list arm to the calldata floor test #3616 (was 16/18; the optional second-client row is now N/A and leaves the denominator). EELS settle_transaction_gas and the block accumulation in fork.py have no missed statements; the header gas_used check is only reached under consume because fill builds the header from t8n output. Test code 404/412 statements, the eight misses are parametrization guards. Second client marked Optional.
[S] Refresh ref-spec pin and review spec diff: chore(tests): improve EIP-7843 coverage, checklist, and ref-spec pin #3221 pins c3bfd4ba41cf, the 2026-01-20 text; the only change since is the 2026-08-05 status line (Draft to Review). EELS matches: opcode 0x4b, BASE gas, U64 pushed from the header field through BlockEnvironment, no execution-layer validity rule on the value. Blob-sha repin is in the final Status item. The EIP's Engine API paragraph says engine_newPayloadV4; execution-apis Amsterdam defines engine_newPayloadV5 taking ExecutionPayloadV4 (the object, PayloadAttributesV4, engine_getPayloadV6 and engine_forkchoiceUpdatedV4 all match). Editorial fix: Update EIP-7843: align Engine API method names with execution-apis EIPs#12354; the fixtures follow execution-apis.
[M] Fork-transition boundary tests: test_slotnum_at_fork_transition, test_invalid_pre_fork_block_with_slot_number and test_invalid_post_fork_block_without_slot_number (chore(tests): improve EIP-7843 coverage, checklist, and ref-spec pin #3221), plus the engine-only spurious slotNumber payload test that catches clients dropping unknown JSON fields.
[M] Review test coverage and add missing tests: chore(tests): improve EIP-7843 coverage, checklist, and ref-spec pin #3221 added the stack-overflow boundary, all call contexts, set-code, initcode transaction and CREATE/CREATE2 contexts, the genesis header field and the transition cases, and fixed FixtureHeader.genesis ignoring the genesis environment's slot_number. 13 tests, 72 fixture cases collect on --until=Amsterdam. EELS: the instruction body, gas constant, header field and BlockEnvironment plumbing have no missed lines.
[S] Refresh ref-spec pin and review spec diff: feat(tests): EIP-7928 max nonce boundary check for BAL; update refspec #3482 repinned; the suite pins blob f834f000, the current 2026-09-09 text ("Amend storage-read gas-feasibility check"). Since the old pin aca88aa: no empty change sets (2026-06-01), EIP-7702 tracking reverted (2026-07-02), the SSTORE access-cost check (2026-07-04), Review (2026-07-07), recipient excluded on a runtime halt (2026-07-09), and the September amendment. EELS matches: feat(tests,specs): eip7928 extended coverage #3566 fixed index netting in block_access_lists.py and state_tracker.py, pinned from both ends by four cases; the recipient-halt rule is pinned by test_bal_7702_recipient_excluded_on_authorization_oog. Open spec PRs (EIPs#12347 retention window, EIPs#9873 draft note) are in the spec-PR list above; neither changes fixture behaviour.
[S] Refresh ref-spec pin and review spec diff: feat(tests): close out eip-7954 checklist #3546 pins blob 2e62d6a8, the current text. The only spec change since the 2026-05-21 "Raise contract code size to 64KiB" commit the suite was built against is the 2026-07-07 status line (Draft to Review).
[M] 64KiB deploy coverage in execute mode: the max-size pre-alloc contract behind test_max_code_size_with_max_initcode_mainnet is a ~117M-gas deployment under EIP-8037 (capped execution gas plus ~100.5M code-deposit state gas), which the execute pre-alloc budgets correctly. It runs only where the network's block gas limit admits it; verify against the devnet at the execute sweep or mark the max-size mainnet tests execute-skip.
[S] Refresh ref-spec pin and review spec diff: chore(tests): improve EIP-7976 coverage, checklist, and ref-spec pin #3222 pins c998ef94eb16, the 2026-07-07 "Move to Review" text, still the last change to eip-7976.md. The diff since the old pin 83d473b was the 2026-02-15 move to a uniform floor (every calldata byte counts the same toward the floor) and the April token-abstraction wording; EELS already matched and the zero-byte transition arm pins it. Blob-sha repin is in the final Status item.
[M] Review test coverage and add missing tests: chore(tests): improve EIP-7976 coverage, checklist, and ref-spec pin #3222 added test_floor_cost_across_amsterdam_transition (the zero-byte arm discriminates uniform token counting) and test_floor_validity_across_amsterdam_transition (accepted and rejected on both sides of the fork). The suite covers validity matrices for types 0 to 4 and CREATE2, refunds against the floor, the exact-balance boundary, token calculation, maximum calldata, memory expansion, nested calls and DELEGATECALL, and both execution-gas regimes. 21 tests, 1,608 fixture cases collect on --until=Amsterdam. Pairs with EIP-2780, EIP-7778 and EIP-7981 are covered by those suites' floor tests.
[S] Refresh ref-spec pin and review spec diff: the tip pins the 2026-07-07 "Move to Review" commit sha 747b78c0, still the last change to eip-7981.md; feat(tests): complete EIP-7981 coverage and testing checklist #3537 repins to its blob 8da3cf91. Spec history since the January text: 2026-03-27 aligned with EIP-7976 so the 64-per-byte data cost is charged on both the intrinsic and floor sides, the May "Simplify spec" is algebraically identical, and refactor(spec-specs): clarify the EIP-7981 data surcharge #3536 (merged 2026-09-15) clarified the EELS surcharge prose to match.
[S] Audit md spec for consistency against EELS: they agree. The surcharge is 64 gas per access-list byte (1,280 per address, 2,048 per storage key), added to both the intrinsic cost and the floor, which EELS computes as 80 and 128 floor tokens times the floor token rate. The EIP-2930 per-entry charges are untouched by this EIP; EIP-8038 reprices them separately in Amsterdam.
[M] Audit md spec for consistency and correctness: the EIP's reference implementation matches calculate_intrinsic_cost in EELS line for line (surcharge on both sides of the max, calldata floor at four tokens per byte). No findings.
[S] Refresh ref-spec pin and review spec diff: the tip pins the 2026-06-09 commit sha a0a7f5ad and fails check_eip_versions; chore(tests): expand and harden EIP-7997 factory coverage #3614 repins to blob 192193fa (2026-07-17 "Remove irregular state transition and state lookup"). The diff since June: Review status, nonzero nonce, EAS-like bytecode with mnemonics, the irregular transition removed and replaced by a MUST NOT at the boundary. test_factory_untouched_across_transition and the keyless-deployment pair pin the MUST NOT.
[M] Review test coverage and add missing tests: chore(tests): expand and harden EIP-7997 factory coverage #3614 replaces the short-calldata gas flag (could accept a late revert) with a full-forwarded-gas pin and adds initcode failure and rollback with empty returndata, calldata boundaries and trailing bytes, creation contexts (transaction, CREATE, nested through the factory), same-transaction SELFDESTRUCT then reuse, inherited static context, initcode at and over the maximum, and the factory-in-BAL test already covering the 7928 x 7997 cross item. Suite directory renamed to eip7997_deterministic_factory_contract to match the EIP title. 24 tests, 132 fixture cases collect on --until=Amsterdam.
[M] Mainnet-marked tests and execute-mode coverage: test_eip_7997 is code-only and repeatable on a live network (8 execute-mode cases). The factory tests in test_factory.py are single-shot per chain: 17 deploy at fixed salts and 12 pin the factory's absolute nonce and balance, so chore(tests): expand and harden EIP-7997 factory coverage #3614 (bf4c38c) marks the module execute-skip; fill is unaffected. The EF-prefix, oversized-initcode, STATICCALL and short-calldata rejections could run live in a follow-up module that asserts on the caller side instead of the factory account.
[S] Refresh ref-spec pin and review spec diff: the old pin 380cb02 was never in ethereum/EIPs; chore(tests): improve EIP-8024 coverage, checklist, and ref-spec pin #3224 pins 34b49095ca5f (2026-06-10 "Fix typo", still the last change to eip-8024.md). The February rework (branchless k = x ^ 143 normalisation, divmod(16) pair decoding, extended EXCHANGE, forbidden immediate ranges [91, 127] and [82, 127] as exceptional halts) was already in EELS; spec.py now carries EIP-verbatim reference decoders instead of importing them from EELS. Blob-sha repin is in the final Status item.
[M] Review test coverage and add missing tests: chore(tests): improve EIP-8024 coverage, checklist, and ref-spec pin #3224 added the fork-transition file (all three opcodes plus a JUMPDEST-in-immediate arm), execution contexts (all call opcodes, set-code, initcode transaction, CREATE/CREATE2), the full-stack and overflow boundaries, and test_vector_push_in_immediate_masks_jumpdest, which fails any client that masks immediates out of JUMPDEST analysis. All 12 assembly and 10 execution vectors from the EIP are asserted byte-exact. 68 tests, 834 fixture cases collect on --until=Amsterdam.
[S] EELS prose: get_valid_jump_destinations in amsterdam/vm/runtime.py skipped valid DUPN, SWAPN and EXCHANGE immediates and its docstring read as a masking rule, while the EIP keeps JUMPDEST analysis unchanged. refactor(spec-specs): keep JUMPDEST analysis unchanged under EIP-8024 #3618 restores the Osaka loop; a valid immediate can never be 0x5b or a PUSH opcode, and the EIP-8024 suite fills to the same 828 fixture hashes before and after.
[M] EELS gap: EIPs#12311 (merged 2026-09-14) adds TX_MAX_TOTAL_GAS_LIMIT = 2^32 - 1 on tx.gas; the tip accepts any tx.gas. feat(spec-specs,forks,tests): cap total transaction gas at 2^32 - 1 (EIP-8037) #3582 (draft) adds the validate_transaction check, the framework cap and clamp, and test_tx_total_gas_limit_cap.py plus transition arms. CI has not run on it (draft needs a workflow approval). Un-draft, review, merge.
[S] CREATE static-check versus gas-charge ordering pinned with a test.
[M] Review test coverage and add missing tests: the PRs above; 273 tests in 16 files, 2,484 fixture cases collect on --until=Amsterdam.
[M] Complete testing checklist: 26/29 on the tip; the three open rows are the EELS coverage, missed-lines and second-client items. chore(tests): refresh EIP-8037 reference pin and coverage evidence #3529 adds the calldata-floor external entry and a regression test for failed creation on an existing account, but its EELS-coverage entry is a TODO placeholder with preliminary percentages. Measured on the tip (2,125 cases, --until=Amsterdam): the state-gas meter in vm/gas.py is fully executed, its 13 misses being memory-size, pre-Osaka call-gas and blob-gas code; vm/__init__.py 67/67, vm/interpreter.py 146/149, system.py 278/293, transactions.py 254/290; test code 4,974/4,982 statements. Refresh chore(tests): refresh EIP-8037 reference pin and coverage evidence #3529 with these numbers, the blob pin, and a rebase; it then closes the checklist at 28/29 with the optional second-client row left open.
[M] Review test coverage and add missing tests: chore(tests): improve EIP-8038 coverage, checklist, and ref-spec pin #3613 (@gurukamath, 16 commits incl. the chore(tests): fix the EIP-8038 pin, stale prose and ported-static baselines gurukamath/execution-specs#22 follow-ups): SSTORE table rows and multi-write sequences, refund reversal under revert, EIP-2780 ACCOUNT_WRITE exemption seams, receipt pins across the transition, CALL value-path edges and receipt gas, SELFDESTRUCT ACCOUNT_WRITE, CREATE failure paths, EXT* reads of EOA, precompile and delegated targets, the SSTORE stipend sentry, and the access-list intrinsic asserted rather than exercised. Eight mutants killed, several only by the new tests. 99 tests in 15 files, 811 fixture cases pass on --until=Amsterdam; EELS coverage 1,713/1,716 statements. Needs review and merge: CI green, no open threads, no approval yet, 30 commits behind the tip.
Execute-only: the EIP changes the devp2p PooledTransactions encoding and the Engine API (engine_getBlobsV4 cells, custodyColumns on engine_forkchoiceUpdatedV4), so there are no fill fixtures, no EELS code, and the checklist tool skips the suite. Coverage is tests/amsterdam/eip8070_sparse_blobpool run with execute against a live client.
[S] Refresh ref-spec pin and review spec diff: feat(tests): cover a null EIP-8070 custodyColumns and repin to the current EIP blob #3622 repins to blob 5f1154bd. The two clarifications since the old commit-sha pin (custodyColumnsnull is a blobpool no-op, 2026-08-12; elided blobs encode as the RLP empty list 0xc0, 2026-08-24) are covered by the new null test and the framework's existing encoding. Note that check_eip_versions runs no version item for this execute-only suite, so its pin is never checked by CI.
[S] Refresh ref-spec pin and review spec diff: feat(tests): EIP-8246 checklist, focus on #3217 items #3533 pins blob 8be64cf6, the 2026-09-04 text (CREATE2 redeploy of a funded remnant, L2 burn example). The only change since is the 2026-09-15 move to Last Call (deadline 2026-11-04). EELS matches: selfdestruct moves the whole balance to the beneficiary, emits the EIP-7708 transfer log, and marks the account for deletion only when created in the same transaction; clear_account_preserving_balance then wipes nonce, code and storage but never the balance. Blob-sha repin for the status line is in the final Status item.
[L] Dedicated test matrix: the fork-aware tests/cancun/eip6780_selfdestruct suite is the matrix, with is_eip_enabled(8246) arms in test_selfdestruct.py, test_selfdestruct_revert.py and test_selfdestruct_finalization.py (feat(tests): EIP-8246 checklist, focus on #3217 items #3533 added test_selfdestruct_sequences and test_selfdestruct_clears_nonce_and_storage), covering same-transaction and pre-existing contracts, self and other beneficiaries, and the EIP-7708 sweep logs; the EIP-8037 state-gas refund side lives in eip8037/test_state_gas_selfdestruct.py.
[M] Review test coverage and add missing tests: the suite pins the remnant (balance kept, code, nonce and storage cleared) for a creation transaction, a factory CREATE and initcode selfdestruct, the CREATE2 redeploy over a funded remnant, and the deterministic-factory redeploy taking the balance. 7 tests, 1,968 fixture cases collect on --until=Amsterdam.
[S] Refresh ref-spec pin and review spec diff: the suite pins blob 45e570a2, the current 2026-08-10 "Cleanup and Tweaks" text. Since 35ab20c: Review status, the 2026-07-08 mined predeploy addresses, and the cleanup. The embedded factory initcode derives exactly those addresses (0x0000bFF4…8282 deposits, 0x000064D6…8282 exits), matching the fork's pre-allocation. EIPs#12120 (@Th0rgal, open) syncs the prose with sys-asm@83f9801, which differs from the build the EIP cites by a geas version bump only, so no bytecode or address change follows; repin after it merges.
[M] Two mined-address (deposit/exit) transition coverage: test_builder_requests_during_fork drives both predeploys before, on and after the fork block.
[L] Complete testing checklist: 41/41 after the N/A trim, zero warnings (feat(tests): eip8282 checklist review #3565). The external-coverage file points at the Codecov fill report rather than measured numbers.
[M] Mainnet-marked tests and execute-mode coverage prepared: test_eip_mainnet.py; 166 execute-mode cases collect, with module-level execute skips on the deposit, exit and predeploy tests (stakes over 100 ETH, predeploy state).
[M] 8037 x 7954: max-size (64KiB) initcode/deploy state-gas costs, incl. execute mode: test_state_gas_create.py::test_code_deposit_state_gas_scales_with_size[max_code_size|over_max_code_size] prices code-deposit state gas at exactly max_code_size and rejects at plus one, the oog_deposit arm halts the deposit at max size, and test_max_initcode_size_gas_metering_via_create covers max initcode; eip7954/test_max_code_size.py::test_max_code_size_deposit_gas folds top-frame state gas into the exact-fit budget. Execute mode: eip7954/test_eip_mainnet.py::test_max_code_size_with_max_initcode_mainnet.
[M] 7928 x 7708: transfer-log-only flows vs BAL balance-change entries (fee payments, selfdestruct sweeps): chore(tests): improve EIP-7708 coverage, checklist, and ref-spec pin #3220test_block_access_lists_eip7708.py::test_transfer_logs_and_bal_balance_changes (3 cases): Transfer logs and BAL balance changes pinned in one block, a zero-tip coinbase flow proves no spurious BAL entry, and the selfdestruct sweep appears in both views.
[M] 7928 x 7997: factory predeploy writes present in BAL: eip7997_deterministic_factory_predeploy/test_factory.py::test_factory_block_access_list (sender, factory and created address expectations; in place since feat(spec,tests): implement EIP-7997 #3079).
[M] 8246 x 6780 x 8037: selfdestruct matrix (burn removal x same-tx rule x state-gas refunds), incl. 7708 sweep logs: covered pairwise rather than in one file. eip8246_selfdestruct_no_burn (7 tests, asserting EIP-7708 sweep logs), the fork-aware tests/cancun/eip6780_selfdestruct suite (is_eip_enabled(8246) arms), eip8037/test_state_gas_selfdestruct.py (16 tests incl. test_selfdestruct_to_self_in_create_tx and the test_create_selfdestruct_no_refund_* cases) and eip8038/test_selfdestruct_gas.py::test_same_tx_created_selfdestruct_{self_burn,to_fresh_beneficiary}; the EIP-8246 external-coverage file cross-cites these. The dedicated matrix item stays in the EIP-8246 section.
[S] Verify BPO-sibling transition coverage in fill --until=Amsterdam post-chore(test-forks): include sibling BPO forks in --until ranges #2955: collect-only on the EIP-7918 BPO files and the EIP-4844 excess-blob-gas transition yields 366 cases: OsakaToBPO1 48, BPO1ToBPO2 46, BPO2ToBPO3 50, BPO3ToBPO4 46. Amsterdam activation tests fill on BPO2ToAmsterdamAtTime15k, so BPO3 and BPO4 are the sibling branch and both boundaries are present.
Overview
Tracker for finalizing EELS specs and test coverage for all Amsterdam EL EIPs, targeting the first "mainnet-scheme" release that includes Amsterdam. Aiming to be ready for the first Glamsterdam testnet launch.
tests@v21.0.0forks/amsterdamtests@v20.0.1(mainnet) /tests-glamsterdam-devnet@v8.0.0(devnet)glamsterdam-devnet@v8.1.4#3518glamsterdam-devnet@v8.0.0#3167glamsterdam-devnet@v7.2.0#3147Status
forks/amsterdamresolved: Address failing slow tests onforks/amsterdam#2905postStateDiff#3160 and feat(test-fill): compare Engine X post-state against the sibling fixture in the packing execution check #3161 closed 2026-09-15; chore(test-fill): make pre-alloc grouping safe forported_staticand remove the Engine X drift #3419 (pre-alloc grouping drift, @marioevz @spencer-tb @danceratopz) is the open decision: ship with--disable-optimistic-pre-alloc-groupingor exclude the formattests@v21.0.0hive-tests/hive-uiupdatedOpen EIP spec PRs
Closing an EIP includes landing or closing its open
ethereum/EIPsPRs; repin after each merge.Merge
size_iat this EIP's encoding (@qu0b).Close
block.gasLimitEIPs#9873, draft note on BAL size scaling (@jochem-brouwer).Per-EIP Status
Baseline items for every EIP (listed per section below): reconcile the stale implementation tracker, refresh the reference-spec pin and review the EIP diff since pin, review test coverage and add missing tests, complete the testing checklist (markers + not-applicable/external-coverage files), execute mode tests sufficient and passing on the most recent devnet with mainnet-marked tests added, and spec tests passing on every client via consume engine and consume enginex.
EIP-2780: Resource-based intrinsic transaction gas — #1940 @spencer-tb
[S]Reconcile tracker EIP-2780 Implementation Tracker: Reduce intrinsic transaction gas #1940: closed with implementation evidence and release follow-ups recorded. Closeout PR: chore(tests): improve EIP-2780 coverage, checklist, and ref-spec pin #3515.[S]Refresh ref-spec pin and review spec diff: Update EIP-2780: align runtime charging and reference cases EIPs#12080 merged; chore(tests): improve EIP-2780 coverage, checklist, and ref-spec pin #3515 pins7243c92ba812437c64bae9fc6524ee269b29daa9.[M]Devnet-8 spec update implemented: Implement EIP-2780 update for glamsterdam devnet 8 #3205 closed.[M]Tracker test case list covered: value moves (EOA/contract/7702/precompile/self/empty), creation transactions, call/opcode access, 7702 intrinsic and delegation-target access, and create-and-destroy SELFDESTRUCT. feat(specs,tests): Implement EIP-2780 #2175 and subsequent suites; final audit and additions in chore(tests): improve EIP-2780 coverage, checklist, and ref-spec pin #3515.[M]Static test updates: Update static tests for EIP-2780/EIP-8038 #3051 closed; prior-fork fill groups and static checks pass on chore(tests): improve EIP-2780 coverage, checklist, and ref-spec pin #3515's final head.[M]Review test coverage and add missing tests: chore(tests): improve EIP-2780 coverage, checklist, and ref-spec pin #3515; 771 combined fixture cases pass, including shared EIP-8037 creation-collision cases. No missed statements in the seven audited EELS functions; test-code coverage is 1,556/1,561 statements, with five helper fallback statements documented. Warming assertions verified by fault injection.[L]Complete testing checklist: 11/11 applicable items, with N/A and external-coverage evidence in chore(tests): improve EIP-2780 coverage, checklist, and ref-spec pin #3515. This is not exhaustive branch coverage or release sign-off.[M]Mainnet-marked tests and execute-mode coverage prepared: transaction, creation, and authorization gas tests; 14 execute-mode cases collect.[S]Final-head CI: all checks pass for chore(tests): improve EIP-2780 coverage, checklist, and ref-spec pin #3515 atb41265f12a89bddbe602c91256305602a9fec512.EIP-7708: ETH transfers emit a log — #1875 @spencer-tb
[S]Reconcile tracker EIP-7708 Implementation Tracker: ETH transfers emit a log #1875: the three follow-up tests requested in the feat(spec-specs, spec-tests): add EIP-7708 ETH transfers emit a log #2844 review are onforks/amsterdam(test_call_opcodes_insufficient_balance_no_log,test_contract_creation_tx_collision; the selfdestruct-to-self-in-a-creation-transaction burn case is void after EIP-8246). Only the execute-mode box remains and is tracked in Status below. Closeout PR: chore(tests): improve EIP-7708 coverage, checklist, and ref-spec pin #3220.[S]Refresh ref-spec pin and review spec diff: the old pin172188dwas never inethereum/EIPs; chore(tests): improve EIP-7708 coverage, checklist, and ref-spec pin #3220 pinsf7230c46a743(2026-07-10 "Move to Review", still the last commit toeip-7708.md). The diff since the old pin (CREATE/CREATE2 emission site, interop decisions, EIP-8246 burn-log removal, coinbase fee logs excluded) is covered by the suite and matches the EELSemit_transfer_logcall sites. Blob-sha repin is in the final Status item.[M]Review test coverage and add missing tests: chore(tests): improve EIP-7708 coverage, checklist, and ref-spec pin #3220 addstest_emission_point_fork_transition(CALL, CREATE and SELFDESTRUCT sites gated individually at activation) andtest_create_endowment_mainnet. 40 tests, 165 fixture cases collect on the tip; all four emission sites plus the no-log arms (self-transfer, zero value, insufficient balance, failed create, reverts, collisions, coinbase fee) are covered. EELSemit_transfer_loghas full line coverage;vm/__init__.py99%,interpreter.py92%.[S]Complete testing checklist: 3/3 applicable items, 15 categories N/A (no opcode, precompile, transaction type, header field, gas or validity change), zero warnings. The template has no logs/receipts category, so this covers the general items only.[M]Mainnet-marked tests and execute-mode coverage prepared:test_eip_mainnet.pycovers the transaction, CALL, CREATE endowment and SELFDESTRUCT sites; 77 execute-mode cases collect. One test (coinbase transfer without priority fee) is execute-skipped because it needs a specific base fee.[S]Final-head CI: all checks pass for chore(tests): improve EIP-7708 coverage, checklist, and ref-spec pin #3220 at79cc6a868db6023479c00fc2ccb4c79787703d5e(19 success, 1 skipped); merged 2026-07-24.EIP-7778: Block gas accounting without refunds — #1874 @marioevz
[S]Reconcile tracker EIP-7778 Implementation Tracker: Block Gas Accounting without Refunds #1874: the merge-PR follow-ups listed on it are settled. Refund-transaction OOG, revert and subcall failure, the fork transition and the refund quotient are covered by feat(tests): Finalize EIP-7778 #3522; the refund cap binds in every case (one storage clear refunds 11,616 against a cap of 5,421), so the over-cap regime is exercised throughout; multi-authorization refunds are void since EIP-2780 removed the EIP-7702 refund and Amsterdam's only refund type is the storage clear. Open boxes there (coverage, checklist, mainnet, execute, hive) are covered below or in Status. Closeout PR: feat(tests): Finalize EIP-7778 #3522.[S]Refresh ref-spec pin and review spec diff: feat(tests): Finalize EIP-7778 #3522 pins blob4897aec9, the 2026-07-10 "Move to Review" text; the old pince17d00was the 2026-01-28 text and the only change between them is the status line. EELSsettle_transaction_gasmatches: block execution gas is the pre-refund usage less state gas, floored by the calldata floor, and the headergas_usedis the larger of the block's execution and state totals.[S]Resolve/close Replace invalid fieldgas_usedin expected_receipts in 7778 test #2855: fixed in feat(tests): Finalize EIP-7778 #3522 by deriving a synthetic receiptgas_usedfrom the cumulative difference.[M]Review test coverage and add missing tests: feat(tests): Finalize EIP-7778 #3522 rewrote the suite aroundRefundTransaction(all failure modes, all transaction types, calldata-floor regimes, trailing-transaction admission, fork transition). chore(tests): complete EIP-7778 checklist and add access-list arm to the calldata floor test #3616 adds an access-list arm totest_varying_calldata_costs, the missing EIP-7778 x EIP-7981 pair: the floor carries the access-list tokens and the intrinsic cost the per-entry charges, against post-refund block accounting. 11 tests, 242 fixture cases pass on--until=Amsterdam.[M]Complete testing checklist: 17/17 with chore(tests): complete EIP-7778 checklist and add access-list arm to the calldata floor test #3616 (was 16/18; the optional second-client row is now N/A and leaves the denominator). EELSsettle_transaction_gasand the block accumulation infork.pyhave no missed statements; the headergas_usedcheck is only reached under consume because fill builds the header from t8n output. Test code 404/412 statements, the eight misses are parametrization guards. Second client marked Optional.[S]Mainnet-marked tests and execute-mode coverage: none added by design (feat(tests): Finalize EIP-7778 #3522): blockgas_usedcannot be verified on a live network where other transactions share the block. 121 execute-mode cases collect; the six block-level tests are execute-skipped for needing a specific gas price. Record as N/A on EIP-7778 Implementation Tracker: Block Gas Accounting without Refunds #1874.[S]Final-head CI: all checks pass for feat(tests): Finalize EIP-7778 #3522 at05e6498a884…(21 success, 3 skipped); merged 2026-09-04.EIP-7843: SLOTNUM — #1876 @spencer-tb
[S]Reconcile tracker EIP-7843 Implementation Tracker: SLOTNUM opcode #1876: implementation, framework changes, suite, checklist, benchmark (feat(test-benchmark): add missing glam eip to benchmark #3267) and mainnet test are all merged; the tracker still shows them unchecked and is assigned to @felix314159 and @danceratopz. Execute and hive runs are tracked in Status below. Closeout PR: chore(tests): improve EIP-7843 coverage, checklist, and ref-spec pin #3221.[S]Refresh ref-spec pin and review spec diff: chore(tests): improve EIP-7843 coverage, checklist, and ref-spec pin #3221 pinsc3bfd4ba41cf, the 2026-01-20 text; the only change since is the 2026-08-05 status line (Draft to Review). EELS matches: opcode0x4b,BASEgas,U64pushed from the header field throughBlockEnvironment, no execution-layer validity rule on the value. Blob-sha repin is in the final Status item. The EIP's Engine API paragraph saysengine_newPayloadV4; execution-apis Amsterdam definesengine_newPayloadV5takingExecutionPayloadV4(the object,PayloadAttributesV4,engine_getPayloadV6andengine_forkchoiceUpdatedV4all match). Editorial fix: Update EIP-7843: align Engine API method names with execution-apis EIPs#12354; the fixtures follow execution-apis.[M]Fork-transition boundary tests:test_slotnum_at_fork_transition,test_invalid_pre_fork_block_with_slot_numberandtest_invalid_post_fork_block_without_slot_number(chore(tests): improve EIP-7843 coverage, checklist, and ref-spec pin #3221), plus the engine-only spuriousslotNumberpayload test that catches clients dropping unknown JSON fields.[S]Benchmark test for SLOTNUM: feat(test-benchmark): add missing glam eip to benchmark #3267.[M]Review test coverage and add missing tests: chore(tests): improve EIP-7843 coverage, checklist, and ref-spec pin #3221 added the stack-overflow boundary, all call contexts, set-code, initcode transaction and CREATE/CREATE2 contexts, the genesis header field and the transition cases, and fixedFixtureHeader.genesisignoring the genesis environment'sslot_number. 13 tests, 72 fixture cases collect on--until=Amsterdam. EELS: the instruction body, gas constant, header field andBlockEnvironmentplumbing have no missed lines.[L]Complete testing checklist: 30/30 after the N/A trim, zero warnings (chore(tests): improve EIP-7843 coverage, checklist, and ref-spec pin #3221).[M]Mainnet-marked tests and execute-mode coverage prepared:test_slotnum_mainnet; 24 execute-mode cases collect.[S]Final-head CI: all checks pass for chore(tests): improve EIP-7843 coverage, checklist, and ref-spec pin #3221 at5e6d45699e(23 success, 3 skipped); merged 2026-07-24.EIP-7928: Block-level access lists — #1878 @fselmo
[S]Reconcile tracker EIP-7928 Implementation Tracker: Block-Level Access Lists #1878: closed 2026-09-18. Its two unticked boxes: the hardening session is the 2026-09-15 BAL audit plus feat(tests,specs): eip7928 extended coverage #3566's mutation-pinned netting fix, and benchmark results are covered by the benchmark box below.[S]Refresh ref-spec pin and review spec diff: feat(tests): EIP-7928 max nonce boundary check for BAL; update refspec #3482 repinned; the suite pins blobf834f000, the current 2026-09-09 text ("Amend storage-read gas-feasibility check"). Since the old pinaca88aa: no empty change sets (2026-06-01), EIP-7702 tracking reverted (2026-07-02), the SSTORE access-cost check (2026-07-04), Review (2026-07-07), recipient excluded on a runtime halt (2026-07-09), and the September amendment. EELS matches: feat(tests,specs): eip7928 extended coverage #3566 fixed index netting inblock_access_lists.pyandstate_tracker.py, pinned from both ends by four cases; the recipient-halt rule is pinned bytest_bal_7702_recipient_excluded_on_authorization_oog. Open spec PRs (EIPs#12347 retention window, EIPs#9873 draft note) are in the spec-PR list above; neither changes fixture behaviour.[L]Edge-case scenarios and spec-clarity questions: EIP-7928 BAL: edge-case test scenarios + a few spec-clarity questions (Amsterdam) #3213, closed 2026-09-01.[M]Benchmark results documented + BAL validation in benchmark tests: validation landed in feat(test-benchmark): on-chain account verification #3197 (on-chain account verification, 2026-07-29) and feat(tests): Add block-level access list validation to benchmark tests #3168 closed on it; results were never written up. Decide: tick as validation-only, or record results from the devnet benchmark run.[M]Review test coverage and add missing tests: feat(tests,specs): eip7928 extended coverage #3566 (@fselmo, merged 2026-09-17, 13 commits, +2954/-310) with the no-op write family, EIP-4788 no-op reads, cross-call netting through the post-execution request predeploys, invalid-encoding cases with a dual verdict, fork-transition hash-only and field-presence arms, and BAL exception regexes for nimbus, reth and ethrex. Earlier: feat(tests): add BAL storage slot numeric ordering test #3382 slot ordering, feat(tests): cover EIP-8282 builder request dequeues in block access lists #3270 EIP-8282 dequeues, feat(tests,test-specs): EIP-7928 - reject non-minimally encoded BAL scalars #3486 and fix(test-specs): refuse RLP blockchain fixtures for engine-payload-only block overrides #3501 non-minimal scalars, feat(tests): EIP-7928 max nonce boundary check for BAL; update refspec #3482 max nonce, chore(test-client-clis): update geth BAL exception mappings #3347 geth mappings. 211 tests in 16 files, 3,649 fixture cases collect on--until=Amsterdam, indexed intest_cases.md. The Amsterdam-side fix for blockchain_test_engine bugs in tests-focil-devnet@v0.2.0: BAL validation vs gasLimit failure #3439 (test_tx_gas_limittripping the BAL item cap before the gas check) landed via feat(tests,specs): eip7928 extended coverage #3566; fix(tests): stop test_tx_gas_limit opting into an inclusion-list variant #3503 is the FOCIL-branch counterpart. 🚧 wip: System derived negative tests for BAL #2755 (@raxhvl, draft, CI green) generates systematic BAL corruptions for negative coverage and needs a review-or-close call.[M]Complete testing checklist: 18/18, zero warnings (the 16/18 text predates feat(tests,specs): eip7928 extended coverage #3566). chore(tests): record measured EIP-7928 coverage in the checklist evidence #3620 replaces the instruction-style coverage entries with the measured result (block_access_lists.py 234/236 and state_tracker.py 170/172 statements; tests 3,064/3,081, every miss documented).EIP-7954: Increase max contract size — #2028 @LouisTsai-Csie
[S]Reconcile tracker EIP-7954 Implementation Tracker: Increase Maximum Contract Size #2028: the three follow-ups from the feat(tests, spec-specs): raise EIP-7954 max code size to 64KiB #2987 review are settled (build_unique_contract_initcoderemoved,test_tstore_rollback_on_failed_createdocstring updated, the ported code-size gates handled in fix(tests): guard EIP-7954 deposit gas and update ported test gates LouisTsai-Csie/execution-specs#20:codesize_oog_invalid_sizeun-gated, fivevalid_before("EIP7954")gates kept with the reason in a comment;stRandom2/test_random_statetest646.pyis still gated without one). The CREATE/CREATE2 per-word initcode charge at 64 KiB is pinned byeip8037/test_state_gas_create.py::test_max_initcode_size_gas_metering_via_create(exact and one-short arms, all create opcodes). Tracker EIP-7954 Implementation Tracker: Increase Maximum Contract Size #2028 closed 2026-09-17 (CIFO Test Release Tracker:tests@v21.0.0(Glamsterdam Testnet) #3217).[S]Refresh ref-spec pin and review spec diff: feat(tests): close out eip-7954 checklist #3546 pins blob2e62d6a8, the current text. The only spec change since the 2026-05-21 "Raise contract code size to 64KiB" commit the suite was built against is the 2026-07-07 status line (Draft to Review).[M]64KiB deploy coverage in execute mode: the max-size pre-alloc contract behindtest_max_code_size_with_max_initcode_mainnetis a ~117M-gas deployment under EIP-8037 (capped execution gas plus ~100.5M code-deposit state gas), which the execute pre-alloc budgets correctly. It runs only where the network's block gas limit admits it; verify against the devnet at the execute sweep or mark the max-size mainnet tests execute-skip.[M]Review test coverage and add missing tests: feat(tests): close out eip-7954 checklist #3546 (Louis, plus fselmo's fix(tests): pin the EIP-7954 max-initcode boundary to the calldata floor LouisTsai-Csie/execution-specs#19 calldata-floor and vacuity pins) and fix(tests): guard EIP-7954 deposit gas and update ported test gates LouisTsai-Csie/execution-specs#20 (9 commits: deposit-gas cap guard, ported gate updates, warm-address isolation fix, halt gas pins, jump-past-end, truncated PUSH, linear max-size execution, 7702 delegation to 64KiB code). Combined and rebased on the tip: 28 tests, 252 fixture cases on--until=Amsterdam, 84 execute-mode cases,just staticclean. Merge Update london.md #20 into feat(tests): close out eip-7954 checklist #3546, rebase, merge.[L]Complete testing checklist: 7/7 after the N/A trim with feat(tests): close out eip-7954 checklist #3546 and Update london.md #20 combined, zero warnings. Lands with feat(tests): close out eip-7954 checklist #3546.EIP-7976: Increase calldata floor cost — #1942 @spencer-tb
[S]Reconcile tracker EIP-7976 Implementation Tracker: Increase Calldata Floor Cost #1942: implementation, suite, checklist and mainnet test are merged; the tracker shows them unchecked and is assigned to @felix314159 and @SamWilsn. @danceratopz's follow-up from feat(spec-specs, tests): Add EIP-7976 Increase Calldata Floor Cost #2861 (avoidable runtime skips in the mainnet test) is settled: the blob arm is skipped declaratively with a fill-only mark. Execute and hive runs are tracked in Status below. Closeout PR: chore(tests): improve EIP-7976 coverage, checklist, and ref-spec pin #3222.[S]Refresh ref-spec pin and review spec diff: chore(tests): improve EIP-7976 coverage, checklist, and ref-spec pin #3222 pinsc998ef94eb16, the 2026-07-07 "Move to Review" text, still the last change toeip-7976.md. The diff since the old pin83d473bwas the 2026-02-15 move to a uniform floor (every calldata byte counts the same toward the floor) and the April token-abstraction wording; EELS already matched and the zero-byte transition arm pins it. Blob-sha repin is in the final Status item.[M]Review test coverage and add missing tests: chore(tests): improve EIP-7976 coverage, checklist, and ref-spec pin #3222 addedtest_floor_cost_across_amsterdam_transition(the zero-byte arm discriminates uniform token counting) andtest_floor_validity_across_amsterdam_transition(accepted and rejected on both sides of the fork). The suite covers validity matrices for types 0 to 4 and CREATE2, refunds against the floor, the exact-balance boundary, token calculation, maximum calldata, memory expansion, nested calls and DELEGATECALL, and both execution-gas regimes. 21 tests, 1,608 fixture cases collect on--until=Amsterdam. Pairs with EIP-2780, EIP-7778 and EIP-7981 are covered by those suites' floor tests.[L]Complete testing checklist: 10/10 after the N/A trim, zero warnings (chore(tests): improve EIP-7976 coverage, checklist, and ref-spec pin #3222).[M]Mainnet-marked tests and execute-mode coverage prepared:test_eip_7976across transaction types 0 to 4 and recipient shapes; 536 execute-mode cases collect.[S]Final-head CI: all checks pass for chore(tests): improve EIP-7976 coverage, checklist, and ref-spec pin #3222 at5ad13dbf4c(19 success, 1 skipped); approved by @LouisTsai-Csie, merged 2026-07-29.[S]Benchmarks: none target the floor itself; fix(benchmark): split benchmark gas evenly: every tx can pay data floor #3348 (@jochem-brouwer) fixes benchmark transaction splitting so every transaction can pay the new floor.EIP-7981: Increase access list cost — #1943 @danceratopz
[S]Reconcile tracker EIP-7981 Implementation Tracker: Increase access list cost #1943: three boxes open there. Mainnet-marked tests exist (test_eip_mainnet.py, two tests); no benchmark targets the access-list surcharge and the EIP is block-size motivated, so mark it N/A or decide; execute is tracked in Status below. Assigned to @felix314159, @jochem-brouwer and @gurukamath.[S]Refresh ref-spec pin and review spec diff: the tip pins the 2026-07-07 "Move to Review" commit sha747b78c0, still the last change toeip-7981.md; feat(tests): complete EIP-7981 coverage and testing checklist #3537 repins to its blob8da3cf91. Spec history since the January text: 2026-03-27 aligned with EIP-7976 so the 64-per-byte data cost is charged on both the intrinsic and floor sides, the May "Simplify spec" is algebraically identical, and refactor(spec-specs): clarify the EIP-7981 data surcharge #3536 (merged 2026-09-15) clarified the EELS surcharge prose to match.[S]Audit md spec for consistency against EELS: they agree. The surcharge is 64 gas per access-list byte (1,280 per address, 2,048 per storage key), added to both the intrinsic cost and the floor, which EELS computes as 80 and 128 floor tokens times the floor token rate. The EIP-2930 per-entry charges are untouched by this EIP; EIP-8038 reprices them separately in Amsterdam.[M]Audit md spec for consistency and correctness: the EIP's reference implementation matchescalculate_intrinsic_costin EELS line for line (surcharge on both sides of the max, calldata floor at four tokens per byte). No findings.[M]Review test coverage and add missing tests: feat(tests): complete EIP-7981 coverage and testing checklist #3537 (@danceratopz) plus feat(tests): strengthen EIP-7981 gas and balance coverage danceratopz/execution-specs#61 (eight follow-up commits, approved by Dan): floor tests resized so the floor actually binds and restricted to types 1 to 3, crossover cases merged, sender-balance boundary test, and a test pinning the surcharge in the block's execution-gas dimension against a headergas_usedat the floor. Mutation check: a floor-surcharge mutant fails 168 cases on the combined branch against 122 on feat(tests): complete EIP-7981 coverage and testing checklist #3537's head, the intrinsic-surcharge mutant 362, and only the new two-dimension test catches a header execution-dimension mutant. Combined branch: 22 tests, 577 fixture cases pass on--until=Amsterdam, 194 execute-mode cases collect. @LouisTsai-Csie's seven review threads on feat(tests): complete EIP-7981 coverage and testing checklist #3537 are answered by eth_blockNumber #61; Dan merges eth_blockNumber #61 into his branch, then feat(tests): complete EIP-7981 coverage and testing checklist #3537.[L]Complete testing checklist: 11/11 on the tip since chore(tests): improve EIP-7981 coverage, checklist, and ref-spec pin #3223 (not 0/268); 20/20 with feat(tests): complete EIP-7981 coverage and testing checklist #3537 and eth_blockNumber #61, zero warnings.EIP-7997: Deterministic factory contract — #1988 @danceratopz
[S]Reconcile tracker EIP-7997 Implementation Tracker: Deterministic Factory Predeploy #1988: closed 2026-09-17. No EELS code exists by design (ACDT eth_newFilter #89, 2026-07-27, rejected the fork-boundary install; EIPs#11991, EIPs#12009, feat(spec-specs): add EIP-7997 deterministic factory deployment #3198 and feat(spec-specs): add EIP-7997 deterministic factory deployment #3200 closed), so the only implementation surface is the pre-allocation hook and the tests. Closeout PR: chore(tests): expand and harden EIP-7997 factory coverage #3614 (merged 2026-09-18).[S]Refresh ref-spec pin and review spec diff: the tip pins the 2026-06-09 commit shaa0a7f5adand failscheck_eip_versions; chore(tests): expand and harden EIP-7997 factory coverage #3614 repins to blob192193fa(2026-07-17 "Remove irregular state transition and state lookup"). The diff since June: Review status, nonzero nonce, EAS-like bytecode with mnemonics, the irregular transition removed and replaced by a MUST NOT at the boundary.test_factory_untouched_across_transitionand the keyless-deployment pair pin the MUST NOT.[M]Same-block system-contract deployment test:test_keyless_deployment_before_forkdeploys the factory with its keyless transaction and uses it in the same block;test_keyless_deployment_after_forkpins that the same transaction halts on Amsterdam (the top-frame state gas does not fit its fixed 100k gas). chore(tests): expand and harden EIP-7997 factory coverage #3614. Create test for same block system contract deployment #2270 itself is about the EIP-7002 and EIP-7251 system contracts: feat(tests): cover same-block system contract deployment #3615 deploys and invokes each in one block and asserts the request hash, and closes Create test for same block system contract deployment #2270 on merge.[M]Review test coverage and add missing tests: chore(tests): expand and harden EIP-7997 factory coverage #3614 replaces the short-calldata gas flag (could accept a late revert) with a full-forwarded-gas pin and adds initcode failure and rollback with empty returndata, calldata boundaries and trailing bytes, creation contexts (transaction, CREATE, nested through the factory), same-transaction SELFDESTRUCT then reuse, inherited static context, initcode at and over the maximum, and the factory-in-BAL test already covering the 7928 x 7997 cross item. Suite directory renamed toeip7997_deterministic_factory_contractto match the EIP title. 24 tests, 132 fixture cases collect on--until=Amsterdam.[L]Complete testing checklist: 31/31 with chore(tests): expand and harden EIP-7997 factory coverage #3614, zero warnings; first suite to use the System Contract section (was 0/268 on the tip).[M]Mainnet-marked tests and execute-mode coverage:test_eip_7997is code-only and repeatable on a live network (8 execute-mode cases). The factory tests intest_factory.pyare single-shot per chain: 17 deploy at fixed salts and 12 pin the factory's absolute nonce and balance, so chore(tests): expand and harden EIP-7997 factory coverage #3614 (bf4c38c) marks the module execute-skip; fill is unaffected. The EF-prefix, oversized-initcode, STATICCALL and short-calldata rejections could run live in a follow-up module that asserts on the caller side instead of the factory account.EIP-8024: DUPN/SWAPN/EXCHANGE — #1877 @spencer-tb
[S]Reconcile tracker EIP-8024 Implementation Tracker: Backward compatible SWAPN, DUPN, EXCHANGE #1877: implementation, suite, checklist, benchmarks and mainnet test are merged; the tracker shows them unchecked and is assigned to @felix314159 and @danceratopz. @marioevz's 2026-01-22 list is covered:test_dupn_stack_overflow,test_dupn_jump_into_immediate_then_executeandtest_dupn_jump_to_immediate_byte_0x5b_succeeds(jump into the0x5bimmediate, then back),test_swapn_full_stackandtest_exchange_full_stack. EIP-8024: Improve testing coverage #2726 is fully covered by feat(tests): add EIP-8024 gas boundary and SWAPN invalid-immediate tests #2942 and chore(tests): improve EIP-8024 coverage, checklist, and ref-spec pin #3224 and can be closed. Closeout PR: chore(tests): improve EIP-8024 coverage, checklist, and ref-spec pin #3224.[S]Refresh ref-spec pin and review spec diff: the old pin380cb02was never inethereum/EIPs; chore(tests): improve EIP-8024 coverage, checklist, and ref-spec pin #3224 pins34b49095ca5f(2026-06-10 "Fix typo", still the last change toeip-8024.md). The February rework (branchlessk = x ^ 143normalisation,divmod(16)pair decoding, extended EXCHANGE, forbidden immediate ranges[91, 127]and[82, 127]as exceptional halts) was already in EELS;spec.pynow carries EIP-verbatim reference decoders instead of importing them from EELS. Blob-sha repin is in the final Status item.[M]Coverage improvements (EIP-8024: Improve testing coverage #2726 and the EIP-8024 Implementation Tracker: Backward compatible SWAPN, DUPN, EXCHANGE #1877 scenario list): stack overflow at 1023/1024, empty stack, jump-back through the immediate, full stack at 1024 for SWAPN and EXCHANGE, all landed in chore(tests): improve EIP-8024 coverage, checklist, and ref-spec pin #3224.[M]Benchmark tests for DUPN/SWAPN/EXCHANGE: feat(test-benchmark): add missing glam eip to benchmark #3267 (test_stack.py::test_dupn,test_swapn,test_exchange).[M]Review test coverage and add missing tests: chore(tests): improve EIP-8024 coverage, checklist, and ref-spec pin #3224 added the fork-transition file (all three opcodes plus a JUMPDEST-in-immediate arm), execution contexts (all call opcodes, set-code, initcode transaction, CREATE/CREATE2), the full-stack and overflow boundaries, andtest_vector_push_in_immediate_masks_jumpdest, which fails any client that masks immediates out of JUMPDEST analysis. All 12 assembly and 10 execution vectors from the EIP are asserted byte-exact. 68 tests, 834 fixture cases collect on--until=Amsterdam.[L]Complete testing checklist: 34/34 after the N/A trim, zero warnings (chore(tests): improve EIP-8024 coverage, checklist, and ref-spec pin #3224).[M]Mainnet-marked tests and execute-mode coverage prepared:test_eip_mainnet.py; 278 execute-mode cases collect.[S]Final-head CI: all checks pass for chore(tests): improve EIP-8024 coverage, checklist, and ref-spec pin #3224 ate088556863(15 success); approved by @LouisTsai-Csie, merged 2026-07-30.[S]EELS prose:get_valid_jump_destinationsinamsterdam/vm/runtime.pyskipped valid DUPN, SWAPN and EXCHANGE immediates and its docstring read as a masking rule, while the EIP keeps JUMPDEST analysis unchanged. refactor(spec-specs): keep JUMPDEST analysis unchanged under EIP-8024 #3618 restores the Osaka loop; a valid immediate can never be0x5bor a PUSH opcode, and the EIP-8024 suite fills to the same 828 fixture hashes before and after.EIP-8037: State creation gas cost increase — #2040 @LouisTsai-Csie @spencer-tb
[S]Reconcile tracker EIP-8037 Implementation Tracker: State Creation Gas Cost Increase #2040: closed 2026-09-04.[M]Follow-up PRs merged: refactor(tests): EIP-8037 test gas calculation logic and post state verification #3383, refactor(tests): enhance EIP-8037 test coverage part 2 #3449, refactor(tests): enhance EIP-8037 test coverage part 3 #3485, refactor(tests): enhance EIP-8037 test coverage part 4 #3511 (Louis's coverage parts 1 to 4), feat(spec-specs, tests): repay spilled state gas from the reservoir when a child merges #3478 (merge-time repayment of spilled state gas, EIPs#12265), refactor(spec-specs,tests): clarify top-frame gas and deriveCALL_VALUE#3527 (top-frame gas andCALL_VALUE), feat(tests): cover EIP-8037 static-call reservoirs and block activation #3525 (static-call reservoirs and block activation), feat(tests): cover EIP-8037 system gas and code-deposit boundaries #3524 (system gas and code-deposit boundaries), and the 2026-09-14 batch chore(tests): drop stale EIP-8037 TODO on the 7702 precompile intrinsic gas test #3561, fix(tests): unskip EIP-7702 pointer loop under EIP-8037 #3567, feat(tests): run the EIP-7702 pointer gas-diff tests past EIP-8037 #3570, feat(tests): fork-aware EIP-7702 gas_cost under EIP-8037 #3571, feat(tests): fork-aware EIP-7623 refunds under EIP-8037 #3577, feat(tests): unskip EIP-7623 type-1/2 create validity under EIP-8037 #3578, fix(tests): keep EIP-6110 high call-depth deposits past EIP-8037 #3579 (EIP-7702, EIP-7623 and EIP-6110 tests made fork-aware under 8037). feat(tests): EIP-8037 credits from a sibling frame after a child's spill #3611 closed as already covered.[L]Skipped ported-static burn-down (Static Test Fail Tracker for EIP-8037 #2601, closed): 2a fix(tests): enhance & un-skip Amsterdam ported static depth-recursion tests (Pt. 2a) #3264, 2b fix(tests): enhance & un-skip Amsterdam ported static create-OOG tests (Pt. 2b) #3320, 2c fix(tests): enhance & un-skip Amsterdam ported static SSTORE, refund & misc tests (Pt. 2c) #3321 merged; 2d fix(tests): un-skip remaining Amsterdam ported static tests and drop the skip list (Pt. 2d) #3322 un-skips the last 49 entries and deletesamsterdam_skip_list.txtand its conftest. Mergeable, CI green, 24 commits, review requested from @LouisTsai-Csie. Needs review and merge.[M]EELS gap: EIPs#12311 (merged 2026-09-14) addsTX_MAX_TOTAL_GAS_LIMIT = 2^32 - 1ontx.gas; the tip accepts anytx.gas. feat(spec-specs,forks,tests): cap total transaction gas at 2^32 - 1 (EIP-8037) #3582 (draft) adds thevalidate_transactioncheck, the framework cap and clamp, andtest_tx_total_gas_limit_cap.pyplus transition arms. CI has not run on it (draft needs a workflow approval). Un-draft, review, merge.[M]Block state budget after authorization-preparation rollback: feat(tests): cover block state budget after authorization preparation rollback #3540 (draft, CI green, 8 cases; mutation matrix shows the spill and mixed arms each catch a bug class the other misses). Its spec text EIPs#12303 merged 2026-09-14, so it can leave draft.[M]Code-deposit EIP-3541 failure mode: EIP-8037:test_code_deposit_halt_discards_initcode_state_gasmissingef_prefix(EIP-3541) deposit-failure mode #2963.[M]EIP-7702 auth-refund gaps: feat(tests): cover EIP-8037 static-call reservoirs and block activation #3525.[M]CALLNEW_ACCOUNTrefund tests: feat(tests): cover EIP-8037 system gas and code-deposit boundaries #3524.[S]CREATE static-check versus gas-charge ordering pinned with a test.[M]Review test coverage and add missing tests: the PRs above; 273 tests in 16 files, 2,484 fixture cases collect on--until=Amsterdam.[M]Complete testing checklist: 26/29 on the tip; the three open rows are the EELS coverage, missed-lines and second-client items. chore(tests): refresh EIP-8037 reference pin and coverage evidence #3529 adds the calldata-floor external entry and a regression test for failed creation on an existing account, but its EELS-coverage entry is a TODO placeholder with preliminary percentages. Measured on the tip (2,125 cases,--until=Amsterdam): the state-gas meter invm/gas.pyis fully executed, its 13 misses being memory-size, pre-Osaka call-gas and blob-gas code;vm/__init__.py67/67,vm/interpreter.py146/149,system.py278/293,transactions.py254/290; test code 4,974/4,982 statements. Refresh chore(tests): refresh EIP-8037 reference pin and coverage evidence #3529 with these numbers, the blob pin, and a rebase; it then closes the checklist at 28/29 with the optional second-client row left open.[S]Optional clean-ups Use naming convention for top frame gas calculators: #3149, Add newtype wrappers forStateGasandRegularGas#3015, ExpressGasCosts.CALL_VALUEas a derivation instead of a literal #3014 closed by refactor(spec-specs,tests): clarify top-frame gas and deriveCALL_VALUE#3527; bug(tests): Intrinsic gas no longer guarantees a transaction reaches the top frame #3301 and feat(forks): add transaction_gas_to_reach_execution_calculator #3440 closed: the type-4 validity tests halt in the top frame at the validity boundary by design under EIP-2780, pinned by the fixtures, with the execution path covered by the EIP-2780 floor tests.EIP-8038: State access gas cost increase — #1941 @gurukamath
[S]Reconcile tracker EIP-8038 Implementation Tracker: State-access gas cost update #1941: reconciled by @gurukamath 2026-09-14. Of the boxes left open there, coverage, checklist and hardening land with chore(tests): improve EIP-8038 coverage, checklist, and ref-spec pin #3613 (evidence below), the benchmark box is settled by the EIP Rationale's Benchmarkoor snapshot and the bloatnettest_account_query,test_sloadandtest_sstoresuites, Fixup magic numbers intests/ported_staticintroduced in 8038 fixups #3016 closes with chore(tests): improve EIP-8038 coverage, checklist, and ref-spec pin #3613, and execute plus hive are tracked in Status above. Closeout PR: chore(tests): improve EIP-8038 coverage, checklist, and ref-spec pin #3613.[S]Refresh ref-spec pin and review spec diff: the tip'sfc232285is a valid blob of the August text (the "422" on it was the commits API, not a dead pin). chore(tests): improve EIP-8038 coverage, checklist, and ref-spec pin #3613 repins to bloba3f1333e, the 2026-09-15 charge-attribution text (EIPs#12343). Since then only EIPs#12353 (ours, merged 2026-09-18, execution-gas wording, CALLCODE cell, benchmark test name; no values) moved the blob tof8353146; chore(tests): repin EIP-8038 to the current EIP blob gurukamath/execution-specs#23 repins chore(tests): improve EIP-8038 coverage, checklist, and ref-spec pin #3613 to it (checker 15/15). Spec history since August: access-list costs derived from cold access (2026-07-31), warm SELFDESTRUCT exemption kept (2026-09-14), charge attribution and component definitions (2026-09-15). EELS matches every charge site; @gurukamath's conformance audit found zero behavioural gaps.[M]Clean-up: Remove extensive and superflous gas checks in EIP-8038 tests #3042 closed 2026-07-28, Update static tests for EIP-2780/EIP-8038 #3051 closed 2026-07-31. Fixup magic numbers intests/ported_staticintroduced in 8038 fixups #3016 (ported-static magic numbers) is fixed inside chore(tests): improve EIP-8038 coverage, checklist, and ref-spec pin #3613: the Cancun-baseline literals across 39 ported files becameCancun-priced constants, fixture A/B identical over 11,304 cases. Closes when chore(tests): improve EIP-8038 coverage, checklist, and ref-spec pin #3613 merges.[M]Review test coverage and add missing tests: chore(tests): improve EIP-8038 coverage, checklist, and ref-spec pin #3613 (@gurukamath, 16 commits incl. the chore(tests): fix the EIP-8038 pin, stale prose and ported-static baselines gurukamath/execution-specs#22 follow-ups): SSTORE table rows and multi-write sequences, refund reversal under revert, EIP-2780ACCOUNT_WRITEexemption seams, receipt pins across the transition, CALL value-path edges and receipt gas, SELFDESTRUCTACCOUNT_WRITE, CREATE failure paths, EXT* reads of EOA, precompile and delegated targets, the SSTORE stipend sentry, and the access-list intrinsic asserted rather than exercised. Eight mutants killed, several only by the new tests. 99 tests in 15 files, 811 fixture cases pass on--until=Amsterdam; EELS coverage 1,713/1,716 statements. Needs review and merge: CI green, no open threads, no approval yet, 30 commits behind the tip.[L]Complete testing checklist: 20/20 with chore(tests): improve EIP-8038 coverage, checklist, and ref-spec pin #3613, zero warnings (12/268 on the tip, which has no N/A file).EIP-8070: eth/72 sparse blobpool — no implementation tracker @LouisTsai-Csie
Execute-only: the EIP changes the devp2p
PooledTransactionsencoding and the Engine API (engine_getBlobsV4cells,custodyColumnsonengine_forkchoiceUpdatedV4), so there are no fill fixtures, no EELS code, and the checklist tool skips the suite. Coverage istests/amsterdam/eip8070_sparse_blobpoolrun withexecuteagainst a live client.[S]Suite: feat(tests): implement eip-8070 sparse blob pool tests #2948 (@LouisTsai-Csie, 2026-07-29) with fixes fix(tests): account for value in EIP-8070 transaction gas #3344 (value in transaction gas) and fix(tests): use well-formed versioned hashes in getBlobs negative tests #3359 (well-formed versioned hashes in the negative cases). 7 tests:getBlobsV4full, partial and missing, only-nonexisting, minimum request size, interleaved missing;custodyColumnsaccepted and invalid length. Devnet-8 tracker Test Release Tracker:glamsterdam-devnet@v8.0.0#3167 records the execute run.[S]Refresh ref-spec pin and review spec diff: feat(tests): cover a null EIP-8070 custodyColumns and repin to the current EIP blob #3622 repins to blob5f1154bd. The two clarifications since the old commit-sha pin (custodyColumnsnullis a blobpool no-op, 2026-08-12; elided blobs encode as the RLP empty list0xc0, 2026-08-24) are covered by the newnulltest and the framework's existing encoding. Note thatcheck_eip_versionsruns no version item for this execute-only suite, so its pin is never checked by CI.[S]nullcustodyColumnsarm: feat(tests): cover a null EIP-8070 custodyColumns and repin to the current EIP blob #3622 addstest_fcu_custody_columns_nulland acustody_columns_nullflag on the blobs test that sends an explicitnullparameter, expecting VALID and unaffected blob serving.[S]Open spec PRs: Update EIP-8070: specify bit ordering for the 16-byte cell bitarrays EIPs#12054 (bit ordering of the cell bitarrays, @edg-l) and Update EIP-8070: point size_i at the encoding this EIP specifies EIPs#12275 (size_iencoding pointer, @qu0b), both in the Merge list above. #12054 defines the bitmaps as SSZBitVector[128], celliat biti % 8of bytei / 8, which is exactly how the suite builds its custody bitmap with little-endianto_bytes; no test change follows from either.[M]Execute run on the latest devnet, all clients: tracked in Status above.EIP-8246: Remove SELFDESTRUCT burn — #2821 @fselmo
[S]Reconcile tracker EIP-8246 Implementation Tracker: Remove SELFDESTRUCT Burn #2821: implementation (feat(spec,tests): Implement EIP-8246 #3078), suite (feat(spec,tests): Implement EIP-8246 #3078, feat(tests): EIP-8246 creation-tx initcode selfdestruct coverage #3084, feat(tests): EIP-8246 checklist, focus on #3217 items #3533), checklist and mainnet tests are merged; the tracker is the untouched template, fully unchecked, assigned to @LouisTsai-Csie. Execute and hive runs are tracked in Status above. Closeout PR: feat(tests): EIP-8246 checklist, focus on #3217 items #3533.[S]Refresh ref-spec pin and review spec diff: feat(tests): EIP-8246 checklist, focus on #3217 items #3533 pins blob8be64cf6, the 2026-09-04 text (CREATE2 redeploy of a funded remnant, L2 burn example). The only change since is the 2026-09-15 move to Last Call (deadline 2026-11-04). EELS matches:selfdestructmoves the whole balance to the beneficiary, emits the EIP-7708 transfer log, and marks the account for deletion only when created in the same transaction;clear_account_preserving_balancethen wipes nonce, code and storage but never the balance. Blob-sha repin for the status line is in the final Status item.[S]External-coverage file for the fork-aware Cancun 6780 suite: feat(tests): EIP-8246 checklist, focus on #3217 items #3533, ten entries cross-citing the EIP-6780, EIP-211, EIP-150 and EIP-8038 selfdestruct tests.[L]Dedicated test matrix: the fork-awaretests/cancun/eip6780_selfdestructsuite is the matrix, withis_eip_enabled(8246)arms intest_selfdestruct.py,test_selfdestruct_revert.pyandtest_selfdestruct_finalization.py(feat(tests): EIP-8246 checklist, focus on #3217 items #3533 addedtest_selfdestruct_sequencesandtest_selfdestruct_clears_nonce_and_storage), covering same-transaction and pre-existing contracts, self and other beneficiaries, and the EIP-7708 sweep logs; the EIP-8037 state-gas refund side lives ineip8037/test_state_gas_selfdestruct.py.[M]Review test coverage and add missing tests: the suite pins the remnant (balance kept, code, nonce and storage cleared) for a creation transaction, a factory CREATE and initcode selfdestruct, the CREATE2 redeploy over a funded remnant, and the deterministic-factory redeploy taking the balance. 7 tests, 1,968 fixture cases collect on--until=Amsterdam.[L]Complete testing checklist: 31/31 after the N/A trim, zero warnings (feat(tests): EIP-8246 checklist, focus on #3217 items #3533).[M]Mainnet-marked tests and execute-mode coverage prepared:test_eip_mainnet.py(creation-transaction and factory selfdestruct-to-self keep their balance); 656 execute-mode cases collect.[S]Final-head CI: all checks pass for feat(tests): EIP-8246 checklist, focus on #3217 items #3533 at552dfdaed6(22 success, 5 skipped); approved by @LouisTsai-Csie, merged 2026-09-07.EIP-8282: Builder execution requests — #2988 @fselmo
[S]Reconcile tracker EIP-8282 Implementation Tracker: Builder Execution Requests #2988: implementation (feat(spec-specs, tests): finalize EIP-8282 builder deposit contract #3091 lineage), suite, checklist, mainnet test and BAL coverage are merged; the tracker is fully unchecked and assigned to @marioevz. Execute and hive runs are tracked in Status above. Closeout PR: feat(tests): eip8282 checklist review #3565.[S]Refresh ref-spec pin and review spec diff: the suite pins blob45e570a2, the current 2026-08-10 "Cleanup and Tweaks" text. Since35ab20c: Review status, the 2026-07-08 mined predeploy addresses, and the cleanup. The embedded factory initcode derives exactly those addresses (0x0000bFF4…8282deposits,0x000064D6…8282exits), matching the fork's pre-allocation. EIPs#12120 (@Th0rgal, open) syncs the prose with sys-asm@83f9801, which differs from the build the EIP cites by a geas version bump only, so no bytecode or address change follows; repin after it merges.[M]8,192-validator deposit test: feat(tests): Prepare a 8,192 validator deposit test #3204.[S]Deposit disable-switch coverage incl. excess-reset discrimination: feat(spec-specs, tests): finalize EIP-8282 builder deposit contract #3091;test_builder_deposit_disable.pyandtest_builder_exit_disable.py.[M]Two mined-address (deposit/exit) transition coverage:test_builder_requests_during_forkdrives both predeploys before, on and after the fork block.[M]Review test coverage and add missing tests: feat(tests): eip8282 checklist review #3565 (@fselmo, with the fix(tests): EIP-8282 checklist review fixes fselmo/execution-specs#34 fixes folded in): predeploy call contexts, out-of-gas, logs and partial records across all four fee predeploys, block-gas exhaustion in both gas dimensions viaGasConsumer, modified-contract and factory-deployment tests; BAL dequeue vectors in feat(tests): cover EIP-8282 builder request dequeues in block access lists #3270 (closed EIP-7928: no BAL coverage for EIP-8282 builder request dequeues, where four devnet-7 clients diverge #3261). 25 tests, 332 fixture cases pass on--until=Amsterdam. feat(tests): cover same-block system contract deployment #3615 records that Amsterdam same-block system-contract deployment is covered by the 8282 factory deployment tests.[L]Complete testing checklist: 41/41 after the N/A trim, zero warnings (feat(tests): eip8282 checklist review #3565). The external-coverage file points at the Codecov fill report rather than measured numbers.[M]Mainnet-marked tests and execute-mode coverage prepared:test_eip_mainnet.py; 166 execute-mode cases collect, with module-level execute skips on the deposit, exit and predeploy tests (stakes over 100 ETH, predeploy state).[S]Final-head CI: all checks pass for feat(tests): eip8282 checklist review #3565 atd9fafca632(24 success, 3 skipped); approved by @spencer-tb, merged 2026-09-15.[S]Optional: system-request helper refactor refactor(tests): Refactor system-request test helpers #2984: done by refactor(tests): generalize system-contract request test helpers (EIP-6110/7002/7251/7685) #2989 (@marioevz, 2026-06-30) and feat(tests,forks): tests BAL early validation; refactor system contracts #3484 (@fselmo, 2026-09-10). The EIP-7002 and EIP-7251helpers.pyfiles are gone, the request descriptors live in the framework, and thegas_limitfield is removed. Neither PR referenced the issue, so it never auto-closed.Cross-EIP Gaps
[M]2780 x 8037: top-frame calldata-floor half of the fix(spec-specs, tests): anchor calldata floor on decomposed EIP-2780 base #3120 decomposition:eip8037_state_creation_gas_cost_increase/test_state_gas_calldata_floor.py(10 tests, refactor(tests): enhance EIP-8037 test coverage part 2 #3449 and refactor(tests): enhance EIP-8037 test coverage part 4 #3511) witheip2780_reduce_intrinsic_tx_gas/test_calldata_floor.py; bug(tests): Intrinsic gas no longer guarantees a transaction reaches the top frame #3301 and feat(forks): add transaction_gas_to_reach_execution_calculator #3440 closed on this basis.[M]8037 x 7954: max-size (64KiB) initcode/deploy state-gas costs, incl. execute mode:test_state_gas_create.py::test_code_deposit_state_gas_scales_with_size[max_code_size|over_max_code_size]prices code-deposit state gas at exactlymax_code_sizeand rejects at plus one, theoog_depositarm halts the deposit at max size, andtest_max_initcode_size_gas_metering_via_createcovers max initcode;eip7954/test_max_code_size.py::test_max_code_size_deposit_gasfolds top-frame state gas into the exact-fit budget. Execute mode:eip7954/test_eip_mainnet.py::test_max_code_size_with_max_initcode_mainnet.[M]7928 x 7708: transfer-log-only flows vs BAL balance-change entries (fee payments, selfdestruct sweeps): chore(tests): improve EIP-7708 coverage, checklist, and ref-spec pin #3220test_block_access_lists_eip7708.py::test_transfer_logs_and_bal_balance_changes(3 cases): Transfer logs and BAL balance changes pinned in one block, a zero-tip coinbase flow proves no spurious BAL entry, and the selfdestruct sweep appears in both views.[M]7928 x 7997: factory predeploy writes present in BAL:eip7997_deterministic_factory_predeploy/test_factory.py::test_factory_block_access_list(sender, factory and created address expectations; in place since feat(spec,tests): implement EIP-7997 #3079).[M]8246 x 6780 x 8037: selfdestruct matrix (burn removal x same-tx rule x state-gas refunds), incl. 7708 sweep logs: covered pairwise rather than in one file.eip8246_selfdestruct_no_burn(7 tests, asserting EIP-7708 sweep logs), the fork-awaretests/cancun/eip6780_selfdestructsuite (is_eip_enabled(8246)arms),eip8037/test_state_gas_selfdestruct.py(16 tests incl.test_selfdestruct_to_self_in_create_txand thetest_create_selfdestruct_no_refund_*cases) andeip8038/test_selfdestruct_gas.py::test_same_tx_created_selfdestruct_{self_burn,to_fresh_beneficiary}; the EIP-8246 external-coverage file cross-cites these. The dedicated matrix item stays in the EIP-8246 section.[S]Repricing stack 2780 x 7976 x 7981 x 7778: all six pairs covered. EIP-7976 and EIP-7981 fork-transition tests, the EIP-7981 conftest floor with access-list tokens, EIP-7778test_varying_calldata_costswith its EIP-2780 top-frame helper, and the EIP-7778 x EIP-7981 arm (access-list transaction against post-refund block accounting) from chore(tests): complete EIP-7778 checklist and add access-list arm to the calldata floor test #3616, merged 2026-09-18. refactor(tests): replace manual intrinsic gas arithmetic broken by EIP-7976/EIP-7981 repricing #2289 closed 2026-09-18.[S]EIP-7610: DFI'd in EIP-7773, test removal PR chore(tests): remove EIP-7610 create collision tests #3417 merged 2026-08-25; no EIP-7610 tests remain onforks/amsterdam. Tracker EIP-7610 Implementation Tracker: Revert creation for non-empty storage #2819 still open, close as DFI.[S]Verify BPO-sibling transition coverage infill --until=Amsterdampost-chore(test-forks): include sibling BPO forks in--untilranges #2955: collect-only on the EIP-7918 BPO files and the EIP-4844 excess-blob-gas transition yields 366 cases: OsakaToBPO1 48, BPO1ToBPO2 46, BPO2ToBPO3 50, BPO3ToBPO4 46. Amsterdam activation tests fill onBPO2ToAmsterdamAtTime15k, so BPO3 and BPO4 are the sibling branch and both boundaries are present.