1.8 KiB
1.8 KiB
Status: done
08 — FRAUD: Reputation model + persistence
What to build
Implement graduated reputation per ADR-0018 §6: score derives only from tracker audit outcomes + uptime/latency. Slow build, instant loss, inactivity decay. ×0.8 routing multiplier per strike (not whole penalty — forfeiture stays full pending).
Scope split: issue 05 owns schema + SQLite persistence; this issue owns scoring rules (deltas, decay, strike→multiplier wiring) on top of persisted fields.
Code refs:
packages/contracts/meshnet_contracts/__init__.py— extendRegistryWallet/ persistence from issue 05packages/validator/meshnet_validator/__init__.py—_slash_routeforfeiture path (~125–133)packages/tracker/meshnet_tracker/billing.py—forfeit_pending(~280–292)- Research:
.scratch/alpha-hardening/research-verifiable-inference.md§6
Test-first
- Red: persisted reputation/strike fields from issue 05 are ignored by scoring/routing today.
- Green: clean audit +0.05 (tunable); failed audit −0.3 and strike; three strikes → ban persisted via issue-05 fields.
- Inactivity decay after N days without completed jobs.
Acceptance criteria
- Uses
reputation_scoreand strike/ban fields persisted by issue 05; does not introduce a second schema path - Audit pass/fail updates score with documented deltas
- Strike applies ×0.8 multiplier to routing weight (separate from forfeiture amount)
- Ban at 3 strikes; probation job count still enforced
- No peer-to-peer reputation inputs
ADR links
- ADR-0018 §6
Blocked by
05-a1-a5-persist-strike-ban-reputation_completed.md07-fraud-commitment-bisection-blame_completed.md(audit outcomes feed reputation)