Every reason a schedule has no next run carries a stable code
The report of a trigger's next run is the only view of a schedule an operator has. A report that cannot distinguish "fine, nothing due" from "will never fire" is the diagnostic being absent exactly when it is needed.
The rule
Normative: this is the rule
- An absent next run, reported on its own, means only that nothing is currently due, the answer a perfectly healthy schedule gives between fires.
- Every other reason a schedule yields no next run must be reported with a stable code:
no_expressionwhere the expression is cleared,invalid_expressionwhere it is malformed, or well-formed but unsatisfiable. - Severity must not be flattened: an unusable timezone does not stop a trigger, since the implementation substitutes UTC, so such a schedule still reports a real next run alongside the code
invalid_timezone; an expression problem, being the more consequential of the two, takes its place. - A broken stored schedule is not a broken request: the report is answered with 200 and carries the diagnosis.
Rule identifiers are permanent and are never renumbered. Each implementation publishes its own standing against these rules; this specification does not.spec 1.0-draft · CRON-2 · changed in spec 1.0