Skip to content

fix(test): fix flaky keystore reload test#21749

Merged
alexghr merged 1 commit intomerge-train/spartanfrom
claudebox/fix-keystore-test-flake
Mar 18, 2026
Merged

fix(test): fix flaky keystore reload test#21749
alexghr merged 1 commit intomerge-train/spartanfrom
claudebox/fix-keystore-test-flake

Conversation

@AztecBot
Copy link
Collaborator

Summary

  • Use deterministic BN254 secret keys instead of Fr.random() to eliminate randomness in committee ordering / proposer selection
  • Guard teardown?.() in afterAll to prevent TypeError: teardown is not a function when beforeAll times out
  • Increase jest timeout from 300s to 540s as safety margin

Root Cause

The test stakes 4 validators on L1 but only loads 3 into the keystore. When the RANDAO seed (derived from random BN254 keys) causes the missing 4th validator to be selected as proposer for consecutive slots, the sequencer cannot produce blocks. With 72s per L2 slot and a 300s timeout (~4 slot opportunities), there's a ~1/256 chance all slots have the wrong proposer, causing a timeout.

The secondary TypeError: teardown is not a function error occurs because teardown is never assigned when beforeAll times out before setup() returns.

Test plan

  • CI should pass — the deterministic keys produce a predictable committee ordering, and the increased timeout provides additional margin.

ClaudeBox log: https://claudebox.work/s/91bb3fd09c0c7f41?run=1

@AztecBot AztecBot added ci-draft Run CI on draft PRs. claudebox Owned by claudebox. it can push to this PR. labels Mar 18, 2026
@alexghr alexghr marked this pull request as ready for review March 18, 2026 16:34
@alexghr alexghr enabled auto-merge (squash) March 18, 2026 16:34
@alexghr alexghr merged commit aed98c1 into merge-train/spartan Mar 18, 2026
28 of 36 checks passed
@alexghr alexghr deleted the claudebox/fix-keystore-test-flake branch March 18, 2026 16:52
github-merge-queue bot pushed a commit that referenced this pull request Mar 18, 2026
BEGIN_COMMIT_OVERRIDE
fix(p2p): fall back to maxTxsPerCheckpoint for per-block tx validation
(#21605)
chore: fixing M3 devcontainer builds (#21611)
fix: clamp finalized block to oldest available in world-state (#21643)
chore: fix proving logs script (#21335)
fix: (A-649) tx collector bench test (#21619)
fix(validator): process block proposals from own validator keys in HA
setups (#21603)
fix: add bounds when allocating arrays in deserialization (#21622)
fix: skip handleChainFinalized when block is behind oldest available
(#21656)
chore: demote finalized block skip log to trace (#21661)
fix: skip -march auto-detection for cross-compilation presets (#21356)
chore: revert "add bounds when allocating arrays in deserialization"
(#21622) (#21666)
fix: capture txs not available error reason in proposal handler (#21670)
fix: estimate gas in bot and make BatchCall.simulate() return
SimulationResult (#21676)
fix: prevent HA peer proposals from blocking equivocation in duplicate
proposal test (#21673)
fix(p2p): penalize peers for errors during response reading (#21680)
feat(sequencer): add build-ahead config and metrics (#20779)
chore: fixing build on mac (#21685)
fix: HA deadlock for last block edge case (#21690)
fix: process all contract classes in storeBroadcastedIndividualFunctions
(A-683) (#21686)
chore: add slack success post on nightly scenario (#21701)
fix(builder): persist contractsDB across blocks within a checkpoint
(#21520)
fix: only delete logs from rolled-back blocks, not entire tag (A-686)
(#21687)
chore(p2p): lower attestation pool per-slot caps to 2 (#21709)
chore(p2p): remove unused method (#21678)
fix(p2p): penalize peer on tx rejected by pool (#21677)
fix(test): workaround slow mock creation (#21708)
fix(sequencer): fix checkpoint budget redistribution for multi-block
slots (#21692)
fix: batch checkpoint unwinding in handleEpochPrune (A-690) (#21668)
fix(sequencer): add missing opts arg to checkpoint_builder tests
(#21733)
fix: race condition in fast tx collection (#21496)
fix: increase default postgres disk size from 1Gi to 10Gi (#21741)
fix: update batch_tx_requester tests to use RequestTracker (#21734)
chore: replace dead BOOTSTRAP_TO env var with bootstrap.sh build arg
(#21744)
fix(sequencer): extract gas and blob configs from valid requests only
(A-677) (#21747)
fix: deflake attempt for l1_tx_utils (#21743)
fix(test): fix flaky keystore reload test (#21749)
fix(test): fix flaky duplicate_attestation_slash test (#21753)
feat(pipeline): introduce pipeline views for building (#21026)
END_COMMIT_OVERRIDE
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci-draft Run CI on draft PRs. claudebox Owned by claudebox. it can push to this PR.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants