Skip to content

Cron schedules, RRULE, and timezones

For schedule.kind: once, provide runAt; it must be at least 60 seconds in the future and no more than 365 days ahead. For schedule.kind: recurring, provide an RRULE string and at least one boundary: endAt or maxRuns. The first two occurrences must be at least 900 seconds (15 minutes) apart. The platform contract is RRULE, not a guessed five-field cron expression.

Every schedule requires a valid IANA timezone such as Asia/Taipei. startAt anchors a recurring series, endAt bounds it by time, and maxRuns bounds its count. The runtime RRULE engine owns DST and local wall-clock behavior; use actual results and tests rather than manually adjusting offsets.

After downtime, recurring calculation selects the next future occurrence. It does not replay every missed occurrence. Invalid timezone, RRULE, missing recurring boundary, exhausted range, or an interval below 15 minutes must be treated as runtime validation outcomes, not as a successful schedule.

arinova.cron.schedule, arinova.cron.update_job

Also known as

RRULE schedule, IANA timezone, recurring interval, runAt, daylight saving time, missed occurrence


Machine-readable Markdown · Knowledge index

Build a7f47a5ca54ddcf7806cd48b81ce1b9827042766