mirror of
https://github.com/luxfi/consensus.git
synced 2026-09-24 00:26:58 +00:00
Adds an opt-in per-message delivery latency to the sim bus (nil default = unchanged instant delivery) so a test can model async WAN gossip: heavy-tail jitter where ~10% of messages arrive after the RoundTO/2 settle window, so prevotes reach different nodes in different orders. Plus the async+zero-margin+ idle storm scenario. FINDING: PASSES at HEAD (v1.35.16), like the naive and zero-margin idle storms. THREE in-process variants (sync idle, zero-margin idle, async-gossip idle) all finalize cleanly — the in-process consensus harness robustly cannot reproduce the live VC stall. The trigger is at the node-integration/live layer (real proposervm + real transport), not the consensus engine in isolation. The epoch-churn hypothesis is separately refuted by static analysis: epochHeightLocked returns pChainHeight (0 on these nets, stable), not the churning epoch number, so the moving epoch does not affect vote pubkey/stake resolution. Existing storm tests remain green (nil-default opt-in). The bisect + forward-fix must run on a live net. Co-authored-by: Hanzo Dev <[email protected]>