Skip to content

ci: add consensus spec drift detection#1335

Merged
barnabasbusa merged 13 commits intofix/bump-genesis-generator-5.3.2from
feat/check-consensus-spec-values
Mar 26, 2026
Merged

ci: add consensus spec drift detection#1335
barnabasbusa merged 13 commits intofix/bump-genesis-generator-5.3.2from
feat/check-consensus-spec-values

Conversation

@barnabasbusa
Copy link
Copy Markdown
Collaborator

@barnabasbusa barnabasbusa commented Mar 18, 2026

Summary

  • Adds spec-check steps to the existing run_with_args Kurtosis jobs in per-pr.yml — no extra runs: after the Kurtosis run finishes, kurtosis files download el_cl_genesis_data extracts the generated config.yaml and compares it against the upstream ethereum/consensus-specs config
    • ./network_params.yaml job → checked against mainnet spec
    • ./.github/tests/minimal.yaml job → checked against minimal spec
  • check-consensus-spec-values.yml provides the daily scheduled check using the same two configs
  • Fixes detected drift: MIN_BUILDER_WITHDRAWABILITY_DELAY was 4096 (mainnet) / 8 (minimal) — spec says 64 / 2
  • Fixes stale crate-ci/typos SHA in check-typos.yml

How 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.yaml against upstream — the exact same approach as ethpandaops/ethereum-genesis-generator#277.

Test plan

  • run_with_args (./network_params.yaml) CI job passes spec check
  • run_with_args (./.github/tests/minimal.yaml) CI job passes spec check

🤖 Generated with Claude Code

barnabasbusa and others added 10 commits March 18, 2026 16:00
…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>
@barnabasbusa barnabasbusa enabled auto-merge (squash) March 19, 2026 08:47
@barnabasbusa barnabasbusa requested review from pk910 and qu0b March 19, 2026 10:31
@barnabasbusa barnabasbusa changed the base branch from main to fix/bump-genesis-generator-5.3.2 March 26, 2026 21:10
@barnabasbusa barnabasbusa merged commit c44294d into fix/bump-genesis-generator-5.3.2 Mar 26, 2026
7 of 13 checks passed
@barnabasbusa barnabasbusa deleted the feat/check-consensus-spec-values branch March 26, 2026 21:10
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.

1 participant