Retrospective LLM-Based Complexity Evaluations

EIP complexity assessment

EIP-8024: Backward compatible SWAPN, DUPN, EXCHANGE

Assessed in Amsterdam / Glamsterdam. The score describes the EIP text available at the assessment cutoff, not the EIP as it stands today.

RetrospectiveAmsterdam / GlamsterdamAssessment cutoff 2025-10-29Included by cutoffLayers: execution
LLM Completescore 13
Human Completescore 6 · Checklist revision 1· merged checklist

Evaluated on: · Spec revision: 2025-09-17 · 28578c7ba0

Scope at the cutoff. At the information cutoff, the proposal added three execution-layer opcodes at 0xe6 through 0xe8 for immediate-encoded deep duplication, deep swapping, and pairwise exchange of stack items. Each opcode carries a one-byte immediate and charges a fixed 3 gas, while selected immediate values are forbidden so that existing JUMPDEST and PUSH interpretation remains unchanged. The stated scope is opcode semantics, encoding and decoding, assembly/disassembly, and execution; it does not introduce transaction, block, state, precompile, or external-interface changes.

13MediumMedium
Evaluator
LLMChecklist v2
Confidence
Medium
Under-specified at assessment cutoff
Yes — 2 criteria affected
Plausible range
12–14 (Medium)
Assessment cutoff
2025-10-29 · EIP revision 28578c7ba0 (2025-09-17)
Score bands · Checklist revision 2
  • Low <12
  • Medium 12–22
  • High ≥23

28 criteria scored 0–3 (4 in exceptional cases; cross-EIP interactions is uncapped); nominal maximum 84.

Complexity profile

Each segment is one criterion's contribution to the LLM total. Hover or focus a segment for its score and rationale.

Top complexity drivers

  1. Added opcodes3
  2. Edge/boundary conditions3
  3. EVM Gas rule changes2
  4. Security risks2

Under-specified at assessment cutoff: Yes

The EIP text available at the assessment cutoff left material behavior unresolved. The affected criteria and the plausible total range record that uncertainty.

Why: Material but localized under-specification is present. The formal algorithms read code[pc + 1] without explicitly defining a missing immediate at end-of-code, and stack-fault behavior is left to implicit base-EVM conventions. This chiefly affects boundary baselining rather than the proposal's overall design.

Plausible total

12–14
recorded score 13 · plausible tiers Medium

Unresolved questions at the cutoff (2)
  • What exact execution result and program-counter treatment applies when DUPN, SWAPN, or EXCHANGE is the final byte of code and code[pc + 1] is unavailable?
  • Are stack underflow and overflow for every decoded depth intended to inherit existing EVM exceptional-halt behavior without additional wording?
Notable ambiguities noted by the assessor (3)
  • The final-byte immediate case is not explicitly defined even though every formal opcode algorithm reads code[pc + 1].
  • The phrase "revert, consuming all gas" appears to specify an exceptional halt, but it does not use a precise named base-EVM exception.
  • The gas anchor can be read narrowly as only a new fixed opcode cost; this assessment treats the three isolated cost rules as a new accounting rule without effects on existing schedules.

Criterion breakdown

EIP-8024 Amsterdam / Glamsterdam: LLM criterion scores and rationale
CriterionScoreWhy this scoreEvidence / uncertainty
Added opcodes3The EIP introduces multiple opcodes and each has a data portion plus nontrivial decoded stack indexing; EXCHANGE also decodes two operands. At least one is complex under the anchor, so multiple additions warrant score 3.
  • eip.md · Specification, lines 29-65 Three new opcodes, DUPN, SWAPN, and EXCHANGE, are allocated; all consume an immediate byte and perform decoded stack manipulation.
Confidence: High
Edge/boundary conditionsUnder-specified3Multiple independent boundary families require coverage: allowed versus forbidden immediate ranges, both decode branches, pair constraints, program-counter and instruction-boundary behavior, and stack underflow/overflow at decoded depths. The combinatorial encoding and JUMPDEST/PUSH compatibility surface calls for an elevated number of cases, matching score 3.
  • eip.md · Specification, lines 43-89 Each opcode has immediate-validity boundaries, decoded stack-index boundaries, stack access behavior, and a two-branch pair-decoding function.
  • eip.md · Rationale / Disallowed immediate range and EXCHANGE immediate, lines 117-131 The encoding excludes JUMPDEST and PUSH bytes to prevent cascading instruction-boundary changes, while EXCHANGE deliberately maps a constrained set of stack-index pairs.
  • eip.md · Test Cases, lines 154-175 Examples cover valid and invalid single and pair encodings, multiple PUSH widths, JUMPDEST preservation, and execution outcomes.
Confidence: High
Uncertainty: The terminal-byte immediate case is not explicitly specified and is recorded under under-specification.
EVM Gas rule changes2The proposal creates gas rules for new operations but leaves existing opcode gas schedules and accounting mechanisms unchanged. This matches the score-2 anchor for a new, isolated gas-accounting rule that does not alter existing mechanisms.
  • eip.md · Specification, lines 43-65 Each of the three newly allocated opcodes charges a fixed 3 gas before decoding and executing its immediate operand.
  • eip.md · Rationale / Gas cost, lines 142-144 The fixed cost is justified by comparison to existing DUP and SWAP operations and by the negligible cost of pointer swapping and immediate decoding.
Confidence: High
Security risks2The stack operations are localized, but their unusual immediate-validity rules interact with instruction decoding, static analysis, and consensus-critical jump destinations. Preserving the stated backwards-compatibility invariant warrants targeted review and fuzzing across this limited set of components, matching score 2.
  • eip.md · Rationale / Use of an immediate operand, lines 111-115 Static immediates are chosen specifically to preserve stack-content analysis used by security auditors.
  • eip.md · Rationale / Disallowed immediate range, lines 117-125 Incorrect instruction-boundary handling could remove or create JUMPDESTs and cascade through later bytecode, while arbitrary sequences can exist in deployed or pending code.
  • eip.md · Security Considerations, lines 177-179 The authors report no additional known risks but acknowledge that one instruction can newly access deeper stack items.
Confidence: Medium
Uncertainty: The proposal asserts that no additional risks are known, so the score reflects review burden from the documented decoding interaction rather than a known vulnerability.
Patterns affecting pre-existing tests1Existing tests that deliberately execute the formerly undefined opcode bytes or test nearby instruction boundaries need limited expectation updates. The explicit compatibility design prevents this from extending beyond a minor, specialized subset, matching score 1.
  • eip.md · Rationale / Disallowed immediate range, lines 117-125 Bytes 0xe6 through 0xe8 change from undefined opcodes to immediate-bearing operations, while forbidden immediate values are designed to preserve existing JUMPDEST and PUSH boundaries.
  • eip.md · Backwards Compatibility and Test Cases, lines 150-175 Existing code is unaffected unless it attempts to execute an allocated opcode, and examples exercise the changed invalid-opcode and jump-target cases.
