Skip to content

Group branches.yaml by EL/CL/MEV/ZK/Tooling/Other/Lean#386

Merged
barnabasbusa merged 3 commits into
masterfrom
bbusa/branches-yaml-groups-common-branches
May 20, 2026
Merged

Group branches.yaml by EL/CL/MEV/ZK/Tooling/Other/Lean#386
barnabasbusa merged 3 commits into
masterfrom
bbusa/branches-yaml-groups-common-branches

Conversation

@barnabasbusa
Copy link
Copy Markdown
Collaborator

Summary

  • Restructures branches.yaml so each top-level key is a group (el, cl, mev, zk, tooling, other, lean) instead of a flat client dict
  • Each group can declare common_branches: that get merged into every client in the group, with skip_common: true as a per-client opt-out — devnet branches (bal-devnet-3/bal-devnet-7/glamsterdam-devnet-4 for EL, glamsterdam-devnet-4 for CL) are now written once per group rather than repeated under every client
  • generate_config.py gains a small flatten_groups() step that runs before the existing expansion logic, so the rest of the script is untouched and the generated config.yaml is byte-identical to before

Common-branch opt-outs

  • el.common_branches: opted out by ethereumjs
  • cl.common_branches: opted out by caplin, consensoor

Test plan

  • python3 generate_config.py runs cleanly and reports 148 configurations (same as before)
  • Per-client branch lists verified identical pre/post for every EL and CL client (besu, erigon, ethereumjs, ethrex, geth, nethermind, nimbus-eth1, reth, caplin, consensoor, grandine, lighthouse, lodestar, nimbus-eth2, prysm-beacon-chain, teku)
  • 39 distinct client repositories in the generated config.yaml (37 base + prysm/nimbus splits) — none lost
  • Sanity-check a scheduled build run against this branch before merging

Restructures branches.yaml so each top-level key is a group whose
`common_branches:` list is merged into every client in that group, with
`skip_common: true` as a per-client opt-out. Trims repeated devnet branch
lists for ELs/CLs while leaving the generated config.yaml byte-identical.

- el.common_branches: bal-devnet-3, bal-devnet-7, glamsterdam-devnet-4
  (opted out: ethereumjs)
- cl.common_branches: glamsterdam-devnet-4
  (opted out: caplin, consensoor)
- generate_config.py: new flatten_groups() merges common_branches per
  group and honors skip_common before the existing expansion logic runs.
@barnabasbusa barnabasbusa requested a review from qu0b May 20, 2026 06:58
@barnabasbusa barnabasbusa enabled auto-merge (squash) May 20, 2026 07:43
@qu0b-reviewer
Copy link
Copy Markdown

qu0b-reviewer Bot commented May 20, 2026

🤖 qu0b-reviewer

Now I have enough context. Here is my review:


Summary

The PR restructures branches.yaml from a flat per-client list to a grouped structure (EL/CL/MEV/ZK/Tooling/Other/Lean), introducing common_branches: per group and skip_common: per-client. The Python generator was updated to flatten this back. The primary risk is silent data loss: two clients lost devnet branch coverage that was their only reason for inclusion.

Issues

  • 🔴 blocker branches.yamlerigon was added in PR Update branches.yaml #385 specifically for devnet testing (bal-devnet-3, bal-devnet-7, glamsterdam-devnet-4). The PR stripped those three branches by not including erigon in the common_branches block and not listing them individually. Erigon now builds main and performance only — zero devnet coverage. Is that intentional?

  • 🔴 blocker branches.yamlnimbus-eth1 has the same problem: master was its only branch before, with the three devnets added in Update branches.yaml #385. Now those devnets are gone from nimbus-eth1 (the common branches are for the EL group, but nimbus-eth1 isn't in EL). nimbus-eth1 is in EL and groups to nimbus-eth2/nimbus-validator-client via nimbus expansion — so it's unclear whether it needs devnet coverage at all, but the PR Update branches.yaml #385 intent was clearly to add it.

  • 🟡 concern branches.yaml:31ethereumjs moved from a standalone top-level entry to under el.clients: with skip_common: true. This works but requires DEFAULT_REPOS['ethereumjs'] in generate_config.py to already exist (it does, from the prior ethereumjs PR). The coupling is non-obvious — a future maintainer deleting ethereumjs from DEFAULT_REPOS would silently break builds with no error from the Python generator.

Suggestions

  • 🟢 nit generate_config.py:100 — The flatten_groups function silently skips any top-level YAML key whose value is not a dict (if not isinstance(group_data, dict): continue). This is mute today but creates a silent no-op if someone accidentally nests a client at the wrong level. A warning would help catch typos like tooling:EL: or estrator:.

Reviewed @ 93a6e0c0
"Async by default."

Removes the per-client workflows, Dockerfile, DEFAULT_REPOS entries,
platforms.yaml entries, and README links for ethereumjs and goomy-blob
since they are no longer in branches.yaml.

Also bumps install-deps' setup-node version from 20 to 24 to match
chainsafe/lodestar's current `engines.node: ^24.13.0`.
@barnabasbusa barnabasbusa merged commit 17ae340 into master May 20, 2026
3 checks passed
@barnabasbusa barnabasbusa deleted the bbusa/branches-yaml-groups-common-branches branch May 20, 2026 10:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants