Compute the next run time for a routine: the first cron occurrence strictly after
fromDate, floored by the routine's activation-window start. When startAt is in the
future relative to fromDate, the next occurrence is computed from startAt instead —
an Active routine never gets a NextRunAt before its window opens.
Compute the next run time for a routine: the first cron occurrence strictly after
fromDate, floored by the routine's activation-window start. WhenstartAtis in the future relative tofromDate, the next occurrence is computed fromstartAtinstead — an Active routine never gets a NextRunAt before its window opens.