ci: run spec_tests with fake_crypto#983
Conversation
|
@claude, please take a look |
|
Claude finished @shane-moore's task in 56s —— View job Review of PR #983
Reviewed the three changed files against the existing CI structure. This is clean, well-scoped test-infra work. A few observations: Makefile (
|
|
Stepping back from the mechanics of this PR — I want to flag a pattern I'd like us to push back on as a team. When we hit friction with an upstream dependency or spec, our default has been to add a workaround inside Anchor: a feature flag, a heuristic, a fallback branch, a bypass in CI. Each one is individually reasonable, but they accumulate. The result is that the real fix — upstream, or in the shared contract — loses urgency, and we carry the complexity indefinitely. This PR is a concrete example. The underlying issue is ssv-spec#622: the Capella/Deneb fixtures use placeholder BLS bytes that aren't valid compressed points. Anchor's decoder is correct to reject them. `fake_crypto` lets us sidestep that, and the `is_bls_validation_error` string match keeps the non-`fake_crypto` path green. Both paths will stay green regardless of whether the upstream fixture ever gets fixed, and we now have a CI job committing us to maintaining the bypass. I'd like us to try, before adding a workaround, to:
For this specific PR, I'm not blocking — the diff is small and the intent is good. But I'd like to see us revisit ssv-spec#622 and set a bar for when this CI job comes back out, rather than treat it as permanent infrastructure. |
267a9f6 to
ebdf75c
Compare
|
Wanted to follow up on this directly — opened ssv-spec#627 against The removal condition for the |
ebdf75c to
26c30e6
Compare
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## unstable #983 +/- ##
=========================================
Coverage 61.46% 61.46%
=========================================
Files 156 156
Lines 25688 25688
=========================================
Hits 15790 15790
Misses 9898 9898
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
Problem, Evidence, and Context
ConsensusDataProposerTestwhose success-path assertions (block blinded state, block root, block SSZ roundtrip) only run whenbls/fake_cryptois enabled. Without it, success fixtures fall through to a weaker BLS-rejection branch because Lighthouse validates BLS during SSZ decode while Go'sfastsszdoes not.spec_testswithfake_crypto, so the branch can stay green while bypassing the strongest assertions of the new proposer test.Change Overview
Test-infra only, two additions:
test-spec-tests/nextest-spec-teststargets that runspec_testswith--features fake_crypto;test-fullextended to include them. Mirrors Lighthouse'sef_testspattern.spec-tests-fake-cryptojob intest-suite.ymlthat runsmake nextest-spec-tests, gated bytest-suite-success. Runs in parallel with the existing release-tests job.What did not change: no production code; no edits to the BLS-fallback heuristic in
consensus_data_proposer.rsoris_bls_validation_error. Both paths remain valuable — the workspace test run continues to exercise the realistic BLS-rejection branch, and the new job covers the full-coverage path.Risks, Trade-offs, and Mitigations
fake_cryptocannot be enabled at the workspace level (theanchorroot crate does not declare it), so the target is scoped to-p spec_tests.release-tests-ubuntu: separate job preserves independent failure visibility and parallel execution; cost is ~30–60s of duplicate Rust setup, accepted.Validation
make nextest-spec-tests: 1 test, 114 fixtures, 0.06s runtime (after ~1m48s cold compile). Success fixtures now exerciseverify_block(block root + SSZ roundtrip) instead of falling through to the BLS-rejection branch.cargo nextest run --release -p spec_tests(nofake_crypto): still passes via the existing BLS-fallback path — confirms the workspace test run is unaffected..github/scripts/check_success_job.sh ./.github/workflows/test-suite.yml test-suite-successreportsCOMPLETENESS CHECK PASSED;yqparses the workflow YAML cleanly.Rollback
N/A — test-infrastructure-only change.
Blockers / Dependencies
None.