Lock alpha scope, tracker auth, TOPLOC fraud verification, and deferred multi-tracker money-path work; supersede legacy fraud issues with ADR-0018. Co-authored-by: Cursor <cursoragent@cursor.com>
28 lines
1.0 KiB
Markdown
28 lines
1.0 KiB
Markdown
Status: ready-for-human
|
||
|
||
# 15 — H1: Commutative forfeit event ordering (deferred)
|
||
|
||
## What to build
|
||
|
||
Define deterministic ordering when `forfeit`, `charge`, and `payout` events replicate concurrently. Forfeit snapshots amount at creation (~287) but apply order can desync pending balances under gossip.
|
||
|
||
**Code refs:**
|
||
|
||
- `packages/tracker/meshnet_tracker/billing.py` — `forfeit_pending` (~280–292), `_apply_locked` forfeit branch (~345–349)
|
||
- `packages/tracker/meshnet_tracker/billing.py` — `_pending_since.setdefault` (~324), wallet bind direct overwrite (~351)
|
||
|
||
## Acceptance criteria
|
||
|
||
- [ ] Documented commit order: charges before forfeit before payout for same wallet epoch
|
||
- [ ] Forfeit events carry pending snapshot or `(term, index)` for tie-break
|
||
- [ ] `setdefault` replaced with explicit merge rules on out-of-order apply
|
||
- [ ] Property tests under shuffled event delivery
|
||
|
||
## ADR links
|
||
|
||
- [ADR-0019](../../docs/adr/0019-money-path-consistency-multi-tracker.md) §4
|
||
|
||
## Blocked by
|
||
|
||
- `13-c3-c4-consensus-gated-settlement.md`
|