FOCIL Breakout #41, September 1, 2026

Agenda

  • Development updates
  • Spec updates
  • Testing updates
  • and more

Meeting Time: Tuesday, September 01, 2026 at 13:00 UTC (60 minutes)

GitHub Issue

Meeting Summary:

The meeting focused on the Fossil Breakout 41 session where team members provided status updates on client implementations and discussed specification changes. Iván reported updating their implementation to pass latest spec tests, while Mehdi confirmed a DevNet zero branch for Teku was ready with recent spec changes including signed inclusion list, max size, and transactions emptiness check. Fabio indicated Vessel’s DevNet0 branch was ready but needed verification on BlockNumberBus spec changes, and Pelle confirmed Rath’s fossil-devnet-0 branch was updated and passing most tests. The team discussed two key specification changes: adding a 40KB limit for inclusion lists (which was approved as a minor oversight correction) and implementing new validity rules to reject empty transactions while ignoring empty inclusion lists. The group debated the practicality of these new rules, with some arguing they serve as defensive mechanisms while others questioned their necessity given current system design. Soispoke also mentioned an EIP related to FOSIL and FRAMES interaction that needed more expert review, particularly from the fossil team.

Click to expand detailed summary

The team provided updates on their implementation progress for the Fossil DevNet 0 launch. Iván reported passing latest spec tests with some fixture and harness issues being addressed through PRs. Mehdi confirmed a DevNet zero branch for Teku with recent spec changes, including signed inclusion list and max size adjustments, and successfully ran local interop testing with multiple clients. The team discussed spec changes, particularly PR 5576 which adds new validity rules for transaction lists, with Jihoon expressing concerns about the practicality of checking for empty transactions and transaction lists.

The team discussed a 40K byte limit for PIP object sizes in transaction lists, with Justin Traglia providing calculations showing how this number was derived based on maximum transaction sizes and offsets. They debated whether to add a new check preventing empty transactions from being included in inclusion lists, with Mehdi viewing it as a defensive mechanism while others like Justin Florentine and Fabio supported the addition due to safety concerns. The group agreed to specify in the engine API that inclusion lists should return non-empty transactions, with Justin Florentine recommending over-specifying given the current state of RPC documentation.

The team discussed adding tests for the get inclusion list endpoint, with Fabio supporting the idea based on a previous issue discovered by Mehdi. Jihoon raised concerns about the non-deterministic nature of the endpoint, noting that it’s difficult to predict expected results due to varying client implementations. Justin suggested an alternative approach using a debug namespace method in the test space, though the team didn’t reach a final decision on the specific implementation approach.

The team discussed two main topics regarding censorship detection and inclusion list validation. For censorship detection, they debated whether to standardize heuristics across clients versus allowing different implementations, with soispoke arguing that having varied approaches makes it harder to game the system. Regarding inclusion list validation, they agreed to add two rules: rejecting empty transactions and ignoring empty inclusion lists. Soispoke also mentioned an EIP (8369) related to FOSIL and FRAMES interaction that needs review from the team.

Next Steps:

  • Iván: Monitor the PRs submitted to the execution specs repo to fix fixture and harness issues.
  • Mehdi: Continue updating the Teku DevNet0 branch and investigate the small timing issues found during local interop.
  • Fabio: Double-check if the BlockNumberBus spec change affects EL and keep an eye on live tests for any issues.
  • Pelle: Ensure the Rath team is aware of the DevNet0 branch and its readiness for DevNet.
  • NC: Update the Lodestar FOCIL-DEV-0 branch to the latest version and continue running simple interop tests.
  • Cristian: Continue development and review of PRs related to inclusion list and signature verification for Lighthouse.
  • Jihoon: Try local interop with available clients (Teku, Lodestar, Etherex, Besu, Nethermind, Lighthouse) and assess readiness for DevNet0 launch.
  • Jihoon: Open a PR to add specifications in the engine API spec that EL should return non-empty transactions.
  • Jihoon: Discuss the override builder flag and Hive test for get inclusion list with Stihl and bring it up in the next ACD call.
  • Jihoon: Add to gos-sip rules: reject empty transactions and ignore empty inclusion lists.
  • soispoke: Share and seek input on the EIP related to FOCIL and FRAMES interaction, possibly discuss in next breakout.

Recording Access:

YouTube recording available: https://youtu.be/owjg1QnsiSc

The first FOCIL devnet is one local interop away.

Development Updates

  • ethrex: Iván updated ethrex to the latest spec tests and is passing all of them. He opened a couple of PRs to execution-specs to fix the problems with the fixtures and the harness.

  • Besu: Fabio updated Besu to the latest spec tests and is passing all of them.

  • Reth: Pelle has a devnet-0 branch that is passing the Hive tests and succeeded in basic interop with other clients.

  • Nethermind: Marc has a devnet-0 branch that is passing all the tests.

  • Teku: Mehdi updated its devnet-0 branch to include the recent spec changes. A local interop with Lodestar, ethrex and Besu worked fine. He is still looking into a few small timing issues and will keep the branch updated.

  • Lodestar: NC updated its devnet-0 branch to alpha.14.

  • Lighthouse: Cristian said Lighthouse is in development and most of the FOCIL work is in review.

Spec Updates

CL Spec Updates

  • consensus-specs#5544, which changes the IL store key to a pair of slot and dependent root, was merged and included in alpha.14.

  • consensus-specs#5576 raises MAX_SIGNED_INCLUSION_LIST_SIZE to 41112 bytes and adds gossip conditions that check transaction emptiness. After a discussion, people settled on two emptiness checks: reject an IL that contains an empty transaction and ignore an IL that has no transactions.

Testing Updates

  • Jihoon asked the EL people whether Hive tests for getInclusionList are worth having. His concern is that getInclusionList is non-deterministic. Given a set of transactions in the mempool, no particular IL is the expected outcome.

  • Justin asked how committed people are to having every client implement a different heuristic for censorship detection, and whether the question can be run by ACD. The mempool itself is non-deterministic, but if the heuristic were standardized, a Hive test would be reliable enough to test over.

  • Thomas said there is no objective function that detects censorship and that it has always been heuristics. He recalled the OFAC sanctions dashboards where everyone used their own metrics. Different rules across clients make the heuristic harder to game.

  • Jihoon will discuss this with STEEL and bring it up at the next ACDT to get more input.

FOCIL and Frames

  • Thomas shared EIP-8369 that is aimed at understanding how FOCIL and Frames interact. VOPS (Validity-Only Partial State) is the part of the state that mempool nodes have to store so they can evaluate whether transactions are valid. It’s easy with regular transactions, but it gets much harder with Frames.

  • People will use the next FOCIL breakout to go over EIP-8369 with a Q&A.

Devnet Timeline

  • Jihoon will try local interop with Teku, Lodestar, ethrex, Besu and Nethermind, and launch devnet-0 if it goes well.
1 Like