Use case: clear a lesson's completion — the learner's own undo of
markLessonComplete. Validates the lesson exists and then writes through
the ProgressTracker port. Un-marking a lesson that was never marked is
not an error: the port's writer is idempotent, so the caller never has to
ask whether the mark is there first.
Use case: clear a lesson's completion — the learner's own undo of
markLessonComplete. Validates the lesson exists and then writes through theProgressTrackerport. Un-marking a lesson that was never marked is not an error: the port's writer is idempotent, so the caller never has to ask whether the mark is there first.