Confidence: Medium
Uncertainty: The sealed package contains no pre-existing test inventory, so the affected subset size is inferred from the proposal's compatibility guarantee.
Performance risks1The new deep-index decode and stack operations merit isolated validation of the fixed gas-cost assumption, but are self-contained and are not expected to disturb existing performance behavior. This matches score 1.
  • eip.md · Rationale / Gas cost and EXCHANGE vs SWAPN, lines 142-148 The implementation model is a pointer swap plus simple immediate decoding, asserted to have negligible decoding overhead and no extra runtime cost.
  • eip.md · Security Considerations, lines 177-179 The stack remains fixed at 1024 items and is described as already held in memory by most implementations.
Confidence: Medium
Uncertainty: No benchmark evidence is packaged; the validation scope is inferred from the proposal's gas-cost rationale.
Unspecified behavior requiring cross-client consensusUnder-specified1A few constructible boundary cases rely on an implicit base-EVM reading, most notably an opcode at the final byte with no immediate available. The intended use of established code-fetch and stack-fault conventions is apparent and localized, so this fits score 1 rather than requiring broad design agreement.
  • eip.md · Specification, lines 43-69 Each algorithm reads code[pc + 1] and indexes the stack, but the text does not explicitly state the result when the opcode is the final code byte; invalid present immediates and instruction-boundary handling are specified.
  • eip.md · Test Cases, lines 154-175 The examples cover numerous valid and invalid two-byte forms but do not include a missing immediate at end-of-code.
Confidence: Medium
Uncertainty: It is unclear from the sealed text alone whether end-of-code reads and all stack fault paths are intended to inherit existing EVM conventions without an explicit rule.
Show 21 zero-score criteria
Zero-score criteria (Checklist revision 2)
CriterionScoreWhy this scoreEvidence / uncertainty
Modified opcodes0Adding behavior at formerly undefined opcode values is scored as added opcodes, not modification or deprecation of an existing opcode.
  • eip.md · Specification and Backwards Compatibility, lines 31-35 and 150-152 The proposal allocates previously undefined bytes as new instructions while preserving existing JUMPDEST behavior; it does not change a pre-existing opcode's result.
Added precompiles0No precompile is introduced.
  • eip.md · Specification, lines 29-65 The change is fully specified as ordinary opcode execution and contains no precompile address or call interface.
Modified precompiles0No existing precompile logic or gas accounting is modified.
  • eip.md · Specification, lines 29-65 Only new stack opcodes and their fixed gas charges are specified; no precompile behavior or gas schedule appears.
Added system contracts0No system contract is added.
  • eip.md · Abstract and Specification, lines 13-15 and 29-35 The feature allocates three opcodes and does not introduce any contract address, code deployment, or system action.
Modified system contracts0No existing system-contract code or state is directly or indirectly modified.
  • eip.md · Backwards Compatibility, lines 150-152 Contracts that never execute the newly allocated opcode bytes are unaffected, and existing jump targets are preserved.
State-access ordering within opcode execution0No opcode performs a state access, so neither state-access placement nor gas-charge ordering relative to a state access changes.
  • eip.md · Specification, lines 37-67 The new operations read, duplicate, or swap only stack entries and do not access persistent state.
Blob gas accounting changes0No blob gas accounting is introduced or modified.
  • eip.md · Specification, lines 29-65 The specification is limited to three stack instructions with ordinary fixed gas charges and contains no blob-gas rule.
State gas accounting changes0No state-writing charge, state-gas rate, budget, reservoir, or spill rule changes.
  • eip.md · Specification, lines 37-65 All specified effects are on the program counter and in-memory EVM stack; no state write or state-gas site is present.
New EVM gas refund0The proposal introduces no gas-refund mechanism.
  • eip.md · Specification, lines 43-65 The opcode algorithms charge 3 gas and specify no refund action.
New transaction types0No transaction type is added.
  • eip.md · Abstract and Specification, lines 13-15 and 29-35 The proposal introduces stack instructions only and defines no transaction envelope or type identifier.
New or modified transaction validity mechanisms0No transaction validity rule or intrinsic-gas calculation changes.
  • eip.md · Specification, lines 29-109 All validation conditions concern opcode immediate bytes during VM execution, not transaction validity or intrinsic gas.
New block / header fields0No block or block-header field is introduced.
  • eip.md · Specification, lines 29-109 The specification contains opcode and bytecode fields only and defines no block-body or header field.
Encoding changes (RLP/SSZ)0Bytecode instruction encoding is outside this anchor's transaction, block, and interface RLP/SSZ scope.
  • eip.md · Specification, lines 31-41 and 91-109 The only encoding introduced is an immediate byte inside EVM bytecode; no transaction, block, or interface encoding changes.
Block syncing changes0No block RLP field or validation mechanism is introduced.
  • eip.md · Specification, lines 29-69 The proposal changes EVM bytecode execution and explicitly discusses code-level JUMPDEST analysis, not block RLP validation.
New fork activation mechanism0The EIP requires no fork-block state or internal-variable modification.
  • eip.md · Specification and Backwards Compatibility, lines 29-35 and 150-152 Activation allocates three instruction bytes, with no stated one-time state transition or modification of an internal variable at the activation block.
Engine API changes0No Engine API communication field or mechanism changes.
  • eip.md · Specification, lines 29-109 The specification defines only opcode numbers, immediates, execution semantics, and assembler encodings; it defines no Engine API field or endpoint.
Transition-tool interface changes0Opcode execution can be exercised through existing transition inputs, with no new transition-tool interface field.
  • eip.md · Specification, lines 29-109 The entire specified input is opcode bytecode and one-byte immediates; no transition-tool field or interface mechanism is defined.
New invariant on pre-existing tests0Some old invalid-opcode expectations may be reworked, but unrelated tests do not gain an additional EIP-produced value or invariant to assert.
  • eip.md · Rationale / Disallowed immediate range, lines 119-125 Preserving existing execution traces and JUMPDEST locations is a compatibility property of this EIP rather than a new output every unrelated test must assert.
  • eip.md · Test Cases, lines 154-175 The listed assertions are feature-specific assembly and execution examples, not a new assertion applied to all pre-existing tests.
