Skip to content

docs(l1): refresh forks roadmap#6728

Open
edg-l wants to merge 4 commits into
mainfrom
docs/forks-roadmap-bal-devnet-7
Open

docs(l1): refresh forks roadmap#6728
edg-l wants to merge 4 commits into
mainfrom
docs/forks-roadmap-bal-devnet-7

Conversation

@edg-l
Copy link
Copy Markdown
Contributor

@edg-l edg-l commented May 26, 2026

Updates docs/roadmaps/forks-roadmap.md to reflect current state as of bal-devnet-7.

📄 Rendered: https://github.com/lambdaclass/ethrex/blob/docs/forks-roadmap-bal-devnet-7/docs/roadmaps/forks-roadmap.md

  • Current devnet bumped to bal-devnet-7 / tests-bal@v7.2.0 (EELS a3e5201a5), linked to tracking: bal-devnet-7 alignment #6583
  • EIPs 7954, 8025, 8159 moved to Implemented (were listed as not implemented)
  • Collapsed status-update history; doc is now forward-looking only
  • Removed Technical Debt and BAL Optimizations tables (all items done)
  • Added Active Work section: tests-bal@v7.3.0 EIPs, EIPs#11699 (EIP-7702 delegation BAL exclusion with file:line pointers), eth_simulateV1 ([BAL] Support eth_simulateV1 RPC method #6212)
  • Added Out of Scope section: debug_getRawBlockAccessList, debug receipt fields, deferred-on-success gas charging, zkboost fixtures
  • Fork Infrastructure table now lists full enum including Osaka + BPO1..BPO5
  • Expanded Glamsterdam CFI/PFI candidates (per EIP-7773) and added long-term Hegotá section (per EIP-8081): SFI 7805 FOCIL, CFI 8141, PFI 4758/7709/7716/8025/8188/8205/8253

No code or test changes.

@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 26, 2026

⚠️ Known Issues — intentionally skipped tests

Source: docs/known_issues.md

Known Issues

Tests intentionally excluded from CI. Source of truth for the Known
Issues
section the L1 workflow appends to each ef-tests job summary
and posts as a sticky PR comment.

EF Tests — Stateless coverage narrowed to EIP-8025 optional-proofs

make -C tooling/ef_tests/blockchain test calls test-stateless-zkevm
instead of test-stateless. The zkevm@v0.3.3 fixtures are filled against
bal@v5.6.1, out of sync with current bal spec; the broad target trips ~549
fixtures. Re-broaden once the zkevm bundle is regenerated.

Why and resolution path

PR #6527 broadened
test-stateless to extract the entire for_amsterdam/ tree from the
zkevm bundle and run all of it under --features stateless; combined with
this branch's bal-devnet-7 semantics that scope produces ~549
GasUsedMismatch / ReceiptsRootMismatch /
BlockAccessListHashMismatch failures.

test-stateless-zkevm filters cargo to the eip8025_optional_proofs
suite, which still validates the stateless harness without the bal-version
mismatch.

Re-broaden by switching test: back to test-stateless in
tooling/ef_tests/blockchain/Makefile once the zkevm bundle is regenerated
against the current bal spec.

@github-actions github-actions Bot added the L1 Ethereum client label May 26, 2026
@edg-l edg-l marked this pull request as ready for review May 26, 2026 14:14
@edg-l edg-l requested a review from a team as a code owner May 26, 2026 14:14
@ethrex-project-sync ethrex-project-sync Bot moved this to In Review in ethrex_l1 May 26, 2026
@github-actions
Copy link
Copy Markdown

🤖 Kimi Code Review

This is a documentation-only update to the Amsterdam hardfork roadmap. The restructuring from chronological status updates to a current-devnet-centric view is a significant improvement for readability.

