Break leaderboard ties with Melee's tiebreakers

After total of all sessions, ties fall to OMW%, GW% and OGW% over all the
league's matches (bye = 2-0 win, not an opponent; opponents floored at 1/3),
then name. Verified identical to Melee's order and percentages on a real
night. The leaderboard shows the three percentages.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
derekandClaude Opus 5.5 committed 2026-10-28 17:13:24 +00:00
1 parent 0e14228b8f
commit a99997b96d
4 files changed
+66 -7

No files matched your search

+3 -1
View File
@@ -19,7 +19,9 @@ add `ALTER TABLE ... IF NOT EXISTS` statements to `init` or introduce a migratio
## Rules and decisions
- Scoring: match win 3, draw 1, loss 0, bye = 2-0 win. Session score = sum of that night's match points.
Leaderboard = sum of each player's best `league.best_n` session scores; tiebreak = total of all sessions, then name.
Leaderboard = sum of each player's best `league.best_n` session scores; tiebreak = total of all sessions, then Melee's
tiebreakers (OMW%, GW%, OGW% over all the league's match rows; bye = 2-0 win, not an opponent; opponents floored at 1/3;
verified identical to Melee on a real night), then name. Standings-only sessions add nothing to the tiebreakers.
- A session with match rows is scored from them; otherwise from imported standings (`session_results`).
Standings imports have W-D-L but no opponents, so the leaderboard shows "–" W-D-L for players with such a session.
- Players are identified by real name (Melee `Team.Players[0].Name`, falling back to DisplayName, then Username),