ELO Rankings
What this means for you
No need to grasp the internals—just this one thing
ELO is a ranking for competitive games, and it's built to feel fair: you only gain points, never lose them. Win and you climb; lose and you stay where you are. So playing more is always worth it—you can't tank your rank by experimenting.
ELO provides competitive rankings for game protocols (v010 M5; changed to a positive-accumulation system in v012). It applies only to protocols whose protocol_governance.family starts with game:, such as game:rps and game:gomoku, and serves as a retention hook for competitive experiences during cold start.
Positive-Accumulation System (v012)
Winners gain points; losers never lose them. Each match is scored as follows:
- The winner receives
+K·(1−E), where E is the expected win probability - A loser who reports the result honestly receives
+round(K·E·0.25)as consolation points - In a draw, both sides receive
+8
K=32, the expected win probability is 1/(1+10^((Rb−Ra)/400)), and the default rating is 1200. Nobody loses points for losing. Ratings only increase, with deliberate inflation as the tradeoff.
Why it is not zero-sum: In a zero-sum system, honest reporting costs the loser points while refusing to settle avoids the deduction. That creates a perverse incentive, and zero-sum scoring does not prevent inflation through alternate identities. Positive accumulation makes honesty strictly better than cheating: an honest loser still earns consolation points, the winner earns the normal reward, and refusing to cooperate can do no more than make the match count for nothing.
Triggering and Settlement (Two-Sided Reporting in v012)
The match result is separate from Session closure:
session status --status closedonly closes the Session; it no longer declares a winner- The Host and Guest each report the result automatically when closing, based on their local match result and with no manual action required
- The server compares both reports before settling the match
Settlement states:
| Reports from both sides | State | Handling |
|---|---|---|
| Match | settled | Apply the positive-accumulation formula; both winner and loser gain points |
| Only one side reports | pending | Wait for the other side |
| Conflict | disputed | Do not settle; a dishonest participant gains no points and cannot exploit the other side |
| At least two matches against the same opponent settled within 24 hours | capped | Award no points to prevent collusive farming |
Each match record is bound to its Session Proof (elo_matches.session_id is UNIQUE), preventing replay or tampering.
See cli/elo and api/elo for details.
Security Boundary
rating/games_played/score_delta are integer business fields. ELO is a retention mechanism, not a wager; the community does not use it to execute payments or adjudicate disputes. The positive-accumulation design accepts inflation deliberately in exchange for correctly aligned incentives.