New test-framework primitives0Raw bytecode, stack-result, success, and exceptional-halt cases can be represented with ordinary EVM test capabilities; the proposal does not require a new reusable expectation or modifier primitive.
  • eip.md · Test Cases, lines 154-175 Tests are expressed as ordinary bytecode assembly/disassembly mappings and execution results or halts.
Uncertainty: The package does not describe the test framework, but none of the proposed assertions requires a novel result type.
Cryptography0No cryptographic mechanism is introduced or modified.
  • eip.md · Abstract and Specification, lines 13-15 and 29-89 The feature consists of stack indexing, swapping, and arithmetic decoding, with no cryptographic operation.
Cross-EIP interactions0The proposal is self-contained at the EIP level and identifies no coordinated cross-EIP testing requirement.
  • eip.md · Specification and Rationale, lines 29-69 and 111-148 The feature refers only to existing EVM opcodes and stack behavior and identifies no dependency on, modification of, or conflict with another numbered EIP.
Assessment provenance
Assessed EIP revision
ethereum/EIPs@28578c7ba0 EIPS/eip-8024.md committed 2025-09-17 · information cutoff 2025-10-29T02:00:31Z
Current master · File history · blob b519c1ce60 · sha256 c4de111b08cf
Rubric
Checklist revision 2 · ethspecs/pm@3d8c0128c5
Evaluator
gpt-5.6-sol at xhigh reasoning effort · isolation bubblewrap_one_eip_capsule_v1
Source record
Frozen research record research/tasks/05-retrospective-complexity-assignment/outputs/fork-eips/amsterdam/eip-8024.yaml · sha256 5f3bb2571aae

Evaluated on: · Spec revision: 2025-09-17 · 28578c7ba0

Scope at the cutoff. Blinded assessment of the sealed Review-stage proposal introducing three one-byte-immediate EVM stack-manipulation opcodes, evaluated only against the sealed historical checklist and allowlisted package evidence.

11MediumMedium
Evaluator
LLMChecklist v1
Confidence
Medium
Under-specified at assessment cutoff
Yes — 2 criteria affected
Plausible range
10–12 (Medium)
Assessment cutoff
2025-10-29 · EIP revision 28578c7ba0 (2025-09-17)
Score bands · Checklist revision 1
  • Low <10
  • Medium 10–19
  • High ≥20

24 criteria scored 0–3 (4 in exceptional cases; cross-EIP interactions is uncapped); nominal maximum 72.

Complexity profile

Each segment is one criterion's contribution to the LLM total. Hover or focus a segment for its score and rationale.

Top complexity drivers

  1. Added opcodes3
  2. Edge/boundary conditions3
  3. Security risks2
  4. EVM Gas rule changes1

Under-specified at assessment cutoff: Yes

The EIP text available at the assessment cutoff left material behavior unresolved. The affected criteria and the plausible total range record that uncertainty.

Why: The specification does not explicitly define behavior when the immediate byte is absent at end of code, when the referenced stack item is unavailable, or when DUPN would exceed the stack limit; it also says invalid immediates 'revert, consuming all gas' without defining the exact exceptional-halt semantics. These omissions are recorded once here rather than added as separate complexity in unrelated rows.

Plausible total

10–12
recorded score 11 · plausible tiers Medium

Unresolved questions at the cutoff (3)
  • What exact execution result applies if code[pc + 1] is beyond the bytecode?
  • What exact exceptional behavior applies to insufficient stack depth and to DUPN at the 1024-item stack limit?
  • Does 'revert, consuming all gas' denote the EVM's exceptional halt, and what precise state and returndata effects are required?
Notable ambiguities noted by the assessor (4)
  • The gas row does not expressly classify fixed gas assigned to new opcodes; score 1 treats it as an update to the existing constant-cost mechanism, not a new mechanism.
  • The exact extent of affected pre-existing tests is unavailable; score 1 is inferred from the narrow formerly-undefined opcode range and stated backwards-compatibility guarantee.
  • The historical checklist provides no definition for Engine API encoding changes; that row is conservatively scored from its label with low confidence.
  • Opcode-immediate encoding is distinct from the transaction/block/interface encoding covered by the RLP/SSZ row.

Criterion breakdown

EIP-8024 Amsterdam / Glamsterdam: LLM criterion scores and rationale
CriterionScoreWhy this scoreEvidence / uncertainty
Added opcodes3Three opcodes are added, and all are complex under the checklist because they have an immediate data portion and nontrivial stack mechanics; this directly matches score 3.
  • eip.md · Specification The proposal allocates DUPN (0xe6), SWAPN (0xe7), and EXCHANGE (0xe8); each carries an immediate byte and performs depth-dependent or paired stack manipulation.
Confidence: High
Uncertainty: The complexity classification is clear from the specified immediate operands and stack indexing, although some exceptional execution details are under-specified separately.
Edge/boundary conditionsUnder-specified3Multiple boundary-prone mechanisms require coverage: opcode-specific immediate cutoffs, allowed-range discontinuities, decoder endpoints, deep stack availability, DUPN stack growth, and instruction-boundary/JUMPDEST behavior. The byte-domain and stack-depth combinations create an elevated test matrix.
  • eip.md · Specification; Rationale > Disallowed immediate range; Test Cases Three instructions use different discontinuous valid byte ranges, decoder boundary mappings, depth-dependent stack indexes, and special decoding around JUMPDEST and PUSH bytes.
Confidence: Medium
Uncertainty: The exact behavior for a missing immediate byte and for insufficient or full stack conditions is not explicit, so boundary expectations at those points remain under-specified.
Security risksUnder-specified2Correctness interacts with a limited set of existing critical behaviors—bytecode decoding, program-counter advancement, jump-target analysis, and stack indexing. A defect could create consensus-visible execution differences, so targeted review and fuzzing are warranted, but the interaction surface remains limited.
  • eip.md · Rationale > Use of an immediate operand; Rationale > Disallowed immediate range; Security Considerations The design protects static analysis and existing JUMPDEST/PUSH decoding by forbidding immediate ranges, while adding deep-stack access through three new execution paths.
Confidence: Medium
Uncertainty: The authors report no additional risks, but no implementation evidence is allowed and exceptional behavior for missing immediates or unavailable stack items is not fully specified.
EVM Gas rule changes1The proposal extends the existing constant-cost EVM gas schedule to three new instructions, but introduces no new accounting mechanism or dynamic interaction; this is an update to the existing mechanism.
  • eip.md · Specification; Rationale > Gas cost Each of DUPN, SWAPN, and EXCHANGE charges a constant 3 gas, explicitly matching existing DUP and SWAP instructions.
