Carry-over and recovery
Missed a day? The roadmap doesn't break. I carry the task forward and adjust.
How carry-over works
If today's task ends the day in pending status, the next time you open the app I do three things:
- Mark yesterday's task as
carried_over. - Re-surface that same task as today's task — same title, same subtitle, same context.
- Stamp it with
triggered_by: 'behind_schedule'and acarried_over_fromreference back to yesterday.
The card shows a small amber Carried over pill in the action row so you know this is a leftover, not a fresh assignment. The Start button still works the same way.
You don't lose anything by carrying over. But you don't gain anything either — the schedule clock keeps ticking.
How the schedule status moves
After every completed task, I recompute your schedule status:
| Status | Behind schedule by |
|---|---|
on_track | 0 days |
slightly_behind | 1–2 days |
at_risk | 3–6 days |
off_track | 7+ days |
The number is expected_tasks − completed_roadmap_tasks, where expected is the number of days since I generated your roadmap. Free-play sessions don't count — only tasks marked is_roadmap_required.
When ARIA rewrites the roadmap
Once you cross 7 days behind, I don't just keep accumulating debt. I trigger a recalculation:
estimated_completion_dateis recomputed based on your actual session cadence over the last 7 days.recalculation_reasonis set tobehind_schedule_auto.- The roadmap status flips from
activetorecalculated. recalculated_atis timestamped.
Your completed milestones are preserved. The remaining work is rescheduled against your real velocity, not the optimistic plan from day one.
Recalculation is a real shift, not a cosmetic one. Your new completion date may move significantly. If you've enrolled with a real exam date in mind, this is the moment to either pick up the pace or push the exam.
The recovery message
When you've been behind for 3+ days and you open the app, I generate a recovery message — a short streamed note in my voice that does three things:
- Acknowledges where you are without pretending it's fine.
- Tells you what changed in your plan (new completion date, milestones remaining).
- States whether the pass guarantee is still achievable from here.
The message streams in token-by-token. It costs 2 credits to generate and it's saved to your roadmap so I can reference it in future sessions.
You won't get a new recovery message every day you're behind. I generate one when the situation changes — when you cross from slightly_behind into at_risk, when the recalculation fires, or when you return after a long gap.
What the recovery_session task does
If your behind-count is 3+ on the morning I pick today's task, the priority engine assigns recovery_session over a normal focus session. It's a longer session (40 min) with one job: close the gap. The session targets your weakest open errors and the topics on the active milestone you've made the least progress on.
A single recovery session won't catch you up if you're 7 days down. It will, however, stop the slide and feed the next day's priority engine with fresh data so I can pick a smarter task tomorrow.
What you control
- Finish the task. That's the only input that updates the schedule.
- Open the app at midnight-ish in your timezone. That's when the carry-over runs.
- Don't game the streak with free-play. Free sessions are useful, but they don't move the schedule. Only roadmap-required tasks do.
If you need to take a planned break — vacation, exam crunch in another subject, life — pause the roadmap from the profile screen instead of letting carry-overs stack. A pause doesn't trigger recalculation; it just stops the clock.