Function
Overrides the profile storage adapter; tests inject a stub
The page belongs to a learner, so it waits for the profile: until storage has answered it renders a shell that asserts no counts, and a device without a card is sent to the onboarding. Achievements are derived from this device's completion on every render; the one thing this page writes is a claim, when the learner takes a prize whose tickets are all collected.
Arriving from the lesson page's waiting-prize dialog, the URL names the module the learner came for: that prize is brought into view, focused and pointed out until they claim it.
The page's one action explains how achievements are earned, in a dialog, so a returning learner is not scrolling past the explanation on every visit. Editing the card stays the Profile's job, reached from the avatar menu.
The counter is not a dead end: the page closes with the way back into the course, where the learner left off.
The Achievements page: the learner's card with the distinction they have earned, and their tickets and prizes across the whole catalog.