Confidence: Medium
Uncertainty: The checklist does not explicitly distinguish a new opcode's fixed gas assignment from an existing-mechanism update; the score conservatively treats it as the latter.
Patterns affecting pre-existing tests1Only the minor subset of pre-existing tests that assumes e6-e8 are undefined or exercises decoding around those bytes would need adjustment; the stated compatibility guarantee limits wider regression impact.
  • eip.md · Backwards Compatibility; Test Cases > Assembly/Disassembly The proposal allocates previously undefined bytes e6-e8 while preserving existing jump targets; its cases distinguish valid new instructions from invalid-immediate decoding.
Confidence: Medium
Uncertainty: The sealed package contains no pre-existing test inventory, so the subset size is inferred solely from the proposal's narrow opcode allocation and compatibility discussion.
Performance risks1The new instruction paths merit isolated benchmarking, but their fixed-size decoding and pointer-based stack operations are self-contained and are not specified to change existing performance behavior.
  • eip.md · Rationale > Gas cost; Security Considerations The proposal characterizes the operations as pointer swaps with negligible immediate decoding and notes that implementations generally keep the fixed 1024-item stack in memory.
Confidence: Medium
Uncertainty: The performance claims are qualitative and no measurements are present in the sealed evidence; deep-stack access behavior may vary by implementation.
Show 18 zero-score criteria
Zero-score criteria (Checklist revision 1)
CriterionScoreWhy this scoreEvidence / uncertainty
Modified opcodes0No pre-existing opcode's behavior is modified or deprecated; converting formerly undefined byte values into added opcodes is accounted for by the added-opcodes row.
  • eip.md · Specification; Backwards Compatibility The proposal allocates previously undefined bytes for new instructions, states JUMPDEST analysis is unchanged, and preserves existing jump targets.
Uncertainty: The allocated bytes previously behaved as undefined instructions, but the checklist distinguishes adding opcodes from modifying a pre-existing opcode.
Added precompiles0No precompile is introduced.
  • eip.md · Abstract; Specification The proposal adds EVM opcodes and no addressed native function or precompile.
Uncertainty: None material within the sealed proposal; precompiles are absent from the specified architecture.
Modified precompiles0No pre-existing precompile logic or gas accounting is modified.
  • eip.md · Specification; Rationale > Gas cost The gas and behavior changes apply only to the three new instructions; no precompile logic or gas schedule is mentioned.
Uncertainty: None material within the sealed proposal; there is no precompile-related mechanism.
Added system contracts0No system contract is introduced.
  • eip.md · Abstract; Specification The proposal introduces EVM instructions only and specifies no contract deployment, address, code, state, or system action.
Uncertainty: None material within the sealed proposal; no system-contract component appears in the design.
Modified system contracts0No pre-existing system contract code or state is directly modified, and no system-contract-specific indirect effect is specified.
  • eip.md · Specification; Backwards Compatibility The change is limited to opcode allocation and execution semantics, and the compatibility section claims no effect on contracts that never execute the allocated opcodes.
Uncertainty: None material within the sealed proposal; the evidence identifies no system contract affected by the instructions.
Blob gas accounting changes0No blob gas accounting change is introduced.
  • eip.md · Abstract; Specification The proposal is confined to three EVM stack-manipulation instructions and specifies no blob mechanism or blob gas rule.
Uncertainty: None material within the sealed proposal; blob accounting is outside its stated and specified scope.
New EVM gas refund0No new EVM gas-refund mechanism is introduced.
  • eip.md · Specification; Rationale > Gas cost The instructions charge 3 gas and the proposal defines no refund action or refund accounting.
Uncertainty: None material within the sealed proposal; only up-front constant instruction charges are specified.
New transaction types0No new transaction type is introduced.
  • eip.md · Abstract; Specification The proposal defines three EVM instructions and does not define a transaction envelope or transaction type.
Uncertainty: None material within the sealed proposal; transactions are not part of the specified change.
New or modified transaction validity mechanisms0No new or modified transaction validity mechanism is introduced.
  • eip.md · Specification The validity checks concern opcode immediate bytes during EVM execution; no transaction validity rule or intrinsic gas calculation is changed.
Uncertainty: The invalid-immediate rules are execution semantics, not transaction admission or intrinsic-gas validity rules under this row.
New block / header fields0No new block or block-header field is introduced.
  • eip.md · Specification The specification adds opcode numbers and immediate semantics only; it defines no block or header field.
Uncertainty: None material within the sealed proposal; block structure is outside its scope.
Encoding changes (RLP/SSZ)0No encoding change at the transaction, block, or interface level is introduced, so the rubric's binary RLP/SSZ row scores zero.
  • eip.md · Specification The proposal defines one-byte immediate encodings within EVM bytecode, not transaction, block, or interface RLP/SSZ encoding.
Uncertainty: The proposal uses the word encoding for opcode immediates, but that code-level encoding is outside the row's expressly stated transaction/block/interface scope.
Block syncing changes0No new block RLP validation mechanism requiring client syncing is introduced.
  • eip.md · Specification The proposal changes EVM bytecode instruction execution and explicitly leaves JUMPDEST analysis unchanged; it defines no block RLP validation rule.
Uncertainty: None material within the sealed proposal; block encoding and sync validation are outside its specified scope.
New fork activation mechanism0No state or internal-variable modification at the fork activation block is introduced.
  • eip.md · Specification; Backwards Compatibility Activation makes three opcode bytes executable but specifies no activation-block state transition, internal-variable modification, or initialization procedure.
Uncertainty: The proposal does not provide a separate activation section; the score is limited to the absence of the state/internal-variable changes defined by this row.
Engine API changes0No Engine API fields or communication mechanisms are introduced.
  • eip.md · Specification All inputs and effects are local to EVM code, stack, gas, and program counter; no Engine API field, endpoint, or communication mechanism is specified.
Uncertainty: None material within the sealed proposal; there is no Engine API surface in the described change.
Engine API encoding changes0Conservatively applying the row label, no Engine API encoding change is present.
  • eip.md · Specification The only encoding defined is an immediate byte inside EVM code; no Engine API object, field, or wire encoding is described.
Uncertainty: The historical checklist contains this row but supplies no dedicated definition; the score is therefore based only on the row label and the proposal's absence of any Engine API surface.
Transition-tool interface changes0No modification to the transition-tool interface is required by the proposal as written.
  • eip.md · Specification The specification defines EVM instruction execution, immediate decoding, stack effects, and program-counter updates, with no transition-tool fields or interface mechanism.
