Optional

Leaderboard

The fifty learners with the most XP who have not opted out.

What this is, exactly

⚠ It is a nudge, not an audit

Your progress document lives in your browser and you can edit it. The server re-derives the four figures shown here from that document rather than trusting a summary the browser asserted — which raises the effort a little and proves nothing, because the document itself is yours.

Building defences that do not hold would be worse than saying this. So: treat it as motivation if it motivates you, and ignore it entirely if it does not. The number that means something is on your dashboard, and even that is only a fact about your answers to these questions.

Mastery is computed twice, on purpose — and checked

The same formula runs in your browser (mastery() in store.js) and on the server, because the leaderboard has to order by it. Two implementations of one formula is exactly how two systems come to disagree, so: rounding is half-up in both, the denominator has one source — the server counts the chapters it serves rather than keeping its own configured number — and tools/doctor.mjs fails the build if anything in api/ hard-codes a chapter count. That drift is a documented failure in the system this platform was modelled on; it is fixed here by removing the second source, not by keeping them in step by hand.