Function
A stable set of lesson ids; empty before hydration
A ticket is saved the first time its lesson counts as complete and is kept from then on, which is what lets a learner un-mark a lesson without losing what they earned. Completion itself stays in its own store, so the lesson rows keep telling the truth about where the learner is now.
Browser-side only — do NOT call from a Server Component.
Every ticket the signed-in learner has earned, as one snapshot of lesson ids.