Uncertainty: None material within the sealed proposal; no transition-tool interface is mentioned or implied by the specified execution-local inputs.
Cryptography0No cryptography mechanism or cryptographic functionality is introduced or modified.
  • eip.md · Abstract; Specification The proposal performs stack duplication and swaps plus integer immediate decoding; it introduces no cryptographic operation.
Uncertainty: None material within the sealed proposal; all defined operations are stack indexing and basic arithmetic.
Cross-EIP interactions0No cross-EIP dependency or coordinated cross-EIP testing requirement is established by the sealed evidence.
  • eip.md · Abstract; Specification; Backwards Compatibility The proposal is self-contained around three opcode allocations and references no dependency on, modification of, or conflict with another EIP.
Uncertainty: No supporting documents are allowlisted, but the proposal itself declares no other-EIP interaction.
Assessment provenance
Assessed EIP revision
ethereum/EIPs@28578c7ba0 EIPS/eip-8024.md committed 2025-09-17 · information cutoff 2025-10-29T02:00:31Z
Current master · File history · blob b519c1ce60 · sha256 c4de111b08cf
Rubric
Checklist revision 1 · ethspecs/pm@d936bcb349
Evaluator
gpt-5.6-sol at xhigh reasoning effort · isolation bubblewrap_one_eip_capsule_v1
Source record
Frozen research record research/tasks/05c-amsterdam-human-assessment-alignment/outputs/automated/eip-8024.yaml · sha256 462eeb34487d

Evaluated on: Not recorded · Spec revision: 2025-11-04 · db5c483ea1

6LowLow
Evaluator
HumanChecklist v1
Confidence
Not recorded
Under-specified at assessment cutoff
Not recorded in the checklist
Checklist published
2025-11-05 · EIP at db5c483ea1
Score bands · Checklist revision 1
  • Low <10
  • Medium 10–19
  • High ≥20

24 criteria scored 0–3 (4 in exceptional cases; cross-EIP interactions is uncapped); nominal maximum 72.

Complexity profile

Each segment is one criterion's contribution to the Human total. Hover or focus a segment for its score and rationale.

Top complexity drivers

  1. Added opcodes3
  2. Edge/boundary conditions2
  3. Performance risks1

Criterion breakdown

EIP-8024 Amsterdam / Glamsterdam: Human criterion scores and rationale
CriterionScoreWhy this scoreNotes
Added opcodes3Introduces 3 new opcodes
Edge/boundary conditions2No rationale recorded.
Performance risks1Performance may be impacted if a client implementation doesn't keep the whole stack in memory
Show 21 zero-score criteria
Zero-score criteria (Checklist revision 1)
CriterionScoreWhy this scoreNotes
Modified opcodes0No rationale recorded.
Added precompiles0No rationale recorded.
Modified precompiles0No rationale recorded.
Added system contracts0No rationale recorded.
Modified system contracts0No rationale recorded.
EVM Gas rule changes0No rationale recorded.
Blob gas accounting changes0No rationale recorded.
New EVM gas refund0No rationale recorded.
New transaction types0No rationale recorded.
New or modified transaction validity mechanisms0No rationale recorded.
New block / header fields0No rationale recorded.
Encoding changes (RLP/SSZ)0No rationale recorded.
Block syncing changes0No rationale recorded.
New fork activation mechanism0No rationale recorded.
Engine API changes0No rationale recorded.
Engine API encoding changes0No rationale recorded.
Transition-tool interface changes0No rationale recorded.
Patterns affecting pre-existing tests0No rationale recorded.
Security risks0No rationale recorded.
Cryptography0No rationale recorded.
Cross-EIP interactions0No rationale recorded.
Assessment provenance
Assessed EIP revision
ethereum/EIPs@db5c483ea1 EIPS/eip-8024.md committed 2025-11-04
EIP master revision at the time of the human checklist commit; the checklist itself does not pin an EIP revision.
Current master · File history · blob 6d23fa7554 · sha256 eb387a1073ee
Rubric
Checklist revision 1 · ethspecs/pm@d936bcb349
Evaluator
STEEL team · ethspecs/pm complexity_assessments
Source record
Merged checklist ethspecs/pm@e4f314d97a complexity_assessments/EIPs/eip8024.md · committed 2025-11-05
blob 466f9a56d9 · sha256 b5a8ce9a9638
Research record
research/tasks/05c-amsterdam-human-assessment-alignment/inputs/human/eip-8024.yaml · sha256 4f3e36e04092

Both assessments applied Checklist revision 1 (24 criteria) to EIP-8024 in Amsterdam / Glamsterdam. Δ is LLM minus Human.

LLM11Medium
Human6Low
Δ total+5Tiers differ: Medium vs Low
Criteria20/24agree exactly · 3 differ by 1 · 1 differ by 2+
Confounded comparison. The human checklist evaluated the EIP as it stood when the checklist was written; the LLM evaluated the sealed historical revision. Input alignment: substantive drift; human hindsight exposure: low exposure. The study's primary LLM score under checklist revision 2 is 13; it uses a different criterion inventory and thresholds and is not directly comparable to either total here.
Exposure evidence

The client-performance comment is hypothetical and the assessment identifies no visible implementation, devnet, or completed test evidence.

Substantive intervening revisions: Shifts the EXCHANGE operand encoding down by one so the assembly operands match the intended SWAP-like indexing. decode_pair returns (q + 1, r + 1) / (r + 1, 29 - q) instead of (q + 2, r + 2) / (r + 2, 30 - q), and encode_pair's assertion and arithmetic change from '2 <= n <= 14 and n < m <= 30 and n + m <= 32' with the m <= 17 branch to '1 <= n <= 13 and n < m <= 29 and n + m <= 30' with the m <= 16 branch. A Rationale paragraph is added explaining that the operands look off by one because EXCHANGE n m operates on stack depths n + 1 and m + 1, chosen so tha…

Complexity profiles side by side

LLM
Human

Largest disagreements: Security risks (+2), EVM Gas rule changes (+1), Patterns affecting pre-existing tests (+1), Edge/boundary conditions (+1)

Per-criterion scores, Human versus LLM, ordered by the size of the difference
CriterionLLMHumanΔAgreementRationale from each source
Security risks20+2Differ by 2+
Show rationale

LLM Correctness interacts with a limited set of existing critical behaviors—bytecode decoding, program-counter advancement, jump-target analysis, and stack indexing. A defect could create consensus-visible execution differences, so targeted review and fuzzing are warranted, but the interaction surface remains limited.

