5093f96e8a
When the scheduler missed the exact notification minute (due to system sleep, high load, or GC pauses), the advance reminder was permanently lost. A dead zone existed between the notify time and the intake time where neither advance nor missed-intake logic would trigger. Changes: - getUpcomingIntakes now catches up intakes where the notify window passed but the intake time is still in the future - Seeding logic sends a catch-up notification for recently missed intakes (within grace period) instead of silently seeding state - Added 4 tests covering catch-up scenarios