The ids of confirmed concepts this one needs that have not had a clean session yet. Empty when nothing blocks it.
The concept this plan is for.
The day the concept comes back, as YYYY-MM-DD. When the exam is today or later and this would fall on or after it, it moves to the day before the exam, but never before today.
The wait after the last session, in days: 0 with no session yet, 1 after a miss, and 1, 2, 4, 8 and so on (up to MAX_GAP_DAYS) for clean sessions in a row.
OptionallastWhen the concept's last session ended, as an ISO time string. undefined if it has no ended session.
blocked if blockedBy is not empty, otherwise due when due is today or earlier, and upcoming after that.
Clean sessions in a row since the last miss.
When a concept comes back:
due(today or earlier),upcoming, orblocked(it needs concepts that have not had a clean session yet, listed inblockedBy).