Status: ready-for-human # 13 — C3/C4: Consensus-gated money mutations (deferred) ## What to build Route money-affecting ledger events through Raft commit, not gossip-only apply. Extend `raft.py` command set beyond register/deregister. Settlement remains leader-only with treasury key. **Code refs:** - `packages/tracker/meshnet_tracker/server.py` — settlement leader gate (~3331–3332), payout batch (~3353–3356) - `packages/tracker/meshnet_tracker/raft.py` — log entry types (~26–27) - `packages/tracker/meshnet_tracker/billing.py` — `apply_events` (~301–311) Design: ADR-0019 §2. **Deferred post-alpha** while single operator holds settlement. ## Acceptance criteria - [ ] `charge`, `payout`, `forfeit`, `credit`, `settlement`, `bind` commit via Raft log - [ ] Followers reject direct gossip money mutations - [ ] Leader-only `_settlement_loop` unchanged in semantics - [ ] Migration plan from gossip-only billing to Raft-backed log ## ADR links - [ADR-0019](../../docs/adr/0019-money-path-consistency-multi-tracker.md) §2 ## Blocked by - `12-c2-on-chain-idempotency.md` - `14-a3-raft-durable-term-vote.md`