Summary
Add a RepairSchedule trait abstracting "wait for the next repair tick," with a production tokio::time::interval-backed implementation and a test implementation driven by an explicit, manually-fired gate.
Details
Algorithm context: docs/protocol/concurrent-insert.md, Section 6.4.
Files
src/node/base_node.rs (or a new sibling module, implementer's choice) — the trait and both implementations.
Acceptance Criteria
Dependencies
None.
Dependency graph (unblocked first):
EPIC #81 -- local search & join protocol
#67 [DONE] search_by_id #71 [OPEN] search_by_mem_vec (independent)
#74 [OPEN] search_by_id timeout fix #76 [OPEN] delete/leave
Concurrent join + repair (Algorithm 2 + Algorithm 8; supersedes closed #66, #77):
L0 (no deps): #84 #85 (pending -- not yet converged) #86 #87 <-- YOU ARE HERE
L1: (pending -- not yet converged) #88 #89
L2: #90 #91 (pending -- not yet converged) (pending -- not yet converged)
L3: #92
L4 (acceptance gate): (pending -- not yet converged)
Summary
Add a
RepairScheduletrait abstracting "wait for the next repair tick," with a productiontokio::time::interval-backed implementation and a test implementation driven by an explicit, manually-fired gate.Details
Algorithm context:
docs/protocol/concurrent-insert.md, Section 6.4.Files
src/node/base_node.rs(or a new sibling module, implementer's choice) — the trait and both implementations.Acceptance Criteria
tokio::time::sleep/intervalcall anywhere outside the production implementation.join_with_timeout/join_all_with_timeoutpattern.Dependencies
None.