Decide what to do with a job whose NextRunAt has passed.
"Missed" is defined cron-relatively, not by a grace constant. A run is missed only when
another occurrence has already come due since the one we are looking at — i.e.
nextOccurrenceAfter(NextRunAt) <= now. A job that simply came due a few seconds ago has not
missed anything; it is just due, and every policy runs it. Defining it with a fixed grace window
would misclassify both ends of the range: an every-minute job would look "missed" after a 90-second
pause, and a monthly job would look "on time" a week late.
Decide what to do with a job whose
NextRunAthas passed."Missed" is defined cron-relatively, not by a grace constant. A run is missed only when another occurrence has already come due since the one we are looking at — i.e.
nextOccurrenceAfter(NextRunAt) <= now. A job that simply came due a few seconds ago has not missed anything; it is just due, and every policy runs it. Defining it with a fixed grace window would misclassify both ends of the range: an every-minute job would look "missed" after a 90-second pause, and a monthly job would look "on time" a week late.