ci: add consensus spec drift detection#1335
Merged
barnabasbusa merged 13 commits intofix/bump-genesis-generator-5.3.2from Mar 26, 2026
Merged
ci: add consensus spec drift detection#1335barnabasbusa merged 13 commits intofix/bump-genesis-generator-5.3.2from
barnabasbusa merged 13 commits intofix/bump-genesis-generator-5.3.2from
Conversation
…ILITY_DELAY Add a per-PR and daily scheduled job that statically checks default values in input_parser.star against the upstream ethereum/consensus-specs configs (mainnet and minimal), failing fast on any drift. Also fixes the detected drift: MIN_BUILDER_WITHDRAWABILITY_DELAY was 4096 (mainnet) / 8 (minimal) but should be 64 / 2 per the spec. Fixes stale crate-ci/typos SHA in check-typos.yml. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Instead of statically parsing input_parser.star, reuse the output of the existing Kurtosis runs in per-pr.yml: after each run, download the el_cl_genesis_data artifact and compare the generated config.yaml against the upstream ethereum/consensus-specs config — the same approach used in ethereum-genesis-generator. - Adds spec check steps to run_with_args for ./network_params.yaml (mainnet) and ./.github/tests/minimal.yaml (minimal) — no extra Kurtosis runs on PR - check-consensus-spec-values.yml runs on schedule (daily) and workflow_dispatch using the same network_params.yaml / minimal.yaml test configs Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Remove the separate check-consensus-spec-values.yml workflow. The spec check runs only within the two relevant run_with_args jobs in per-pr.yml (./network_params.yaml for mainnet, ./.github/tests/minimal.yaml for minimal) — no extra Kurtosis runs, no separate workflow. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Add a dedicated check-consensus-spec-values job to per-pr.yml that runs independently of the existing run_with_args matrix. It runs two Kurtosis enclaves (mainnet via network_params.yaml, minimal via minimal.yaml), downloads the el_cl_genesis_data artifact, and diffs config.yaml against the upstream consensus-specs. continue-on-error: true so PRs are never blocked by spec drift. Also add check-consensus-spec-values.yml for the daily scheduled run. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
After the Kurtosis run finishes, reuse the same enclave to download el_cl_genesis_data and compare config.yaml against the upstream spec. Only runs for the two relevant matrix entries (network_params.yaml and minimal.yaml). continue-on-error: true so drift never blocks a merge. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
run_starlark was redundant with run_with_args ./network_params.yaml. Adding '.' runs kurtosis with no args-file (pure defaults). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Run Starlark: '.' runs without --args-file (pure defaults) under enclave name 'default'. Spec check now also covers '.' (mainnet preset). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
run_with_args uploads config.yaml as a GitHub artifact for the three relevant matrix entries (., network_params.yaml, minimal.yaml). A downstream check-consensus-spec-values job (needs: run_with_args, continue-on-error: true) downloads each artifact and diffs against the upstream consensus-specs. Shows as a big red fail on drift but never blocks the PR from merging. No new Kurtosis enclave spun up. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
c44294d
into
fix/bump-genesis-generator-5.3.2
7 of 13 checks passed
barnabasbusa
added a commit
that referenced
this pull request
Mar 26, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
run_with_argsKurtosis jobs inper-pr.yml— no extra runs: after the Kurtosis run finishes,kurtosis files download el_cl_genesis_dataextracts the generatedconfig.yamland compares it against the upstreamethereum/consensus-specsconfig./network_params.yamljob → checked against mainnet spec./.github/tests/minimal.yamljob → checked against minimal speccheck-consensus-spec-values.ymlprovides the daily scheduled check using the same two configsMIN_BUILDER_WITHDRAWABILITY_DELAYwas4096(mainnet) /8(minimal) — spec says64/2crate-ci/typosSHA incheck-typos.ymlHow it works
After each Kurtosis run the genesis data artifact is already available in the enclave. We just need to download it and diff
config.yamlagainst upstream — the exact same approach as ethpandaops/ethereum-genesis-generator#277.Test plan
run_with_args (./network_params.yaml)CI job passes spec checkrun_with_args (./.github/tests/minimal.yaml)CI job passes spec check🤖 Generated with Claude Code