Human No rationale recorded.

EVM Gas rule changes10+1Differ by 1
Show rationale

LLM The proposal extends the existing constant-cost EVM gas schedule to three new instructions, but introduces no new accounting mechanism or dynamic interaction; this is an update to the existing mechanism.

Human No rationale recorded.

Patterns affecting pre-existing tests10+1Differ by 1
Show rationale

LLM Only the minor subset of pre-existing tests that assumes e6-e8 are undefined or exercises decoding around those bytes would need adjustment; the stated compatibility guarantee limits wider regression impact.

Human No rationale recorded.

Edge/boundary conditions32+1Differ by 1
Show rationale

LLM Multiple boundary-prone mechanisms require coverage: opcode-specific immediate cutoffs, allowed-range discontinuities, decoder endpoints, deep stack availability, DUPN stack growth, and instruction-boundary/JUMPDEST behavior. The byte-domain and stack-depth combinations create an elevated test matrix.

Human No rationale recorded.

Added opcodes330Agree
Show rationale

LLM Three opcodes are added, and all are complex under the checklist because they have an immediate data portion and nontrivial stack mechanics; this directly matches score 3.

Human Introduces 3 new opcodes

Modified opcodes000Agree
Show rationale

LLM No pre-existing opcode's behavior is modified or deprecated; converting formerly undefined byte values into added opcodes is accounted for by the added-opcodes row.

Human No rationale recorded.

Added precompiles000Agree
Show rationale

LLM No precompile is introduced.

Human No rationale recorded.

Modified precompiles000Agree
Show rationale

LLM No pre-existing precompile logic or gas accounting is modified.

Human No rationale recorded.

Added system contracts000Agree
Show rationale

LLM No system contract is introduced.

Human No rationale recorded.

Modified system contracts000Agree
Show rationale

LLM No pre-existing system contract code or state is directly modified, and no system-contract-specific indirect effect is specified.

Human No rationale recorded.

Blob gas accounting changes000Agree
Show rationale

LLM No blob gas accounting change is introduced.

Human No rationale recorded.

New EVM gas refund000Agree
Show rationale

LLM No new EVM gas-refund mechanism is introduced.

Human No rationale recorded.

New transaction types000Agree
Show rationale

LLM No new transaction type is introduced.

Human No rationale recorded.

New or modified transaction validity mechanisms000Agree
Show rationale

LLM No new or modified transaction validity mechanism is introduced.

Human No rationale recorded.

New block / header fields000Agree
Show rationale

LLM No new block or block-header field is introduced.

Human No rationale recorded.

Encoding changes (RLP/SSZ)000Agree
Show rationale

LLM No encoding change at the transaction, block, or interface level is introduced, so the rubric's binary RLP/SSZ row scores zero.

Human No rationale recorded.

Block syncing changes000Agree
Show rationale

LLM No new block RLP validation mechanism requiring client syncing is introduced.

Human No rationale recorded.

New fork activation mechanism000Agree
Show rationale

LLM No state or internal-variable modification at the fork activation block is introduced.

Human No rationale recorded.

Engine API changes000Agree
Show rationale

LLM No Engine API fields or communication mechanisms are introduced.

Human No rationale recorded.

Engine API encoding changes000Agree
Show rationale

LLM Conservatively applying the row label, no Engine API encoding change is present.

Human No rationale recorded.

Transition-tool interface changes000Agree
Show rationale

LLM No modification to the transition-tool interface is required by the proposal as written.

Human No rationale recorded.

Performance risks110Agree
Show rationale

LLM The new instruction paths merit isolated benchmarking, but their fixed-size decoding and pointer-based stack operations are self-contained and are not specified to change existing performance behavior.

Human Performance may be impacted if a client implementation doesn't keep the whole stack in memory

Cryptography000Agree
Show rationale

LLM No cryptography mechanism or cryptographic functionality is introduced or modified.

Human No rationale recorded.

Cross-EIP interactions000Agree
Show rationale

LLM No cross-EIP dependency or coordinated cross-EIP testing requirement is established by the sealed evidence.

Human No rationale recorded.

Criterion legend and glossary

Every stacked bar, comparison matrix, and criterion table on this site uses the same criterion colours, abbreviations, and order. Colour marks the criterion group; the abbreviation and name identify the criterion. Scores are 0–3 per criterion (4 is exceptional; cross-EIP interactions is uncapped).

EVM surface

Opcodes, precompiles, and system contracts that are added or modified.

  • Added opcodes
    Introduces new opcodes
    Score anchors
    0
    No new opcodes are introduced.
    1
    A new simple opcode is introduced (no data portion, no complex stack mechanics, and a constant gas cost).
    2
    Multiple new simple opcodes are introduced, or a single new complex opcode is introduced (has data portion, or complex stack mechanics, or a dynamic gas cost).
    3
    Multiple new opcodes are introduced, and at least one of them is complex (has data portion, or complex stack mechanics, or a dynamic gas cost).
    • Cryptography opcodes are not considered complex by default. Refer to the "Cryptography" section for a separate assessment.
  • Modified opcodes
    Modifies pre-existing opcodes
    Score anchors
    0
    No pre-existing opcode modifications are introduced.
    3
    At least one pre-existing opcode's behavior is modified (not including gas changes) or a pre-existing opcode is deprecated.
  • Added precompiles
    Introduces new precompiles
    Score anchors
    0
    No new precompiles are introduced.
    1
    A new simple precompile is introduced (constant input length, constant gas cost).
    2
    Multiple new simple precompiles are introduced, or a single new complex precompile is introduced (dynamic input length or dynamic gas cost).
    3
    Multiple new precompiles are introduced, and at least one of them is complex (dynamic input length or dynamic gas cost).
    • Cryptography precompiles are not considered complex by default. Refer to the "Cryptography" for a separate assessment.
  • Modified precompiles
    Modifies pre-existing precompiles logic or gas-accounting
    Score anchors
    0
    No pre-existing precompiles are modified.
    1
    At least one pre-existing precompile has its gas schedule modified.
    2
    Multiple pre-existing precompiles have their gas schedule modified, or a single pre-existing precompile has its behavior modified.
    3
    The behavior of multiple pre-existing precompiles, or a single complex pre-existing precompile modified.
  • Added system contracts
    Introduces new system contract, stateful or not
    Score anchors
    0
    No new system contracts are introduced.
    1
    A new system contract is introduced that is not stateful nor does it trigger a new system action (e.g. requests to the consensus layer).
    2
    Multiple new system contracts are introduced or a single new system contract that is either stateful or triggers a new system action (e.g. requests to the consensus layer).
    3
    Multiple new system contracts are introduced and at least one of them is either stateful or triggers a new system action (e.g. requests to the consensus layer).
  • Modified system contracts
    Modifies pre-existing system contracts
    Score anchors
    0
    No modifications to pre-existing system contracts are introduced, directly or indirectly.
    1
    Does not directly modify any system contract, but its behavior has minor indirect effects on one or more system contracts.
    2
    Does not directly modify any system contract, but its behavior has major indirect effects on one or more system contracts.
    3
    At least one pre-existing system contract code or state is modified, which would involve irregular state transition or a similarly complex transition methodology.

