mirror of
https://github.com/jmcorgan/fips.git
synced 2026-07-22 07:48:26 +00:00
wait_until_connected fail-fasted on stall even when the mesh was all but converged, abandoning the run with budget still unspent because one hard pair straggled to come up. On the rekey-outbound-only topology this turned a rare deep-node timing straggle (stacked discovery backoff + late bloom propagation, which clears well inside the budget) into a false baseline RED. Add a near_converged_slack threshold (default 2): when the number of still-failing pairs is at or below the slack and the stall window elapses, keep polling toward max_secs instead of bailing. A mesh genuinely far from convergence still fast-bails on stall, and a never-converging pair still hits the hard cap, so a real regression is never masked. Add a self-contained behavioral test (wait-converge-test.sh) covering the four contract cases: near-converged hold (with a slack=0 contrast that proves the slack is what saves the run), far-from-converged fast-bail, never-converging hard cap, and four-argument backward compatibility.