diff --git a/.kiro/specs/election-iomgr-refactor/tasks.md b/.kiro/specs/election-iomgr-refactor/tasks.md index 181407b..f2c50da 100644 --- a/.kiro/specs/election-iomgr-refactor/tasks.md +++ b/.kiro/specs/election-iomgr-refactor/tasks.md @@ -127,7 +127,7 @@ - _Boundary: ha.c (RDHUP path)_ - _Depends: 5.1_ -- [ ] 5.3 Remove bootstrap_config_if_needed and old election blocking path +- [x] 5.3 Remove bootstrap_config_if_needed and old election blocking path - Delete `bootstrap_config_if_needed` call from myapp_run; delete the function body from config_repl.c if no other callers remain - Delete `ha_wait_for_heartbeat_or_timeout` call from myapp_run (now internal to ha_start_election_async's watchdog) - Delete `am_i_primary_quorum` blocking pthread loop from ha.c (keep unit-test stub in testsuite) @@ -138,7 +138,7 @@ - _Depends: 5.1, 5.2_ - [ ] 6. Validation: tests, ASAN, and integration verification -- [ ] 6.1 Unit tests for election timeout and committing timeout watchdogs +- [x] 6.1 Unit tests for election timeout and committing timeout watchdogs - Test `election_timeout_fn`: fires `ha_elect_evaluate_and_signal` when not cancelled; no-op when `cancelled=1` - Test `committing_timeout_fn`: promotes to PRIMARY (degraded) when not cancelled; no-op when cancelled - Test `delay_task_ms` precision: 500ms task fires within ±200ms (delaymgr precision_ms = 50ms for test) @@ -147,7 +147,7 @@ - _Boundary: ha.c unit tests_ - _Depends: 1.1, 4.4_ -- [ ] 6.2 Unit tests for FSM gate and role-based vote denial +- [x] 6.2 Unit tests for FSM gate and role-based vote denial - Test `ha_dispatch_gate`: COMMITTING allows replCatchUpDone, denies jobsubmit; ELECTING allows requestVote, denies jobsubmit - Test `handle_request_vote` role gate: all 5 cases (PRIMARY, COMMITTING, STANDBY+fresh, STANDBY+stale, ELECTING) - Test `ha_repl_ack_received`: quorum=1 of 2 peers acks → PRIMARY; 0 of 2 → stays COMMITTING