Repository navigation
Meta: Archive ethereum/tests and ethereum/legacytests #2556
Description
ethereum/tests -> EELS
🔴 AI Helped Issue Dump. Needs fully checked over. Sharing for collab.
Goal: Archive ethereum/tests and ethereum/legacytests by porting all remaining
test fillers into EELS, making EELS the single source of truth. After migration, EELS
must be able to fill all tests for all forks and publish releases from this repo alone.
Action Plan
Phase 0: Triage the legacy Constantinople corpus
Before porting anything, decide what to do with the ~10,000 Constantinople-era files.
- 0.1 Diff Constantinople
GeneralStateTests/(9,549 files) against the Cancun
GeneralStateTestsFiller/(~1,100 files) to determine overlap. The Cancun version
consolidated many per-vector files into single parametrized fillers — most
Constantinople files are likely redundant. - 0.2 Diff Constantinople
VMTestsFiller/(613 files) against EELS existing
tests/static/state_tests/VMTests/(6 files). Determine which VM tests add unique
coverage vs. what's already tested through state tests. - 0.3 Decide: port only net-new coverage from Constantinople, or bulk-import
everything and let the filler deduplicate at fill time. - 0.4 For auto-generated test suites (
stBadOpcode/*DiffPlaces*,
stZeroKnowledge*,stSelfBalance/diffPlaces), decide whether to port the
generators fromethereum/testssrc/Templates/rather than the 375+ output files.
Phase 1: Port missing GeneralStateTestsFiller files (~507 files)
Static state filler infrastructure already exists (specs/static_state/,
filler/static_filler plugin, --fill-static-tests). This phase is mechanical copy
work.
- 1.1 Copy the ~507 missing filler files from
ethereum/testspinned commit
7dc757ecsrc/GeneralStateTestsFiller/intotests/static/state_tests/.
See Appendix A for the full list. - 1.2 Add the missing
stExpectSection/directory. - 1.3 Verify all copied files parse and fill correctly:
fill --fill-static-tests -k "stExtCodeHash or stZeroKnowledge" --until Cancun - 1.4 Update
amsterdam_skip_list.txtif any new files fail under Amsterdam
due to EIP-8037 gas model changes. - 1.5 Remove the empty
tests/ported_static/stub directories (they contain
only__pycache__— no actual test files).
Phase 2: Add BlockchainTestsFiller support (~400 files)
EELS has BlockchainTest spec and BlockchainFixture format but no static blockchain
filler infrastructure.
- 2.1 Create
tests/static/blockchain_tests/directory structure mirroring
src/BlockchainTestsFiller/layout (InvalidBlocks/, ValidBlocks/). - 2.2 Implement
specs/static_blockchain/module — analogous to
specs/static_state/but producingBlockchainFixtureoutput.
Key differences from state fillers:- Multi-block test sequences
- Invalid block rejection tests
- Uncle/ommer validation
- Withdrawal tests
- 2.3 Update the
filler/static_fillerpytest plugin to discover and dispatch
blockchain test fillers (currently only handles state fillers). - 2.4 Copy the ~361 filler files from
ethereum/testsdevelop
src/BlockchainTestsFiller/. See Appendix B. - 2.5 Copy the ~56 additional legacy-only files from
ethereum/legacytests
Cancun/BlockchainTestsFiller/not present on develop. - 2.6 Port the 21 TransitionTests fillers from
ethereum/legacytests
Cancun/BlockchainTestsFiller/TransitionTests/.
See Appendix B. - 2.7 Verify:
fill --fill-static-tests -k "blockchain" --until Cancun
Phase 3: Add TransactionTestsFiller support (~210 files)
EELS has TransactionTest spec and TransactionFixture format but no static
transaction filler infrastructure.
- 3.1 Create
tests/static/transaction_tests/directory structure mirroring
src/TransactionTestsFiller/layout (tt*/ subdirectories). - 3.2 Implement
specs/static_transaction/module — analogous to
specs/static_state/but producingTransactionFixtureoutput.
Key differences from state fillers:- Tests transaction validity/invalidity (not state transitions)
- RLP encoding edge cases
- Signature validation
- No post-state, just accept/reject
- 3.3 Update the
filler/static_fillerplugin to discover transaction fillers. - 3.4 Copy the 210 filler files from
ethereum/testsdevelop
src/TransactionTestsFiller/.
See Appendix C. - 3.5 Verify:
fill --fill-static-tests -k "transaction" --until Cancun
Phase 4: Add InvalidRLP support (~20 files)
- 4.1 Create
tests/static/invalid_rlp/directory. - 4.2 Determine if InvalidRLP fillers can reuse the blockchain filler
infrastructure (they produce invalid blockchain test fixtures) or need a dedicated
handler. - 4.3 Copy the 20 files from
ethereum/testsdevelopsrc/InvalidRLP/.
See Appendix D. - 4.4 Verify filling works.
Phase 5: Port legacy-only tests (conditional on Phase 0 triage)
- 5.1 If Phase 0 determines Constantinople
GeneralStateTests/adds unique
coverage: port the net-new files intotests/static/state_tests/. - 5.2 If Phase 0 determines Constantinople
VMTestsFiller/adds unique
coverage: createtests/static/vm_tests/and implement a VM test filler, or
fold into state test infrastructure. - 5.3 Port any additional blockchain test fillers from
Constantinople/BlockchainTestsFiller/that aren't already covered by Phase 2.
Phase 6: Update fill pipeline for full fork coverage
- 6.1 Ensure
--fill-static-testsflag covers all new test types (blockchain,
transaction, InvalidRLP) — not just state tests. - 6.2 Verify filling works across the full fork range: Frontier through
Amsterdam (and beyond). Each filler specifies its applicable fork range, but the
infrastructure must support dispatching to any fork. - 6.3 Update
tox.inipy3environment to include new test types in the
default fill command. - 6.4 Run a full fill and compare output against the last
ethereum/tests
release fixtures to verify parity.
Phase 7: Update release pipeline
- 7.1 Update
.github/configs/feature.yamlrelease configs:stablefill-params: add blockchain + transaction fixture generationdevelopfill-params: same- Ensure
--fill-static-testsnow covers all fixture types
- 7.2 Update
.github/workflows/release_fixture_full.yamlif needed to handle
new artifact types (blockchain fixtures, transaction fixtures). - 7.3 Publish a test release and verify fixture output matches what
ethereum/testspreviously produced. - 7.4 Update
ethereum/execution-spec-testsrelease notes / README to indicate
EELS is now the canonical source.
Phase 8: Deprecate upstream repos
- 8.1 Confirm fixture parity: EELS release fixtures are a superset of the last
ethereum/testsv13 release. - 8.2 Archive
ethereum/tests(mark as deprecated, point README to EELS). - 8.3 Archive
ethereum/legacytests(same). - 8.4 Remove the pinned commit reference in
tests/static/state_tests/README.md— EELS is now the source of truth.
Appendix A: Missing GeneralStateTestsFiller files
Source: ethereum/tests pinned commit 7dc757ec src/GeneralStateTestsFiller/
These filler files exist at the pinned commit but are missing from
tests/static/state_tests/.
stExpectSection/ (entire directory missing)
All files in this directory.
stBadOpcode/ (116 missing of 120)
- All
*DiffPlacesFillervariants (~115 files: opc0C-opc0F, opc1E-opc1F, opc21-opc2F,
opc49-opc4F, opc5C-opc5F, opcA5-opcAF, opcB0-opcBF, opcC0-opcCF, opcD0-opcDF,
opcE0-opcEF, opcF6-opcF9, opcFB-opcFC, opcFE, invalidDiffPlaces) - undefinedOpcodeFirstByteFiller
stZeroKnowledge2/ (130 missing of 130 — entirely empty)
All ecadd_* and ecmul_* files.
stZeroKnowledge/ (129 missing of 134)
All ecmul_1-2_*, ecmul_1-3_*, ecmul_7827-6598_*, and ecpairing_* files.
stExtCodeHash/ (34 missing of 36)
- callToNonExistentFiller
- callToSuicideThenExtcodehashFiller
- createEmptyThenExtcodehashFiller
- dynamicAccountOverwriteEmpty_ParisFiller
- extCodeCopyBoundsFiller
- extCodeHashAccountWithoutCodeFiller
- extCodeHashCALLCODEFiller
- extCodeHashCALLFiller
- extCodeHashChangedAccountFiller
- extCodeHashCreatedAndDeletedAccountCallFiller
- extCodeHashCreatedAndDeletedAccountFiller
- extCodeHashCreatedAndDeletedAccountStaticCallFiller
- extCodeHashDELEGATECALLFiller
- extCodeHashDeletedAccount1CancunFiller
- extCodeHashDeletedAccount1Filler
- extCodeHashDeletedAccount2CancunFiller
- extCodeHashDeletedAccount2Filler
- extCodeHashDeletedAccount3Filler
- extCodeHashDeletedAccount4Filler
- extCodeHashDeletedAccountCancunFiller
- extCodeHashDeletedAccountFiller
- extCodeHashDynamicArgumentFiller
- extcodehashEmpty_ParisFiller
- extCodeHashInInitCodeFiller
- extCodeHashMaxCodeSizeFiller
- extCodeHashNewAccountFiller
- extCodeHashNonExistingAccountFiller
- extCodeHashPrecompilesFiller
- extCodeHashSelfFiller
- extCodeHashSelfInInitFiller
- extCodeHashSTATICCALLFiller
- extCodeHashSubcallOOGFiller
- extCodeHashSubcallSuicideCancunFiller
- extCodeHashSubcallSuicideFiller
stPreCompiledContracts2/ (20 missing of 100)
- CALLCODEIdentitiy_0Filler
- CALLCODEIdentitiy_1Filler
- CALLCODEIdentity_1_nonzeroValueFiller
- CALLCODEIdentity_2Filler
- CALLCODEIdentity_3Filler
- CALLCODEIdentity_4_gas17Filler
- CALLCODEIdentity_4_gas18Filler
- CALLCODEIdentity_4Filler
- CALLCODEIdentity_5Filler
- CallIdentitiy_0Filler
- CallIdentitiy_1Filler
- CallIdentity_1_nonzeroValueFiller
- CallIdentity_2Filler
- CallIdentity_3Filler
- CallIdentity_4_gas17Filler
- CallIdentity_4_gas18Filler
- CallIdentity_4Filler
- CallIdentity_5Filler
- CallIdentity_6_inputShorterThanOutputFiller
- CallRipemd160_0Filler
Cancun/stEIP4844_blobtransactions/ (8 missing of 13)
- blobhashListBounds3Filler
- blobhashListBounds4Filler
- blobhashListBounds5Filler
- blobhashListBounds6Filler
- blobhashListBounds7Filler
- blobhashListBounds8Filler
- blobhashListBounds9Filler
- blobhashListBounds10Filler
stStaticFlagEnabled/ (7 missing of 13)
- CallWithNOTZeroValueToPrecompileFromCalledContractFiller
- CallWithNOTZeroValueToPrecompileFromContractInitializationFiller
- CallWithNOTZeroValueToPrecompileFromTransactionFiller
- CallWithZeroValueToPrecompileFromCalledContractFiller
- CallWithZeroValueToPrecompileFromContractInitializationFiller
- CallWithZeroValueToPrecompileFromTransactionFiller
- StaticcallForPrecompilesIssue683Filler
stCreateTest/ (7 missing of 47)
- CREATE_AcreateB_BSuicide_BStoreFiller
- CREATE_ContractSuicideDuringInit_ThenStoreThenReturnFiller
- CREATE_ContractSuicideDuringInit_WithValueFiller
- CREATE_ContractSuicideDuringInit_WithValueToItselfFiller
- CREATE_ContractSuicideDuringInitFiller
- CREATE_FirstByte_loopFiller
- CreateOOGFromEOARefundsFiller
Cancun/stEIP1153_transientStorage/ (4 missing of 8)
- 15_tstoreCannotBeDosdFiller
- 17_tstoreGasFiller
- 19_oogUndoesTransientStoreFiller
- 21_tstoreCannotBeDosdOOOFiller
stEIP1559/ (3 missing of 14)
- intrinsicCancunFiller
- intrinsicGenCancun
- typeTwoBerlinFiller
stCreate2/ (2 missing of 51)
- create2collisionStorageParisFiller
- RevertInCreateInInitCreate2ParisFiller
stPreCompiledContracts/ (2 missing of 6)
- identity_to_biggerFiller
- identity_to_smallerFiller
stSStoreTest/ (2 missing of 28)
- InitCollisionNonZeroNonceFiller
- InitCollisionParisFiller
stTimeConsuming/ (2 missing of 14)
- CALLBlake2f_MaxRoundsFiller
- static_Call50000_sha256Filler
stExample/ (2 missing of 12)
- accessListExampleFiller
- solidityExampleFiller
stRevertTest/ (1 missing of 46)
- RevertRemoteSubCallStorageOOGFiller
stSelfBalance/ (1 missing of 6)
- diffPlacesFiller
stShift/ (1 missing of 43)
- shiftCombinationsFiller
stSolidityTest/ (1 missing of 18)
- SelfDestructFiller
VMTests/ (1 missing of 6)
- vmPerformance
Appendix B: BlockchainTestsFiller files
Source: ethereum/tests develop src/BlockchainTestsFiller/
Also in: ethereum/legacytests src/LegacyTests/Cancun/BlockchainTestsFiller/
(superset, includes TransitionTests)
InvalidBlocks/
bc4895-withdrawals/ (15 files)
- accountInteractionsFiller.json
- amountIs0Filler.json
- amountIs0TouchAccountAndTransactionFiller.json
- amountIs0TouchAccountFiller.json
- differentValidatorToTheSameAddressFiller.json
- incorrectWithdrawalsRootFiller.json
- shanghaiWithoutWithdrawalsRLPFiller.json
- staticcallFiller.json
- twoIdenticalIndexDifferentValidatorFiller.json
- twoIdenticalIndexFiller.json
- warmupFiller.yml
- withdrawalsAddressBoundsFiller.json
- withdrawalsAmountBoundsFiller.json
- withdrawalsIndexBoundsFiller.json
- withdrawalsValidatorIndexBoundsFiller.json
bcBlockGasLimitTest/ (2 files)
- GasUsedHigherThanBlockGasLimitButNotWithRefundsSuicideFirstFiller.json
- GasUsedHigherThanBlockGasLimitButNotWithRefundsSuicideLastFiller.json
bcEIP1559/ (9 files on develop, 10 in legacytests)
- badBlocksFiller.yml
- badUnclesFiller.yml
- baseFeeFiller.yml
- checkGasLimitFiller.yml
- feeCapFiller.yml
- gasLimit20mFiller.yml
- gasLimit40mFiller.yml
- transFailFiller.yml
- valCausesOOFFiller.yml
- intrinsicOrFailFiller.yml (legacytests only)
bcEIP3675/ (1 file)
- timestampPerBlockFiller.yml
bcExpectSection/ (15 files, develop only)
- filling_missingExpectedAccountFiller.json
- filling_unexpectedExceptionFiller.json
- filling_wrongAccountFiller.json
- filling_wrongStorage2Filler.json
- filling_wrongStorageFiller.json
- lastblockhashExceptionCopier.json
- result_CancunEnvConvertionFiller.json
- result_MergeEnvConvertionFiller.json
- result_ShanghaiEnvConvertionFiller.json
- result_eip1559EnvConvertionFiller.json
- result_legacyEnvConvertionFiller.json
- unexpectedAccountCopier.json
- wrongAccountCopier.json
- wrongRLPGenesisCopier.json
- wrongStorageCopier.json
bcInvalidHeaderTest/ (22 files)
- DifferentExtraData1025Filler.json
- DifficultyIsZeroFiller.json
- ExtraData1024Filler.json
- ExtraData33Filler.json
- GasLimitHigherThan2p63m1Filler.json
- GasLimitIsZeroFiller.json
- badTimestampFiller.yml
- log1_wrongBlockNumberFiller.json
- log1_wrongBloomFiller.json
- timeDiff0Filler.json
- wrongCoinbaseFiller.json
- wrongDifficultyFiller.json
- wrongGasLimitFiller.json
- wrongGasUsedFiller.json
- wrongNumberFiller.json
- wrongParentHash2Filler.json
- wrongParentHashFiller.json
- wrongReceiptTrieFiller.json
- wrongStateRootFiller.json
- wrongTimestampFiller.json
- wrongTransactionsTrieFiller.json
- wrongUncleHashFiller.json
bcMultiChainTest/ (1 on develop, 2 in legacytests)
- UncleFromSideChainFiller.json
- lotsOfLeafsFiller.json (legacytests only)
bcStateTests/ (24 on develop, 30 in legacytests)
- CreateTransactionRevertedFiller.json
- EmptyTransactionFiller.json
- NotEnoughCashContractCreationFiller.json
- RefundOverflow2Filler.json
- RefundOverflowFiller.json
- TransactionFromCoinbaseNotEnoughFoundsFiller.json
- TransactionNonceCheck2Filler.json
- TransactionNonceCheckFiller.json
- UserTransactionGasLimitIsTooLowWhenZeroCostFiller.json
- ZeroValue_TransactionCALL_OOGRevertFiller.json
- ZeroValue_TransactionCALL_ToEmpty_OOGRevert_ParisFiller.json
- ZeroValue_TransactionCALL_ToNonZeroBalance_OOGRevertFiller.json
- ZeroValue_TransactionCALL_ToOneStorageKey_OOGRevertFiller.json
- ZeroValue_TransactionCALLwithData_ToEmpty_OOGRevert_Istanbul_ParisFiller.json
- ZeroValue_TransactionCALLwithData_ToOneStorageKey_OOGRevert_Istanbul_ParisFiller.json
- callcodeOutput2Filler.json
- createNameRegistratorPerTxsNotEnoughGasAfterFiller.json
- createNameRegistratorPerTxsNotEnoughGasAtFiller.json
- createNameRegistratorPerTxsNotEnoughGasBeforeFiller.json
- createRevertFiller.json
- dataTxFiller.json
- gasLimitTooHighFiller.json
- transactionFromSelfDestructedContractFiller.yml
- txCost-sec73Filler.json
- TransactionToItselfNotEnoughFoundsFiller.json (legacytests only)
- ZeroValue_TransactionCALL_ToEmpty_OOGRevertFiller.json (legacytests only)
- ZeroValue_TransactionCALL_ToOneStorageKey_OOGRevert_ParisFiller.json (legacytests only)
- ZeroValue_TransactionCALLwithData_ToEmpty_OOGRevert_IstanbulFiller.json (legacytests only)
- ZeroValue_TransactionCALLwithData_ToOneStorageKey_OOGRevert_IstanbulFiller.json (legacytests only)
- transactionFromNotExistingAccountFiller.json (legacytests only)
bcUncleHeaderValidity/ (25 files)
- correctFiller.json
- diffTooHighFiller.json
- diffTooLow2Filler.json
- diffTooLowFiller.json
- gasLimitLTGasUsageUncleFiller.json
- gasLimitTooHighExactBoundFiller.json
- gasLimitTooHighFiller.json
- gasLimitTooLowExactBound2Filler.json
- gasLimitTooLowExactBoundFiller.json
- gasLimitTooLowExactBoundLondonFiller.json
- gasLimitTooLowFiller.json
- incorrectUncleNumber0Filler.json
- incorrectUncleNumber1Filler.json
- incorrectUncleNumber500Filler.json
- incorrectUncleTimestamp2Filler.json
- incorrectUncleTimestamp3Filler.json
- incorrectUncleTimestamp4Filler.json
- incorrectUncleTimestamp5Filler.json
- incorrectUncleTimestampFiller.json
- pastUncleTimestampFiller.json
- timestampTooHighFiller.json
- timestampTooLowFiller.json
- unknownUncleParentHashFiller.json
- wrongParentHashFiller.json
- wrongStateRootFiller.json
bcUncleSpecialTests/ (9 files)
- futureUncleTimestamp2Filler.json
- futureUncleTimestamp3Filler.json
- futureUncleTimestampDifficultyDrop2Filler.json
- futureUncleTimestampDifficultyDrop3Filler.json
- futureUncleTimestampDifficultyDrop4Filler.json
- futureUncleTimestampDifficultyDropFiller.json
- uncleBloomNot0Filler.json
- uncleBloomNot0_2Filler.json
- uncleBloomNot0_3Filler.json
bcUncleTest/ (22 on develop, 23 in legacytests)
- EqualUncleInTwoDifferentBlocks2Filler.json
- InChainUncleFatherFiller.json
- InChainUncleFiller.json
- InChainUncleGrandPaFiller.json
- InChainUncleGreatGrandPaFiller.json
- InChainUncleGreatGreatGrandPaFiller.json
- InChainUncleGreatGreatGreatGrandPaFiller.json
- InChainUncleGreatGreatGreatGreatGrandPaFiller.json
- UncleIsBrotherFiller.json
- oneUncleFiller.json
- oneUncleGeneration2Filler.json
- oneUncleGeneration3Filler.json
- oneUncleGeneration4Filler.json
- oneUncleGeneration5Filler.json
- oneUncleGeneration6Filler.json
- oneUncleGeneration7Filler.json
- threeUncleFiller.json
- twoEqualUncleFiller.json
- twoUncleFiller.json
- uncleHeaderAtBlock2Filler.json
- uncleHeaderWithGeneration0Filler.json
- uncleWithSameBlockNumberFiller.json
- EqualUncleInTwoDifferentBlocksFiller.json (legacytests only)
ValidBlocks/
bcBlockGasLimitTest/ (4 files)
- BlockGasLimit2p63m1Filler.json
- SuicideTransactionFiller.json
- TransactionGasHigherThanLimit2p63m1Filler.json
- TransactionGasHigherThanLimit2p63m1_2Filler.json
bcEIP1153-transientStorage/ (3 files)
- tloadDoesNotPersistAcrossBlocksFiller.yml
- tloadDoesNotPersistCrossTxnFiller.yml
- transStorageBlockchainFiller.yml
bcEIP1559/ (7 on develop, 11 in legacytests)
- besuBaseFeeBugFiller.json
- burnVerifyFiller.yml
- highDemandFiller.yml
- lowDemandFiller.yml
- medDemandFiller.yml
- tipsFiller.yml
- transTypeFiller.yml
- burnVerifyLondonFiller.yml (legacytests only)
- intrinsicFiller.yml (legacytests only)
- intrinsicTipFiller.yml (legacytests only)
- tipsLondonFiller.yml (legacytests only)
bcEIP3675/ (1 file)
- tipInsideBlockFiller.yml
bcEIP4844-blobtransactions/ (1 file)
- blockWithAllTransactionTypesFiller.yml
bcExample/ (4 files)
- basefeeExampleFiller.json
- mergeExampleFiller.json
- optionsTestFiller.json
- shanghaiExampleFiller.json
bcExploitTest/ (4 files)
- DelegateCallSpamFiller.json
- ShanghaiLoveFiller.json
- StrangeContractCreationFiller.json
- SuicideIssueFiller.json
bcForkStressTest/ (1 on develop, 2 in legacytests)
- AmIOnEIP150Filler.json
- ForkStressTestFiller.json (legacytests only)
bcGasPricerTest/ (2 on develop, 3 in legacytests)
- highGasUsageFiller.json
- notxsFiller.json
- RPC_API_TestFiller.json (legacytests only)
bcMultiChainTest/ (legacytests only, 7 files)
- CallContractFromNotBestBlockFiller.json
- ChainAtoChainBCallContractFormAFiller.json
- ChainAtoChainBFiller.json
- ChainAtoChainB_BlockHashFiller.json
- ChainAtoChainB_difficultyBFiller.json
- ChainAtoChainBtoChainAFiller.json
- ChainAtoChainBtoChainAtoChainBFiller.json
bcRandomBlockhashTest/ (~105 files)
- 201503110226PYTHON_DUP6BCFiller.json
- randomStatetest{various}BCFiller.json (100+ files)
bcStateTests/ (63 on develop, 66 in legacytests)
- BLOCKHASH_BoundsFiller.json
- BadStateRootTxBCFiller.json
- OOGStateCopyContainingDeletedContractFiller.json
- OverflowGasRequireFiller.json
- SuicidesMixingCoinbase2Filler.json
- SuicidesMixingCoinbaseFiller.json
- TransactionFromCoinbaseHittingBlockGasLimit1Filler.json
- ZeroValue_TransactionCALLwithData_OOGRevertFiller.json
- ZeroValue_TransactionCALLwithData_ToEmpty_OOGRevert_ParisFiller.json
- ZeroValue_TransactionCALLwithData_ToNonZeroBalance_OOGRevertFiller.json
- ZeroValue_TransactionCALLwithData_ToOneStorageKey_OOGRevert_ParisFiller.json
- blockhashNonConstArgFiller.json
- blockhashTestsFiller.json
- callcodeOutput3partialFiller.json
- create2collisionwithSelfdestructSameBlockFiller.json
- extCodeHashOfDeletedAccountDynamicFiller.json
- extCodeHashOfDeletedAccountFiller.json
- extcodehashEmptySuicideFiller.yml
- logRevertFiller.yml
- multimpleBalanceInstructionFiller.json
- randomFiller.yml
- randomStatetest{various}Filler.json (17 files)
- refundResetFiller.yml
- selfdestructBalanceFiller.yml
- simpleSuicideFiller.json
- suicideCoinbaseFiller.json
- suicideCoinbaseStateFiller.json
- suicideStorageCheckFiller.json
- suicideStorageCheckVCreate2Filler.json
- suicideStorageCheckVCreateFiller.json
- suicideThenCheckBalanceFiller.json
- testOpcode_00Filler.yml through testOpcode_f0Filler.yml (15 files)
bcTotalDifficultyTest/ (legacytests only, 10 files)
- lotsOfBranchesOverrideAtTheEndFiller.json
- lotsOfBranchesOverrideAtTheMiddleFiller.json
- newChainFrom4BlockFiller.json
- newChainFrom5BlockFiller.json
- newChainFrom6BlockFiller.json
- sideChainWithMoreTransactions2Filler.json
- sideChainWithMoreTransactionsFiller.json
- sideChainWithNewMaxDifficultyStartingFromBlock3AfterBlock4Filler.json
- uncleBlockAtBlock3AfterBlock3Filler.json
- uncleBlockAtBlock3afterBlock4Filler.json
bcUncleSpecialTests/ (legacytests only, 8 files)
- futureUncleTimestamp2Filler.json
- futureUncleTimestampDifficultyDrop2Filler.json
- futureUncleTimestampDifficultyDrop3Filler.json
- futureUncleTimestampDifficultyDrop4Filler.json
- futureUncleTimestampDifficultyDropFiller.json
- uncleBloomNot0Filler.json
- uncleBloomNot0_2Filler.json
- uncleBloomNot0_3Filler.json
bcUncleTest/ (legacytests only, 8 files)
- oneUncleFiller.json
- oneUncleGeneration2Filler.json
- oneUncleGeneration3Filler.json
- oneUncleGeneration4Filler.json
- oneUncleGeneration5Filler.json
- oneUncleGeneration6Filler.json
- twoUncleFiller.json
- uncleHeaderAtBlock2Filler.json
bcValidBlockTest/ (16 on develop, 17 in legacytests)
- ExtraData32Filler.json
- RecallSuicidedContractFiller.json
- RecallSuicidedContractInOneBlockFiller.json
- SimpleTx3LowSFiller.json
- SimpleTxFiller.json
- callRevertFiller.json
- dataTx2Filler.json
- diff1024Filler.json
- eip2930Filler.yml
- emptyPostTransferFiller.yml
- gasLimitTooHigh2Filler.json
- log1_correctFiller.json
- reentrencySuicideFiller.yml
- timeDiff12Filler.json
- timeDiff13Filler.json
- timeDiff14Filler.json
- gasPrice0Filler.json (legacytests only)
bcWalletTest/ (5 files)
- wallet2outOf3txs2Filler.json
- wallet2outOf3txsFiller.json
- wallet2outOf3txsRevokeAndConfirmAgainFiller.json
- wallet2outOf3txsRevokeFiller.json
- walletReorganizeOwnersFiller.json
TransitionTests/ (legacytests only, 21 files)
bcArrowGlacierToParis/ (3 files)
- difficultyFormulaFiller.yml
- powToPosBlockRejectionFiller.json
- powToPosTestFiller.json
bcBerlinToLondon/ (3 files)
- BerlinToLondonTransitionFiller.json
- initialValFiller.yml
- londonUnclesFiller.json
bcByzantiumToConstantinopleFix/ (1 file)
- ConstantinopleFixTransitionFiller.json
bcEIP158ToByzantium/ (1 file)
- ByzantiumTransitionFiller.json
bcFrontierToHomestead/ (7 files)
- CallContractThatCreateContractBeforeAndAfterSwitchoverFiller.json
- ContractCreationFailsOnHomesteadFiller.json
- HomesteadOverrideFrontierFiller.json
- UncleFromFrontierInHomesteadFiller.json
- UnclePopulationFiller.json
- blockChainFrontierWithLargerTDvsHomesteadBlockchain2Filler.json
- blockChainFrontierWithLargerTDvsHomesteadBlockchainFiller.json
bcHomesteadToDao/ (4 files)
- DaoTransactionsFiller.json
- DaoTransactions_EmptyTransactionAndForkBlocksAheadFiller.json
- DaoTransactions_UncleExtradataFiller.json
- DaoTransactions_XBlockm1Filler.json
bcHomesteadToEIP150/ (1 file)
- EIP150TransitionFiller.json
bcMergeToShanghai/ (1 file)
- shanghaiBeforeTransitionFiller.json
Appendix C: TransactionTestsFiller files
Source: ethereum/tests develop src/TransactionTestsFiller/
ttAddress/ (4 files)
- AddressLessThan20Filler.json
- AddressLessThan20Prefixed0Filler.json
- AddressMoreThan20Filler.json
- AddressMoreThan20PrefixedBy0Filler.json
ttData/ (9 files)
- DataTestEnoughGASFiller.json
- DataTestFirstZeroBytesFiller.json
- DataTestLastZeroBytesFiller.json
- DataTestNotEnoughGASFiller.json
- DataTestZeroBytesFiller.json
- String10MbDataFiller.json
- String10MbDataNotEnoughGASFiller.json
- dataTx_bcValidBlockTestFiller.json
- dataTx_bcValidBlockTestFrontierFiller.json
ttEIP1559/ (9 files)
- GasLimitPriceProductOverflowFiller.json
- GasLimitPriceProductOverflowtMinusOneFiller.json
- GasLimitPriceProductPlusOneOverflowFiller.json
- maxFeePerGas00prefixFiller.json
- maxFeePerGas32BytesValueFiller.json
- maxFeePerGasOverflowFiller.json
- maxPriorityFeePerGas00prefixFiller.json
- maxPriorityFeePerGasOverflowFiller.json
- maxPriorityFeePerGass32BytesValueFiller.json
ttEIP2028/ (2 files)
- DataTestInsufficientGas2028Filler.json
- DataTestSufficientGas2028Filler.json
ttEIP2930/ (7 files)
- accessListAddressGreaterThan20Filler.json
- accessListAddressLessThan20Filler.json
- accessListAddressPrefix00Filler.json
- accessListStorage0x0001Filler.json
- accessListStorage32BytesFiller.json
- accessListStorageOver32BytesFiller.json
- accessListStoragePrefix00Filler.json
ttEIP3860/ (4 files)
- DataTestEnoughGasInitCodeFiller.yml
- DataTestInitCodeLimitFiller.yml
- DataTestInitCodeTooBigFiller.yml
- DataTestNotEnoughGasInitCodeFiller.yml
ttGasLimit/ (10 files)
- NotEnoughGasLimitFiller.json
- TransactionWithGasLimitOverflow256Filler.json
- TransactionWithGasLimitOverflow64Filler.json
- TransactionWithGasLimitOverflowZeros64Filler.json
- TransactionWithGasLimitxPriceOverflowFiller.json
- TransactionWithHighGasLimit63Filler.json
- TransactionWithHighGasLimit63Minus1Filler.json
- TransactionWithHighGasLimit63Plus1Filler.json
- TransactionWithHighGasLimit64Minus1Filler.json
- TransactionWithLeadingZerosGasLimitFiller.json
ttGasPrice/ (4 files)
- TransactionWithGasPriceOverflowFiller.json
- TransactionWithHighGasPrice2Filler.json
- TransactionWithHighGasPriceFiller.json
- TransactionWithLeadingZerosGasPriceFiller.json
ttNonce/ (10 files)
- TransactionWithEmptyBigIntFiller.json
- TransactionWithHighNonce256Filler.json
- TransactionWithHighNonce32Filler.json
- TransactionWithHighNonce64Filler.json
- TransactionWithHighNonce64Minus1Filler.json
- TransactionWithHighNonce64Minus2Filler.json
- TransactionWithHighNonce64Plus1Filler.json
- TransactionWithLeadingZerosNonceFiller.json
- TransactionWithNonceOverflowFiller.json
- TransactionWithZerosBigIntFiller.json
ttRSValue/ (29 files)
- RightVRSTestF0000000aFiller.json
- RightVRSTestF0000000bFiller.json
- RightVRSTestF0000000cFiller.json
- RightVRSTestF0000000dFiller.json
- RightVRSTestF0000000eFiller.json
- RightVRSTestF0000000fFiller.json
- RightVRSTestVPrefixedBy0Filler.json
- RightVRSTestVPrefixedBy0_2Filler.json
- RightVRSTestVPrefixedBy0_3Filler.json
- TransactionWithRSvalue0Filler.json
- TransactionWithRSvalue1Filler.json
- TransactionWithRvalue0Filler.json
- TransactionWithRvalue1Filler.json
- TransactionWithRvalueHighFiller.json
- TransactionWithRvalueOverflowFiller.json
- TransactionWithRvaluePrefixed00BigIntFiller.json
- TransactionWithRvaluePrefixed00Filler.json
- TransactionWithRvalueTooHighFiller.json
- TransactionWithSvalue0Filler.json
- TransactionWithSvalue1Filler.json
- TransactionWithSvalueEqual_c_secp256k1n_x05Filler.json
- TransactionWithSvalueHighFiller.json
- TransactionWithSvalueLargerThan_c_secp256k1n_x05Filler.json
- TransactionWithSvalueLessThan_c_secp256k1n_x05Filler.json
- TransactionWithSvalueOverflowFiller.json
- TransactionWithSvaluePrefixed00BigIntFiller.json
- TransactionWithSvaluePrefixed00Filler.json
- TransactionWithSvalueTooHighFiller.json
- unpadedRValueFiller.json
ttSignature/ (34 files)
- EmptyTransactionFiller.json
- PointAtInfinityFiller.json
- RSsecp256k1Filler.json
- RightVRSTestFiller.json
- SenderTestFiller.json
- TransactionWithTooFewRLPElementsCopier.json
- TransactionWithTooManyRLPElementsCopier.json
- Vitalik_1Filler.json through Vitalik_17Filler.json (17 files)
- WrongVRSTestIncorrectSizeFiller.json
- WrongVRSTestVOverflowFiller.json
- ZeroSigTransaction2Filler.json
- ZeroSigTransaction3Filler.json
- ZeroSigTransaction4Filler.json
- ZeroSigTransaction5Filler.json
- ZeroSigTransaction6Filler.json
- ZeroSigTransactionFiller.json
- invalidSignatureFiller.json
- libsecp256k1testFiller.json
ttValue/ (3 files)
- TransactionWithHighValueFiller.json
- TransactionWithHighValueOverflowFiller.json
- TransactionWithLeadingZerosValueFiller.json
ttVValue/ (28 files)
- InvalidChainID0ValidV0Filler.json
- InvalidChainID0ValidV1Filler.json
- V_equals37Filler.json
- V_equals38Filler.json
- V_overflow32bitFiller.json
- V_overflow32bitSignedFiller.json
- V_overflow64bitPlus27Filler.json
- V_overflow64bitPlus28Filler.json
- V_overflow64bitSignedFiller.json
- V_wrongvalue_101Filler.json
- V_wrongvalue_121Filler.json
- V_wrongvalue_122Filler.json
- V_wrongvalue_123Filler.json
- V_wrongvalue_124Filler.json
- V_wrongvalue_ffFiller.json
- V_wrongvalue_ffffFiller.json
- ValidChainID1InvalidV00Filler.json
- ValidChainID1InvalidV01Filler.json
- ValidChainID1InvalidV0Filler.json
- ValidChainID1InvalidV1Filler.json
- ValidChainID1ValidV0Filler.json
- ValidChainID1ValidV1Filler.json
- WrongVRSTestVEqual26Filler.json
- WrongVRSTestVEqual29Filler.json
- WrongVRSTestVEqual31Filler.json
- WrongVRSTestVEqual36Filler.json
- WrongVRSTestVEqual39Filler.json
- WrongVRSTestVEqual41Filler.json
ttWrongRLP/ (59 files)
- RLPAddressWithFirstZerosCopier.json
- RLPAddressWrongSizeCopier.json
- RLPArrayLengthWithFirstZerosCopier.json
- RLPElementIsListWhenItShouldntBe2Copier.json
- RLPElementIsListWhenItShouldntBeCopier.json
- RLPExtraRandomByteAtTheEndCopier.json
- RLPHeaderSizeOverflowInt32Copier.json
- RLPIncorrectByteEncoding00Copier.json
- RLPIncorrectByteEncoding01Copier.json
- RLPIncorrectByteEncoding127Copier.json
- RLPListLengthWithFirstZerosCopier.json
- RLPNonceWithFirstZerosCopier.json
- RLPTransactionGivenAsArrayCopier.json
- RLPValueWithFirstZerosCopier.json
- RLP_04_maxFeePerGas32BytesValueCopier.json
- RLP_09_maxFeePerGas32BytesValueCopier.json
- RLPgasLimitWithFirstZerosCopier.json
- RLPgasPriceWithFirstZerosCopier.json
- TRANSCT_HeaderGivenAsArray_0Copier.json
- TRANSCT_HeaderLargerThanRLP_0Copier.json
- TRANSCT__RandomByteAtRLP_0Copier.json through _9Copier.json (10 files)
- TRANSCT__RandomByteAtTheEndCopier.json
- TRANSCT__ZeroByteAtRLP_0Copier.json through _9Copier.json (10 files)
- TRANSCT_data_GivenAsListCopier.json
- TRANSCT_gasLimit_GivenAsListCopier.json
- TRANSCT_gasLimit_Prefixed0000Copier.json
- TRANSCT_gasLimit_TooLargeCopier.json
- TRANSCT_rvalue_GivenAsListCopier.json
- TRANSCT_rvalue_Prefixed0000Copier.json
- TRANSCT_rvalue_TooLargeCopier.json
- TRANSCT_rvalue_TooShortCopier.json
- TRANSCT_svalue_GivenAsListCopier.json
- TRANSCT_svalue_Prefixed0000Copier.json
- TRANSCT_svalue_TooLargeCopier.json
- TRANSCT_to_GivenAsListCopier.json
- TRANSCT_to_Prefixed0000Copier.json
- TRANSCT_to_TooLargeCopier.json
- TRANSCT_to_TooShortCopier.json
- aCrashingRLPCopier.json
- aMaliciousRLPCopier.json
- tr201506052141PYTHONCopier.json
Appendix D: InvalidRLP files
Source: ethereum/tests develop src/InvalidRLP/
Root level (7 filler files + 2 non-test)
- withdrawalsAddressBoundsFiller.json
- withdrawalsAmountBoundsFiller.json
- withdrawalsIndexBoundsFiller.json
- withdrawalsRLPlessElementsFiller.json
- withdrawalsRLPmoreElementsFiller.json
- withdrawalsRLPnotAListFiller.json
- withdrawalsValidatorIndexBoundsFiller.json
- ConvertThisTestValueOverflowParis.txt (non-test)
- README.md (non-test)
bcForgedTest/ (11 files)
- bcBlockRLPAsListFiller.json
- bcBlockRLPPrefixed0000Filler.json
- bcBlockRLPRandomByteFiller.json
- bcBlockRLPTooLargeFiller.json
- bcBlockRLPZeroByteFiller.json
- bcForkBlockTestFiller.json
- bcInvalidRLPTest_BLOCKFiller.json
- bcInvalidRLPTest_TRANSACTFiller.json
- bcTransactRLPRandomByteFiller.json
- bcTransactRLPTooLargeFiller.json
- bcTransactRLPZeroByteFiller.json
Appendix E: Legacy-only extras (ethereum/legacytests)
These exist only in ethereum/legacytests and are NOT in ethereum/tests develop.
Inclusion depends on Phase 0 triage.
Constantinople/VMTestsFiller/ (613 files)
- vmArithmeticTest/ (196 files)
- vmBitwiseLogicOperation/ (61 files)
- vmBlockInfoTest/ (5 files)
- vmEnvironmentalInfo/ (33 files)
- vmIOandFlowOperations/ (144 files)
- vmLogTest/ (46 files)
- vmPerformance/ (18 files)
- vmPushDupSwapTest/ (74 files)
- vmRandomTest/ (6 files)
- vmSha3Test/ (18 files)
- vmSystemOperations/ (7 files)
- vmTests/ (1 file)
Constantinople/GeneralStateTests/ (9,549 files)
Older pre-refactoring version with significantly more test files per directory:
- stTimeConsuming/ (5,189 files)
- stZeroKnowledge/ (804 files)
- stZeroKnowledge2/ (519 files)
- stPreCompiledContracts/ (519 files)
- stSStoreTest/ (465 files)
- stStaticCall/ (493 files)
- stRandom/ (313 files)
- stRandom2/ (223 files)
- stRevertTest/ (211 files)
- stStackTests/ (207 files)
- stTransactionTest/ (156 files)
- (plus ~40 more directories with smaller counts)
Activity
github-actions commentedon May 26, 2026
This issue has had no recent activity and has been marked as stale.
leolara commentedon Jun 8, 2026
Phase 0.1 — Constantinople GeneralStateTests triage
Re-filled all 2,394
GeneralStateTests(legacytests Constantinople snapshot) underEELS in-process t8n and compared to each fixture's historical
stateRoot+logsHash.port the generators not outputs per 0.4; 232 individual).
Manifest attached (
phase0_1_constantinople_gst.json.gz, 1.2 MB, schema 1.1). Eachport_candidatecarries aport_payload. Generated byscripts/legacy_migration/phase0/(PR #TBD). Cancun snapshot + VMTests are out of scope here (0.2 separate).
phase0_1_constantinople_gst.json.gz
chfast commentedon Jun 8, 2026
Does EELS/EEST have support for Constantinople, Spurious Dragon and Tangerine Whistle? Otherwise this comparison is incomplete.
leolara commentedon Jun 8, 2026
A quick look give me that there is some support, but not sure how complete it is. Please ask in our discord if you need it :-)
chfast commentedon Jun 8, 2026
You are claiming "2,394 / 2,394 (100%) reproduced", but you are missing 3 forks here. Even if you introduce them later, you loose guarantee that every test was ported correctly.
leolara commentedon Jun 8, 2026
Sorry — I read your question as general rather than about this case specifically.
What we did: for every filled test in https://github.com/ethereum/legacytests/tree/master/Constantinople/GeneralStateTests (the Constantinople directory/snapshot — not the fork), we re-ran its transaction on https://github.com/ethereum/execution-specs at every fork that test declares a post for, and compared the resulting
state root + logs hash to the expected ones. (These are filled fixtures, not fillers — the fillers are in ethereum/tests; each fixture's _info.source links back to its filler.)
Across the forks we can run, all 20,714 expected post-states matched, 0 mismatches:
We skip exactly one fork: the Constantinople label in legacytests (10,577 post-states). That is Constantinople with EIP-1283, which was reverted before mainnet — execution-specs only implements the post-revert ruleset (it names it constantinople, but it is ConstantinopleFix/Petersburg, without EIP-1283), so those expected
results can't be reproduced. (Note: what legacytests calls ConstantinopleFix is what execution-specs calls constantinople.)
Separately, on porting status: 2,013 of the 2,394 tests are referenced by a ported_from marker in execution-specs (matched by filler name) → already ported; 381 are not and likely need porting. That match is by name, so 381 is an upper bound, some may be covered by renamed or unmarked modern tests.
chfast commentedon Jun 8, 2026
It's fine then.
leolara commentedon Jun 9, 2026
Phase 0.2: legacy VMTests (
ethereum/legacytests,Constantinople/VMTests, 609 tests).Method. The name-based
ported_fromlink reaches only 2 of 609, since VMTests were retired upstream (PR #680) and re-ported under different names. So I compared by bytecode. Each VMTestexec.codeis reduced to an opcode skeleton, with PUSH immediates masked, and compared by whole-code similarity against the same skeletons from the modern ported tests (tests/ported_static, filled to state tests).Results.
Each entry in the attached manifest records the similarity percent, the modern test that produced it, and the
ported_frommarker when one exists.Caveat. EVM test bytecode is mostly shared plumbing (
PUSH,MSTORE,SSTORE,STOP,RETURN), so a similarity below 100 can come from boilerplate. For that reason only an exact skeleton counts as matching.not_matchingmeans the code is structurally different. It does not prove the case is net-new, since the same opcodes can appear through a different code shape.phase0_2_constantinople_vmtests.json
leolara commentedon Jun 9, 2026
Phase 0.3: port net-new coverage. By net-new I mean the legacy tests that the modern suite does not already cover, the ones that have no equivalent in
execution-specs.0.3 asks whether to port only this net-new coverage or to bulk-import everything and deduplicate at fill time. With the 0.1 and 0.2 results, the choice is to port net-new, and the triage manifests are the deduplication.
Reasons.
GeneralStateTestscarry aported_fromlink. 0.2: 284 of 609 VMTests match modern bytecode exactly, plus 21 in the 90 to 99 band.Worklist.
ported_from(upper bound, name-based). 149 are generator-family, so port the few source generators (0.4). 232 individual, confirm then port withfiller_to_pythonwhere the filler allows, and hand-port the rest.ported_frombacklink on the matched modern test, no re-port. The 21 in the 90 to 99 band get a manual review. The 304 below 90 stay unported by default, since they add no opcode-level coverage and the format is deprecated.Tooling.
filler_to_python(state filler to EEST Python) handles the GST individuals, fed from theethereum/testsfillers at pin7dc757ec. It does not handle VMTests, which are filled single-frame fixtures and whose fillers were retired upstream. So the VMTests rely on theported_frombacklinks above.Both net-new counts are upper bounds and get a short confirmation pass before the final port list.
leolara commentedon Jun 9, 2026
Phase 0.4: generated precompile families (ecmul, ecadd, ecpairing).
Method. For these auto-generated families I compared the legacy input vectors against the modern parametrized precompile tests, to see whether porting the generator adds coverage. The legacy filenames encode the input (point, scalar, gas, input length), so I matched those against the parametrization in
tests/byzantium/eip196_ec_add_mul/.Result.
test_ecmul.py,test_ecadd.py,test_gas.py, andtest_ecpairing.py. They cover the families and are broader than the legacy set, since they add the group-order boundary scalars.ported_frommarker: ecmul 147, ecadd 2, ecpairing 0. They did not match by name because the modernported_frompoints at the Cancun fillers, not the Constantinople ones.test_gas.py). The genuine gaps are small: 5 arbitrary scalars (616, 1456, 5616, 5617, 9935) on the generator point, a length-64 input, and the 2 ecadd vectors.Decision. Do not port the output files. Add the missing input vectors as parametrizations to the existing tests, and add the Constantinople fillers to their
ported_fromlists. No new test files are needed. Most gaps are mechanical: invalid points expect empty output, infinity inputs return infinity, and covered scalars at a new length reuse a known result. The 5 valid-multiplication results are already in the legacy fixtures, so read them from there.leolara commentedon Jun 10, 2026
Phase 0.1 extension: compare against
ethereum/testsas well.The first pass of 0.1 compared the legacytests Constantinople GeneralStateTests against the modern execution-specs suite, through the
ported_frommarkers. That answers whether execution-specs already covers a test. It does not answer whether the test still exists upstream. The issue's 0.1 also asks for a comparison against the currentethereum/testsfillers, so I am adding that second axis.Method. Match each Constantinople test against the
ethereum/testsfillers at pin7dc757ec(src/GeneralStateTestsFiller/), keyed on the filler's subdirectory and name. Each test then has two signals: whether execution-specs already covers it, and whether a live filler exists upstream.Result (2,394 tests).
ported_frommarker cites it): 2,013.The 179 port targets split into 34 individual fillers, portable with
filler_to_python, and 145 from the generated families, handled by extending the parametrized precompile tests. The 202 are dominated bystPreCompiledContracts(90, modexp and identity), which the modern parametrized precompile tests likely already cover.Effect on Phase 1. The real
filler_to_pythonworklist is about 34, well below the 381 that the execution-specs comparison gives on its own. The rest is either a generated family or a consolidated upstream test, so it needs a coverage check rather than a per-file port.leolara commentedon Jun 16, 2026
Phase 0 consolidated output.
The Phase 0 triage now produces one JSON that the later phases consume,
phase0_consolidated.json(attached, gzipped). It merges every Phase 0 signal so a porter can act on each test without reopening the source manifests or the clones.Scope. legacytests Constantinople
GeneralStateTests(2,394) andVMTests(609), compared against two references: the modern execution-specs suite through theported_frommarkers, and theethereum/testsfillers at pin7dc757ec.Shape. Three populations linked on a
(subdir, basename)key, plus afamiliesblock and a self-describingmetablock (scope, provenance, aport_methodlegend, and caveats):pin_fillers(2,642): theethereum/testsGeneralStateTestsFiller, the forward-looking archive set.legacy_gst(2,394): the legacytests Constantinople GeneralStateTests.legacy_vmtests(609): the legacytests Constantinople VMTests.Every unit carries a
port_methodthat says what to do with it. Eachlegacy_gstrow that still needs porting also carries the resolved filler path, the fork range, and aport_payload(pre, env, transaction, and the EELS-computed result per fork), so the port needs nothing else.Routing (the worklist).
port_methodvalues:already_ported,filler_to_python(render the filler to a Python test),parametrize(extend the family's modern test, add aported_from),backlink(add aported_fromon the covering test),decide_port_or_drop,drop_default,review_native.Correctness. The per-fork
expected_by_forkvalues were cross-checked against the historical fixtures: 7,492 cells with a legacy oracle matched the recordedstateRootandlogs, with zero mismatches.Caveats. The name-based matches are upper bounds, so a
filler_to_pythonrow may already be ported under a renamed test. Abacklinkrests on the subdir having some ported test, so verify the covering test before writing the marker. The 68 dynamic-jump VMTests aredecide_port_or_drop, since the modern jump tests do not cover runtime-computed destinations, so they need a ruling rather than a drop.The builder (
consolidate.py) regenerates the file from the per-subphase manifests, the pin fillers, and a freshported_from, against the current spec commit. The full field reference is in this PR atscripts/legacy_migration/phase0/phase0-consolidated-json-schema.md.phase0_consolidated.json.gz
refactor(tests): remove dead static-filler infrastructure (#3283)
refactor(tests): remove dead static-filler infrastructure (ethereum#3283
github-actions commentedon Aug 16, 2026
This issue has had no recent activity and has been marked as stale.