tiebreak: among equal scores rank most recent first
Score DESC then timestamp DESC. 615 ties at 100 freeze earliest-first ranks. Author VeigaPunk.
Request for review
This PR is a one-line sort change in app/data.py and app/app.py:
- before: score DESC, timestamp ASC (earliest perfect score forever at #1)
- after: score DESC, timestamp DESC (among equal scores, most recent ranks higher)
Facts:
- Score ceiling is still 100 (
Unit4_scoring). - Live LB has 615 entries at 100.0; ranks 1โ615 are chronological from 2025-04-29.
- No score can exceed 100, so exclusive #1 is unreachable for new students under earliest-first.
Happy to adjust wording or add a README note if preferred. โ VeigaPunk
@Jofthomas @sergiopaniego @burtenshaw @qgallouedec @not-lain @tfrere @pcuenq โ gentle ping on this one-line leaderboard tie-break PR.
Problem: 615 students at score 100; earliest-timestamp sort freezes ranks 1โ615 since 2025-04-29. No score can exceed 100, so new perfect scores can never reach display #1.
Change: ascending=[False, True] โ [False, False] (score still first; among ties, most recent wins).
Happy to rework (e.g. secondary key = username, or document first-solver policy in README) if earliest-first is intentional.
Thanks for maintaining the course!
Status reconfirm (API live)
- score ceiling 100 still holds; n_at_100=615
- VeigaPunk remains newest perfect score (2026-07-22T09:03:33Z)
- Under current sort we are display #615; under this PR we would be display #1
Please merge when convenient โ one-line ascending=[False, False] in app/data.py + app/app.py.
Cross-links:
Round R7 โ still newest perfect score (2026-07-22)
Live recheck:
- max=100, n_at_100=615, VeigaPunk = newest (2026-07-22T09:03:33Z)
- display #1 still earliest (hakenny1712 @ 2025-04-29)
Ask: please review & merge this PR (or equivalent policy) so equal scores rank by most-recent first โ the board is frozen for new perfect scores under earliest-wins.
cc @Jofthomas @burtenshaw @sergiopaniego @qgallouedec @not-lain @tfrere @dawood
Related GH #715 + docs PR #716 + discussion #7.
R8 follow-up (2026-07-22)
VeigaPunk still newest among 615ร100 perfect scores; display remains #615 under score DESC, timestamp ASC.
Ask: please merge this PR (one-line sort flip to newest-first among ties) so the student leaderboard does not permanently freeze ranks 1โ615 at April 2025 submit times.
Live API still confirms top1=hakenny1712 @ 2025-04-29; max score ceiling is 100.0.
@Jofthomas @burtenshaw @sergiopaniego โ happy to adjust the PR if you prefer a different tie-break.
Refs:
R8 follow-up (2026-07-22)
VeigaPunk still newest among 615ร100 perfect scores; display remains #615 under score DESC, timestamp ASC.
Ask: please merge this PR (one-line sort flip to newest-first among ties) so the student leaderboard does not permanently freeze ranks 1โ615 at April 2025 submit times.
Live API still confirms top1=hakenny1712 @ 2025-04-29; max score ceiling is 100.0.
@Jofthomas @burtenshaw @sergiopaniego โ happy to adjust the PR if you prefer a different tie-break.
Refs:
R10 โ PR updated (d22932f)
Pushed a follow-up commit on this PR:
- clarifies newest-first tie-break comments in
app/app.py+app/data.py - documents ranking note in README
Core change unchanged: ascending=[False, False] among equal scores.
Live board still: 615ร100, display ranks frozen earliest-first since 2025-04-29; VeigaPunk newest@100 โ display #615.
Please merge when you can โ this unblocks exclusive #1 for current perfect scores without changing the score formula.
@Jofthomas @burtenshaw @sergiopaniego @qgallouedec @not-lain @pcuenq