Stabilise flaky active_elections.fork_replacement_tally (#5091) The test gated on election->votes ().size () == max_blocks before counting representative votes, and timed out (seen on macOS/Windows) once that size exceeded max_blocks. votes () returns last_votes, keyed by account, not by retained block: replace_by_weight evicts a fork via remove_block and erases the votes present at that moment, but a fork's cached vote can be applied after the fork has already been evicted, leaving an orphan vote that is never cleaned. On slow runners these orphans accumulate, so votes ().size () settles above max_blocks permanently and the equality never holds. Count only representatives whose vote still points at a block retained in the election, which is the stable quantity the test means to assert (the highest -weight forks that survived replacement), and drop the votes ().size () gate; election->blocks ().size () == max_blocks is already asserted separately. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
__________
Type: commit
Hash: 6acad638498d3f152ef6164f72bee7182aa32e35
Created: today
__________
gr0v1ty/nano-node:6acad638498d3f152ef6164f72bee7182aa32e35
| Test Case | Status | Duration | Median Deviation | Log | Graph |
|---|---|---|---|---|---|
| 5n4pr_conf_10k_bintree | PASS | 107 s | -2.5 s | - | Show |
| 5n4pr_conf_10k_change | PASS | 147 s | -47.0 s | - | Show |
| 5n4pr_conf_change_dependant | PASS | 118 s | 8.5 s | - | - |
| 5n4pr_conf_change_independant | PASS | 106 s | -3.0 s | - | - |
| 5n4pr_conf_send_dependant | PASS | 108 s | -3.0 s | - | - |
| 5n4pr_conf_send_independant | PASS | 110 s | -1.0 s | - | - |
| 5n4pr_rocks_10k_bintree | PASS | 112 s | -1.5 s | - | - |
| 5n4pr_rocks_10k_change | PASS | 217 s | 50.0 s | - | - |