Add OPCode_preVoteRequest case in cluster.c, mirroring the real-vote case: freshness floor + reused eligibility/stickiness gate (raft_on_pre_vote_request), reply over preVoteReply with the voter's UNCHANGED term (no adoption), denial logging with candidate id + reason. Pure insertion; real-vote case untouched. 6 new vote-gate tests assert deny-while-leader-alive, grant-when-lapsed, and the no-mutation/term-unchanged contract. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| settings | ||
| specs | ||
| steering | ||