Driven adapter: in-memory implementation of ProgressTracker.
Completed lesson ids live in a Set. State is ephemeral — it does
not survive a server restart. When durable persistence arrives, the
port contract is unchanged; only this adapter is replaced.
Driven adapter: in-memory implementation of
ProgressTracker.Completed lesson ids live in a
Set. State is ephemeral — it does not survive a server restart. When durable persistence arrives, the port contract is unchanged; only this adapter is replaced.