FOCIL Breakout #39, August 4, 2026

Agenda

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

Meeting Time: Tuesday, August 04, 2026 at 13:00 UTC (60 minutes)

GitHub Issue

1 Like

Meeting Summary:

The FOSSLOAD Breakout 39 meeting focused on client development status and specification changes. Client updates were provided by various team members, with Loadster and Bessel reporting no major updates, Teku’s FOCIL branch based on DevNet 7 available for testing, and Nethermind also based on DevNet 7 with passing tests but needing spec updates. Jihoon presented several specification changes including the merged EngineAPI PR and improvements to the IL store, including changing constant names for clarity and improving code readability. The team discussed combining timeliness and inclusiveness into one field in the IL store, with Nico and others providing feedback on implementation approaches. The conversation ended with a discussion about creating a new FossilDevNet release based on Alpha 13, with Justin confirming they could make another release due to recent changes.

Click to expand detailed summary

Jihoon led a FOSSLOAD Breakout 39 meeting focused on client development and spec changes. The team discussed client status updates, with Mehdi reporting that Teku’s FOCIL branch is based on DevNet 7, Marc noting that Nethermind is also based on DevNet 7 but needs to check for updates to the latest specs, and Nico mentioning that Loadster is now on DevNet-8. Jihoon presented several PRs related to EngineAPI and IL store improvements, including changes to constant names, improved readability of functions, and new safety checks for ILs obtained via request and response. The conversation ended with Jihoon seeking feedback on a proposed change to combine timeliness and inclusiveness into one field in the IL store.

Nico and Jihoon discussed a proposed change to store fork choice information, with Jihoon explaining that in the Fork Choice store, time lineage and work block time lineage are fetched separately, but in the iOS store they are handled together. They agreed to leave the PR open to gather more feedback rather than making a decision immediately. Jihoon also raised a question about how CL clients implement the IL store, specifically whether changing the key from IL commit root to slot and dependent root would better align with pruning requirements.

Jihoon and Nico discussed the implementation of proposer preferences storage and pruning mechanisms. Nico explained that the current client uses a cache structure indexed by slot and dependent root, with pruning implemented by deleting entries older than two slots. Jihoon planned to review how other clients handle proposer preferences and create a PR for implementation. The discussion also touched on comparing different approaches, including references to Lodestar and Teku implementations.

The team discussed moving forward with another release after Alpha 13, with Jihoon confirming they have made sufficient changes since the previous release. The conversation ended with Jihoon wrapping up the call and scheduling the next meeting in two weeks.

Next Steps:

  • Jihoon: Rebase the EELS on top of the latest spec changes, especially EngineAPI, to ensure the latest spec tests for ELs.
  • Jihoon: Open a PR to propose changing the IL store key from ILCommitRoot to (slot, dependentRoot) for pruning purposes and ask for feedback.
  • Jihoon: Review how other clients handle proposer preferences for reference.
  • Justin: Make another FOSS spec release (post Alpha 13) since changes have been made.
  • Marc: Check if Nethermind’s tests are updated to the latest specs.
  • All: Review the open PR 5513 (adds basic checks and replaces ILCommitteeRoot with dependentRoot) if time permits.

Recording Access:

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

FOCIL’s engine API has merged and the spec keeps maturing.

Development Updates

  • Lodestar has no update.

  • Besu has no update.

  • Teku is on glamsterdam-devnet-7.

  • Nethermind is on glamsterdam-devnet-7.

Spec Updates

  • The engine API PR has finally merged.

  • consensus-specs#5508 renames the size limit constant from MAX_BYTES_PER_INCLUSION_LIST to MAX_TRANSACTIONS_BYTES_PER_INCLUSION_LIST. The old name was ambiguous and people had asked several times how the size is measured, so the PR addresses that ambiguity.

  • consensus-specs#5507 improves the readability of the IL store functions. They were written in a Pythonic way that may not read well for non-Python developers, so the PR rewrites them with plain if statements and for loops.

  • consensus-specs#5487 stores signed inclusion lists so the IL store can handle req/resp.

  • consensus-specs#5513 modifies on_inclusion_list to perform basic checks on ILs coming from req/resp. It came out of NC’s findings: ILs obtained via req/resp have to be fed to on_inclusion_list, which had no sanity checks of its own because it was solely relying on the p2p checks. The PR also replaces the inclusion_list_committee_root field inside the IL with dependent_root, so a node processing ILs from different branches can still tell whether the validator is an includer. This PR is open for review.

  • consensus-specs#5512 folds IL and timeliness into the stored entry so the IL store has one dictionary instead of two. The reason is that the two are always coupled. This PR is open for review.

IL Store Key and Pruning

  • Jihoon asked how CL clients would implement the IL store. The IL store does not need to retain ILs for more than two slots. Its key is the IL committee root, which can be derived from a slot and dependent root pair. He wondered whether changing the key to a slot and dependent root would align the spec with implementations better, since ILs accessed by slot first and dependent root second can be pruned by dropping everything below the current slot minus two.

  • Nico said Lodestar does something like this for proposer preferences. Mehdi also shared in chat that Teku does something similar.

  • Jihoon said the key used to be a slot and IL committee root, but the slot was removed for simplicity, again thanks to NC, because a collision between IL committees within an epoch is very unlikely. He will look at how other clients handle proposer preferences and open a PR for people to chime in.

1 Like