Minor suggestions:

  1. Stale line number risk — The specific file references in the "Active Work" section will become outdated quickly:

    • crates/vm/levm/src/opcode_handlers/system.rs:889
    • ~line 962 inside generic_call

    Suggest adding a note that these are approximate and referencing the function names (record_bal_call_touch, generic_call) as the primary identifiers.

  2. Link consistency — The document uses inline links for specs#XXXX PRs (good) but reference links [#6361] for internal PRs. Consider standardizing on inline links for external repos and reference links for internal ones, or document this convention in the file header for future editors.

  3. EIP-7954 verification — The status changes from "Not implemented" to "✅ Implemented". If this PR is purely documentation, ensure the corresponding implementation code is already merged (likely via PR [BAL] EIP-7954: Increase Maximum Contract Size #6214 mentioned in the removed text).

  4. Date format — The tilde prefix in "~2026-05-29" is informal. Consider "Expected: 2026-05-29" or "(est. 2026-05-29)" for clarity.

Correctness check:

  • The fork enum order listed under "Fork Infrastructure" correctly places Amsterdam as the 26th fork (0-indexed: 25).
  • The [EIPs#11699] reference correctly identifies the upcoming spec change for EIP-7702 delegation BAL exclusion.

The documentation structure is clear and the technical details appear accurate. The removal of historical status sections (February/March updates) in favor of the "Current Devnet" + "Active Work" model reduces maintenance burden going forward.


Automated review by Kimi (Moonshot AI) · kimi-k2.5 · custom prompt

@github-actions
Copy link
Copy Markdown

🤖 Claude Code Review

Review: docs(l1): refresh forks roadmap for bal-devnet-7

This is a documentation-only PR — no code changes. The restructuring from a historical changelog into a forward-looking document is a clear improvement. Overall it's clean and well-organized. A few observations worth considering:


EIP-8025 Status Inconsistency

The "Core Amsterdam EIPs" table marks EIP-8025 as ✅ Implemented ([#6361]), but the "Out of Scope / Deferred" section includes:

EIP-8025 zkboost fixtures — 21 known-bad witness fixtures skipped; resolves once zkevm@v0.4.x bundle is regenerated against bal-7.

These two statements appear contradictory to a reader unfamiliar with the context. It would be clearer to qualify the "Implemented" status in the table, e.g., ✅ Implemented ([#6361]) — zkboost fixtures pending or similar, rather than leaving readers to reconcile the two sections.


Hardcoded Line Numbers in Active Work

The EIP-7702 delegation BAL exclusion block references concrete source locations:

Move delegation code_address BAL recording from record_bal_call_touch (crates/vm/levm/src/opcode_handlers/system.rs:889) to after the sender_balance/depth guards inside generic_call (~line 962).

Line numbers in a Markdown roadmap file are fragile — any unrelated refactor or insertion can silently invalidate these pointers. Consider using function names only (which you already do in the prose) and omitting the line numbers, or noting them with a "(as of bal-devnet-7)" qualifier so future readers know they may have drifted.


Near-Term Date Without a Tracking Issue

The Active Work section opens with:

tests-bal@v7.3.0 (expected ~2026-05-29)

That date is three days from now (today is 2026-05-26). If the release slips, this line becomes immediately stale. The document already has [#6583] for devnet-7 tracking — it would be worth linking or cross-referencing a fixture-pin tracking issue here too, so readers know where to watch for the actual drop rather than relying on a hard date.


Removed Link Definitions for Completed Work

A large number of PR links ([#5769], [#5970], [#5996], [#6020], etc.) were removed along with the historical status tables. This is intentional and consistent with the "forward-looking only" approach. It does mean that the document no longer serves as an audit trail linking EIP implementations to PRs. If that traceability is needed, docs/eip.md (already referenced) or git history is the right place, and the current refactoring is reasonable.


Minor Nits

  • The "Docker: bal-devnet-7 not in branches.yaml" operational note in the Fork Infrastructure section is useful context but could become stale after images are properly wired. Consider whether it belongs in a roadmap doc vs. a runbook or issue.
  • Removal of Nethermind PR #8760 (EIP-7954 Contract Size Draft) from "Other Client References" is reasonable since EIP-7954 is now implemented in ethrex and that external reference has lost its relevance.

Summary

The restructuring is solid — removing stale status-update noise and replacing it with an actionable forward view is the right call. The EIP-8025 inconsistency (Point 1) is the only item that could actively mislead a reader; the rest are minor polish suggestions.


Automated review by Claude (Anthropic) · sonnet · custom prompt

@github-actions
Copy link
Copy Markdown

🤖 Codex Code Review

Findings:

  1. Low: docs/roadmaps/forks-roadmap.md uses bare #9619 in prose (Nethermind draft #9619 only). On GitHub that will autolink to an ethrex PR/issue, not Nethermind’s PR, so the note is misleading. Use an explicit link or plain text without #.

  2. Low: docs/roadmaps/forks-roadmap.md hardcodes source line numbers (system.rs:889, ~line 962) inside roadmap guidance. Those references will drift as soon as system.rs changes, which makes the action item stale even if the underlying guidance is still right. Prefer function names only, or link to a specific commit permalink if exact locations matter.

No code correctness, security, gas-accounting, or consensus-risk findings here beyond the documentation issues above. I checked the concrete pinned values against .github/config/hive/amsterdam.yaml, and the referenced record_bal_call_touch / generic_call locations currently match the tree.


Automated review by OpenAI Codex · gpt-5.4 · custom prompt

@greptile-apps
Copy link
Copy Markdown

greptile-apps Bot commented May 26, 2026

Greptile Summary

This is a documentation-only refresh of docs/roadmaps/forks-roadmap.md to reflect the state at bal-devnet-7. No code or tests are changed.

  • Bumps the tracked devnet to bal-devnet-7 / tests-bal@v7.2.0 (EELS a3e5201a5), moves EIPs 7954, 8025, and 8159 to Implemented, and collapses the running monthly status-update history into a lean, forward-looking document.
  • Adds an Active Work section detailing upcoming v7.3.0 spec deltas (EIP-8037, EIP-7928 patches, EIP-7702 delegation BAL exclusion with file/line pointers) and an eth_simulateV1 placeholder.
  • Adds an Out of Scope / Deferred section and expands the Fork Infrastructure enum to include Osaka + BPO1..BPO5.

Confidence Score: 4/5

Documentation-only change; no production code or tests are modified, so the risk of merging is minimal.

The rewrite is accurate and well-structured. Two small clarifications would improve it: EIP-8159 is marked Implemented with no supporting PR link (unlike the other two newly-promoted EIPs), and the "Out of Scope / Deferred" label for debug_getRawBlockAccessList contradicts the inline note saying it is required for bal-devnet-7, which could cause confusion about whether the work is planned or abandoned.

docs/roadmaps/forks-roadmap.md — specifically the EIP-8159 row and the Out of Scope section heading.

Important Files Changed

Filename Overview
docs/roadmaps/forks-roadmap.md Docs-only refresh for bal-devnet-7: collapses historical status updates, adds Active Work / Out of Scope sections, and marks EIPs 7954/8025/8159 as Implemented. Minor: EIP-8159 row has no PR reference or owner; "Out of Scope" description for debug_getRawBlockAccessList mildly contradicts the inline note that it is "required for bal-devnet-7 protocol-side."

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    A["bal-devnet-7\ntests-bal@v7.2.0\nEELS a3e5201a5"] --> B["Active: tests-bal@v7.3.0\n(~2026-05-29)\nEIP-8037 + EIP-7928 patches"]
    A --> C["Active: EIPs#11699\nEIP-7702 delegation\nBAL exclusion"]
    A --> D["Active: eth_simulateV1\n#6212"]
    B --> E["glamsterdam- devnets\n(future prefix)"]
    A --> F["Out of Scope / Deferred\n• debug_getRawBlockAccessList\n• Debug receipt fields\n• Deferred-on-success gas\n• zkboost fixtures\n• Gas repricing EIPs"]
Loading
Prompt To Fix All With AI
Fix the following 2 code review issues. Work through them one at a time, proposing concise fixes.

---

### Issue 1 of 2
docs/roadmaps/forks-roadmap.md:44
**EIP-8159 row missing implementation evidence**

EIP-8159 (`eth/71 Block Access List Exchange`) is listed as `✅ Implemented` but unlike the other newly-promoted EIPs (8025 links `[#6361]`, 7954 was `[#6214]`), there is no PR reference, owner, or implementation note in the row. Given that the PR description explicitly calls this out as one of the three EIPs "moved to Implemented", adding a link to the implementing PR or commit would keep the table auditable and consistent with the entries around it.

### Issue 2 of 2
docs/roadmaps/forks-roadmap.md:80-81
**"Out of Scope" label conflicts with the inline note for `debug_getRawBlockAccessList`**

The bullet describes this RPC as "required for bal-devnet-7 protocol-side; tracked separately," which reads as in-scope work that simply lives in another tracking document. Labelling it "Out of Scope / Deferred" may mislead readers into thinking ethrex won't implement it for bal-devnet-7. Consider renaming the section (e.g., "Tracked Elsewhere" or "Not in this Document") or rewording the bullet so the distinction between "out of this doc's scope" and "out of the project's scope" is explicit.

Reviews (1): Last reviewed commit: "docs(l1): refresh forks roadmap for bal-..." | Re-trigger Greptile

| **7976** | Increase Calldata Floor Cost | ✅ Implemented | CFI | |
| **7981** | Increase Access List Cost | ✅ Implemented | CFI | |
| **7954** | Increase Max Contract Size (24→32 KiB) | ✅ Implemented | CFI | |
| **7872** | Max Blob Flag for Local Builders | ✅ Implemented | PFI | Edgar |
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 EIP-8159 row missing implementation evidence

EIP-8159 (eth/71 Block Access List Exchange) is listed as ✅ Implemented but unlike the other newly-promoted EIPs (8025 links [#6361], 7954 was [#6214]), there is no PR reference, owner, or implementation note in the row. Given that the PR description explicitly calls this out as one of the three EIPs "moved to Implemented", adding a link to the implementing PR or commit would keep the table auditable and consistent with the entries around it.

Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/roadmaps/forks-roadmap.md
Line: 44

Comment:
**EIP-8159 row missing implementation evidence**

EIP-8159 (`eth/71 Block Access List Exchange`) is listed as `✅ Implemented` but unlike the other newly-promoted EIPs (8025 links `[#6361]`, 7954 was `[#6214]`), there is no PR reference, owner, or implementation note in the row. Given that the PR description explicitly calls this out as one of the three EIPs "moved to Implemented", adding a link to the implementing PR or commit would keep the table auditable and consistent with the entries around it.

How can I resolve this? If you propose a fix, please make it concise.

Comment on lines +80 to 81
### [EIPs#11699] — EIP-7702 delegation BAL exclusion

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 "Out of Scope" label conflicts with the inline note for debug_getRawBlockAccessList

The bullet describes this RPC as "required for bal-devnet-7 protocol-side; tracked separately," which reads as in-scope work that simply lives in another tracking document. Labelling it "Out of Scope / Deferred" may mislead readers into thinking ethrex won't implement it for bal-devnet-7. Consider renaming the section (e.g., "Tracked Elsewhere" or "Not in this Document") or rewording the bullet so the distinction between "out of this doc's scope" and "out of the project's scope" is explicit.

Prompt To Fix With AI
This is a comment left during a code review.
Path: docs/roadmaps/forks-roadmap.md
Line: 80-81

Comment:
**"Out of Scope" label conflicts with the inline note for `debug_getRawBlockAccessList`**

The bullet describes this RPC as "required for bal-devnet-7 protocol-side; tracked separately," which reads as in-scope work that simply lives in another tracking document. Labelling it "Out of Scope / Deferred" may mislead readers into thinking ethrex won't implement it for bal-devnet-7. Consider renaming the section (e.g., "Tracked Elsewhere" or "Not in this Document") or rewording the bullet so the distinction between "out of this doc's scope" and "out of the project's scope" is explicit.

How can I resolve this? If you propose a fix, please make it concise.

Per EIP-7773 (Glamsterdam meta) and EIP-8081 (Hegotá meta):
- relabel implemented Amsterdam EIPs as SFI (not CFI) where applicable
- list Amsterdam EL CFI candidates not yet evaluated by ethrex
- add CL-side ePBS (7732) and notable DFI list
- expand Hegotá section with SFI (7805 FOCIL), CFI (8141), PFI (4758,
  7709, 7716, 8025, 8188, 8205, 8253)
@edg-l edg-l changed the title docs(l1): refresh forks roadmap for bal-devnet-7 docs(l1): refresh forks roadmap May 26, 2026
- Amsterdam consume-engine hive tests added to PR CI (~1000 tests)
- Amsterdam hive tests marked as optional (fork spec still evolving)
ethrex currently matches the **old** spec. When EELS merges:
- Move delegation `code_address` BAL recording from `record_bal_call_touch` (`crates/vm/levm/src/opcode_handlers/system.rs:889`) to after the `sender_balance`/depth guards inside `generic_call` (~line 962).
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: the line numbers (system.rs:889, ~962) are accurate today — I verified both against this branch — but this is a forward-looking action item ("when EELS merges, do X"), and system.rs will almost certainly shift before that happens, leaving an implementer chasing the wrong lines. Function-name anchors are more durable than line numbers for a "do this later" note:

Move delegation code_address BAL recording out of record_bal_call_touch to after the sender_balance/depth guards in generic_call (both in system.rs).

Low priority — just so the breadcrumb doesn't rot between now and the EELS merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

L1 Ethereum client

Projects

Status: In Review

Development

Successfully merging this pull request may close these issues.

4 participants