Gas and accounting

Execution, blob, and state gas rules, refunds, and where charges happen inside opcodes.

  • EVM Gas rule changes
    New EVM gas accounting rules
    Score anchors
    0
    No gas accounting changes.
    1
    Existing gas accounting mechanism is updated.
    2
    A new gas accounting mechanism is introduced but it does not affect existing mechanisms nor does it affect existing tests.
    3
    A new gas accounting mechanism is introduced and affects existing mechanisms which in turn affect existing tests.
  • State-access ordering within opcode execution · Checklist revision 2 only
    Changes *where inside an opcode's execution* state is accessed, or where gas is charged relative to that access. Because a state access is recorded in the block-level access list only if execution had enough gas to reach it, this ordering is consensus-critical: moving it changes the BAL at every gas boundary of every affected opcode.
    Score anchors
    0
    No change to where state is accessed, or to where gas is charged relative to a state access, within any opcode.
    1
    A single opcode's state-access or gas-charge ordering changes.
    2
    Multiple opcodes' ordering changes, or a new state-accessing operation is introduced whose position in the order must be settled.
    3
    The ordering rule changes for a whole class of state-accessing opcodes at once, or what counts as a recordable state access is redefined — requiring existing BAL vectors to be re-derived across opcodes and forks.
    • Distinct from "Modified opcodes", which asks whether an opcode's **result** changed. This row asks about the **path to the result**, which is observable even when the result is identical. An EIP can be 0 on that row and 3 on this one.
    • Score changes **to** the ordering. Do not score the fact that state accesses are observable — they always are.
    • Each boundary must be re-tested against every other dimension that can change the answer (cold/warm, static/non-static, delegated/direct, revert/success), so the case count grows multiplicatively rather than additively. Note this explicitly under Special Considerations.
  • Blob gas accounting changes
    New Blob gas accounting rules which potentially affect pre-existing tests
    Score anchors
    0
    No blob gas accounting changes.
    1
    Existing blob gas accounting mechanism is updated.
    2
    A new blob gas accounting mechanism is introduced but it does not affect existing mechanisms nor does it affect existing tests.
    3
    A new blob gas accounting mechanism is introduced and affects existing mechanisms which in turn affect existing tests.
  • State gas accounting changes · Checklist revision 2 only
    New state gas accounting rules. State gas is the cost of *writing* state, as opposed to accessing or executing it: `StateGasCosts`, `COST_PER_STATE_BYTE`, the block-level state gas budget, and the spill path into execution gas.
    Score anchors
    0
    No state gas accounting changes.
    1
    An existing state gas cost or `STATE_BYTES_PER_*` rate is adjusted.
    2
    A new state-gas-charging site is introduced, or the block-level state gas budget or reservoir allocation is modified.
    3
    A new state gas charging mechanism is introduced, or the spill interaction between state gas and execution gas is modified, affecting existing gas tests.
    • Harder to test than blob gas: the spill path means state gas cannot be metered independently of execution gas, and some costs (e.g. `NEW_ACCOUNT`) are state-dependent.
  • New EVM gas refund
    New gas-refund mechanism
    Score anchors
    0
    No new gas-refund mechanisms are introduced.
    1
    A new simple gas-refund mechanism is introduced that does not affect either existing tests or existing gas-refund mechanisms.
    2
    A new complex gas-refund mechanism is introduced or a simple mechanism that affects existing tests or existing gas-refund mechanisms.
    3
    A new complex gas-refund mechanism is introduced that affects existing tests or existing gas-refund mechanisms.

Blocks, transactions, and encoding

Transaction types and validity, block and header fields, encodings, syncing, and activation-time changes.

  • New transaction types
    Introduces a new transaction type
    Score anchors
    0
    No new transaction types are introduced.
    3
    A new transaction type is introduced.
  • New or modified transaction validity mechanisms
    Creates new or modifies pre-existing transaction types' validation mechanisms
    Score anchors
    0
    No changes are introduced to the validity rules of existing transaction types or to their intrinsic gas cost calculation.
    1
    Minor adjustments are introduced to validity rules or intrinsic gas cost calculation, but they do not significantly affect existing tests.
    2
    Changes to validity rules or intrinsic gas cost calculation affect existing tests, but require only limited updates to test cases and no redesign of the testing infrastructure.
    3
    Changes to validity rules or intrinsic gas cost calculation require extensive rework or redesign of the tests or testing infrastructure.
  • New block / header fields
    Introduces new block or block header fields
    Score anchors
    0
    No new block or header fields are introduced.
    3
    A new block or header field is introduced.
  • Encoding changes (RLP/SSZ)
    Introduces encoding changes at the transaction/block/interfaces level
    Score anchors
    0
    No encoding changes are introduced at the transaction, block, or interfaces levels.
    3
    An encoding change is introduced at transaction, block or interfaces level (e.g. RLP -> SSZ).
    • "Interfaces level" includes the Engine API. Score an Engine API encoding change (e.g. JSON -> SSZ) here.
  • Block syncing changes
    Modifies block RLP validation mechanisms that require test client syncing.
    Score anchors
    0
    No new RLP validation mechanism is introduced.
    1
    A single simple RLP validation mechanism is introduced.
    2
    Multiple simple RLP validation mechanisms are introduced or a single complex one.
    3
    Multiple RLP validation mechanisms are introduced and at least one of them is deemed complex.
  • New fork activation mechanism
    Modifies state, internal variables, or similar, at the fork activation block
    Score anchors
    0
    No state modifications, internal variables or similar are modified at the fork activation block.
    3
    Either a state modification or internal variables are modified at the fork activation block.
    • Initialization of new internal variable is not considered a modification.

Client interfaces

