Skip to content

feat(tests): EIP-7954 checklist triage and parent initcode-limit transition test - #3550

Closed
axiosdevs wants to merge 1 commit into
ethereum:forks/amsterdamfrom
axiosdevs:feat/eip7954-checklist
Closed

feat(tests): EIP-7954 checklist triage and parent initcode-limit transition test#3550
axiosdevs wants to merge 1 commit into
ethereum:forks/amsterdamfrom
axiosdevs:feat/eip7954-checklist

Conversation

@axiosdevs

Copy link
Copy Markdown

Description

Checklist triage for EIP-7954 (tests/amsterdam/eip7954_increase_max_contract_size), which uv run checklist reported at 0% because none of its 21 tests carried a marker and it had no eip_checklist_not_applicable.txt / eip_checklist_external_coverage.txt.

  • Markers on existing tests for what they already pin: opcode/test/execution_context/initcode/behavior{,/tx,/opcode}, opcode/test/out_of_bounds/verify/{max,max_plus_one}, opcode/test/contract_creation/address, opcode/test/gas_usage/extra_gas, opcode/test/fork_transition/at, and modified_transaction_validity_constraint/test/fork_transition/{rejected_before_fork,accepted_after_fork,rejected_after_fork}. Where only one parametrization is the covering case (at_max / over_max of the creation-transaction initcode test) the mark sits on the pytest.param.
  • Not applicable: the EIP moves two constants and adds no opcode, precompile, system contract, transaction type, header/body field, gas price or refund rule, so those subtrees are marked with the same wording as the EIP-7976 files; the opcode sub-items that describe CREATE/CREATE2 semantics the EIP does not touch (stack, memory expansion, static context, return data, collisions, …) get one-line reasons each.
  • External coverage: opcode-level exact/one-short gas at the new 64 KiB / 128 KiB sizes and the exceptional abort on an over-limit initcode are already pinned by tests/amsterdam/eip8037_state_creation_gas_cost_increase/test_state_gas_create.py and tests/shanghai/eip3860_initcode/test_initcode.py (which fills at fork.max_initcode_size() on Amsterdam), so the entries point there instead of duplicating them.
  • One new test, test_parent_max_initcode_size_across_fork: a create transaction whose initcode is exactly the parent fork's max_initcode_size() is accepted in the pre-fork block and again after the transition — the accepted_before_fork arm of the modified validity constraint, mirroring the existing test_parent_max_code_size_across_fork.

Result: uv run checklist tests/amsterdam/eip7954_increase_max_contract_size → 22/22, no conflicting items. (The template row transaction_type/test/intrinsic_validity/data_floor_above_intrinsic_gas_cost still shows as open on this branch; that is the duplicated-ID artifact fixed in #3544 and goes away once that lands.)

Verification: uv run fill tests/amsterdam/eip7954_increase_max_contract_size --until Amsterdam — 108 passed; ruff check/ruff format, mypy and codespell clean on the touched files.

Related Issues or PRs

Related to the checklist tracking in #3217. Follows the EIP-8246 triage in #3533 for structure.

Checklist

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

Cute Animal Picture

cat

🤖 Generated with Claude Code

…sition test

Bring the EIP-7954 checklist from 0% to 100%: tag the existing size-limit
tests with the checklist items they pin (initcode behaviour by opcode and
by creation transaction, opcode out-of-bounds at max and max+1, created
address, activation at the fork, and the modified initcode validity
constraint before/after the fork), and record the rest as not applicable
or as covered elsewhere.

External coverage points at the EIP-8037 and EIP-3860 suites for the
opcode-level gas boundaries and exceptional abort at the new sizes, so
those are not duplicated here.

Add the one missing arm: a create transaction whose initcode is exactly
the parent fork's maximum is accepted both before and after the
transition, mirroring the existing parent max-code-size test.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@LouisTsai-Csie

Copy link
Copy Markdown
Contributor

I will close this one since it is duplicated by PR #3546 , which has more test coverage.

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.

2 participants