Scheduling

LeastAction separates what data a run computes from when the scheduler fires it — the key to trivial backfill and automatic catch-up.

Two date fields

FieldMeaningAdvances by
logical_dateThe data epoch the task processes — injected as {{ds}} / {{logical_date}} in the payload, and determines the log storage path. Floored to the cron's granularity (daily → midnight, monthly → 1st, yearly → Jan 1, sub-hourly → exact minute).one cron tick forward
next_run_dateThe scheduler trigger — compared against UTC wall-clock; when next_run_date ≤ now, the task dispatches (pre-actions, then the operator).one cron interval forward from the previous next_run_date (not from physical run time)

Both start equal to start_date and advance together on each successful run.

Catch-up (always on)

Because next_run_date advances from the previous next_run_date, a scheduler outage or an in-progress backfill leaves it in the past, so the cron immediately dispatches the next slot after each success — one logical date at a time — until next_run_date > now. Equivalent to Airflow's catchup=True.

Cron

frequency is a standard cron expression (or ADHOC). See the Cron API reference for the scheduler endpoints and cron-status details.