diff --git a/.kiro/specs/raft-drive-async/tasks.md b/.kiro/specs/raft-drive-async/tasks.md index 4409ba43..6926cbd7 100644 --- a/.kiro/specs/raft-drive-async/tasks.md +++ b/.kiro/specs/raft-drive-async/tasks.md @@ -114,7 +114,7 @@ Tasks mirror the design's 4-phase migration. The slow lane is foundational (ever - _Depends: 3.2, 3.3_ - [ ] 4. Phase 4 — Verification, partition test, and regression -- [ ] 4.1 Network-partition (unreachable-peer) soak scenario +- [x] 4.1 Network-partition (unreachable-peer) soak scenario - Add a partition primitive that renders one node unreachable (distinct from process kill). **Primary = in-process socket-drop hook in `xce_test` (`XCE_TESTING`)** — blackholes a node's peer traffic at the endpoint layer with NO privilege, so R7 actually runs in the unprivileged/overlayfs sandbox (avoids the perpetual-skip fate of `ha-term-safety` 5.2/5.4). **Secondary (optional) = firewall `iptables`/`nft` DROP** for real-network fidelity, capability-gated with a loud skip when unprivileged. - Assert: heartbeats to survivors continue, no spurious election while the leader holds the majority, the peer rejoins on heal, and no committed job is lost. - Observable: the partition soak runs and passes; the same scenario fails against the pre-change build (heartbeat stall / spurious election).