Function
What the progress tracker stored for this lesson
Whether the lesson should be shown as complete
Completion has two producers — the Mark as complete button and playback crossing finishThresholdSeconds — and this is where they are combined. Every surface that shows completion asks this one question, which is what stops a row, an outline entry and a module card from disagreeing about the same lesson.
Deriving from the saved position, rather than trusting the stored mark alone, is also what lights up positions saved before the finish rule existed: no migration, no backfill write.
Whether a lesson counts as done.