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]>