Engine API and transition-tool interface changes.

  • Engine API changes
    Introduces new fields to the Engine API directives
    Score anchors
    0
    No new fields or communication mechanisms are introduced to the Engine API.
    1
    A single new field is introduced in one of the Engine API endpoints.
    2
    Multiple fields are introduced to one or multiple Engine API end points, or a new Engine API end-point is introduced.
    3
    Multiple fields are introduced to one or multiple Engine API end points and a new Engine API end-point is introduced.
  • Engine API encoding changes · Checklist revision 1 only
    Engine API encoding changes (the revision-1 template defines no anchor text for this row).
  • Transition-tool interface changes
    Modifies or adds new fields to the transition tool interface.
    Score anchors
    0
    No modifications to the transition tool interface are required.
    1
    A single new field needs to be introduced to the transition tool interface.
    2
    Multiple new fields or a new mechanism has to be introduced to the transition tool interface.
    3
    Multiple new fields and a new mechanism has to be introduced to the transition tool interface.
    • Special consideration must be paid to this section if the EIP introduces a mechanism that requires the state transition tool to be aware whether the block it is processing is the fork-activation block.

Testing impact

Rework, new invariants, and new primitives required in the test framework.

  • Patterns affecting pre-existing tests
    Implements a new validation mechanism or rule that translates in reworking pre-existing tests
    Score anchors
    0
    No pre-existing tests are affected by this change.
    1
    Minor subset of existing tests are affected by this change.
    2
    Considerable subset of existing tests are affected by this change but involves only a contrived category of tests.
    3
    Major subset of existing tests are affected, including diverse category of tests (benchmarks, static, multiple forks, etc.).
  • New invariant on pre-existing tests · Checklist revision 2 only
    Tests that are **not about this EIP** must nonetheless assert something this EIP produces. Their logic does not change; they gain a new thing to check.
    Score anchors
    0
    Pre-existing tests assert nothing new.
    1
    A narrow, contrived category of pre-existing tests gains a new assertion.
    2
    A broad category gains a new assertion, applied mechanically.
    3
    Every test in the fork gains the assertion regardless of what it tests, and pre-fork vectors must be re-derived to satisfy it.
    • Paired with the row above, and easy to confuse with it. "Patterns affecting pre-existing tests" asks whether existing tests must be **reworked**; this row asks whether they must **additionally assert something new**. Score both — an EIP can be low on one and high on the other.
  • New test-framework primitives · Checklist revision 2 only
    Requires new abstractions in the test framework itself — expectation types, modifiers, helpers — beyond writing test functions with what already exists.
    Score anchors
    0
    Existing test primitives suffice.
    1
    Existing primitives need minor extension.
    2
    New expectation or modifier primitives are required, reusable within this EIP's own test suite.
    3
    New framework-level primitives are required that become a permanent part of the framework and are used by other EIPs' tests.

Risk and validation

Security, performance, boundary conditions, and cryptography that need validation.

  • Security risks
    Introduces or modifies mechanisms that could compromise the security of the chain, users, validators, or other stakeholders, if not implemented properly.
    Score anchors
    0
    No new mechanisms are introduced that could pose a security risk.
    1
    The introduced mechanisms are self-contained, can be validated in isolation, and do not alter existing invariants that could pose a security risk for any stakeholders.
    2
    The introduced mechanisms interact with a limited number of existing components, slightly altering their security assumptions and requiring a targeted security review or fuzzing.
    3
    The introduced mechanisms interact with multiple existing components, including critical ones, substantially altering their security assumptions and requiring an extensive security review and fuzzing.
  • Performance risks
    Introduces or modifies mechanisms and requires performance validation.
    Score anchors
    0
    No new mechanisms are introduced that require performance validation.
    1
    The introduced mechanisms can be benchmarked in isolation and do not affect existing performance behavior.
    2
    The introduced mechanisms cannot be fully benchmarked in isolation, but they only have a limited impact on the existing performance benchmarks.
    3
    The introduced mechanisms cannot be benchmarked in isolation and have a substantial impact on existing performance benchmarks or have complex interactions with existing mechanisms.
  • Edge/boundary conditions
    Feature contains edge/boundary conditions.
    Score anchors
    0
    No discernible edge cases or boundary conditions are introduced.
    1
    A single edge-case or boundary-condition prone mechanism is introduced.
    2
    Multiple edge-case or boundary-condition prone mechanisms are introduced, but none of them requires an elevated number of cases to test.
    3
    Multiple edge-case or boundary-condition prone mechanisms are introduced and at least one of them requires an elevated number of cases to test.
  • Cryptography
    Introduces new cryptography mechanisms or modifies existing functionality that involves cryptography
    Score anchors
    0
    No cryptography mechanisms are introduced.
    1
    A new cryptography mechanism is introduced but it is a well known mechanism that is known to have vast resources to aid on its testing.
    2
    Multiple new cryptography mechanisms are introduced that are well-known or a single but novel mechanism is introduced that is either untested or has limited resources.
    3
    Multiple new cryptography mechanisms are introduced and at least one of them is a novel mechanism.

Coordination

Cross-EIP interactions and behavior that clients must agree on before tests exist.

  • Cross-EIP interactions
    Introduces or modifies mechanisms that affect other EIPs in either the same or past forks.
    Score anchors
    0
    Fully self-contained EIP that does not depend on, modify, or conflict with any other EIP.
    1
    The EIP interacts with one or more other EIPs in a non-critical and limited way but can be tested independently for the most part.
    2
    The EIP depends on or modifies one or more other EIPs such that coordinated testing and consideration is required, but interactions are limited in scope and not complex.
    3
    The EIP has strong interdependencies with multiple EIPs, requiring extensive coordinated cross-EIP testing as well as potential re-design of existing test vectors.
    • +1 for every 3 additional interacting EIPs beyond the first 3, each of which requires its own coordinated test cases. List the EIPs in the rationale.
    • This row is intentionally uncapped, unlike every other anchor: each interacting EIP is another axis of the test matrix, so a ceiling would make a 12-EIP product indistinguishable from a 3-EIP one.
  • Unspecified behavior requiring cross-client consensus · Checklist revision 2 only
    The EIP text does not determine the answer for cases a test can construct. Clients must agree on a previously unspecified detail before tests can be baselined. The cost here is coordination and re-baselining, not test writing.
    Score anchors
    0
    The EIP text determines the answer for every case a test could construct.
    1
    A few details are unspecified but have an obvious intended reading.
    2
    Details require client agreement before tests can be written, but they are localized.
    3
    A previously unspecified *and previously unobservable* behavior becomes consensus-critical; expect tests to be re-baselined on each round of EIP amendment.
    • Score this from the EIP's state at assessment time: whether it has client implementations, whether it has been through a devnet, and how many open questions remain on its discussion thread.