Temporal Schedule V2
How a Scheduled Action Becomes a Workflow Run
Time, jitter, overlap, catch-up, and backfills—followed from one Schedule rule to a completed Workflow.
A Temporal Schedule is a durable set of instructions for starting Workflow Executions over time. It defines when to act, which Workflow to start, and how to handle conditions such as overlapping runs or missed times.
This article follows what happens after a Schedule produces a time: how that time becomes a scheduled action, how the action waits or starts, and how its result is recorded. Along the way, we’ll see how jitter, overlap policies, catch-up windows, and Backfills change that path.
1 · Choose a time
The Schedule chooses a nominal time
A Schedule is independent of the Workflow Executions it starts. Its Spec supplies the times, its Action supplies the Workflow template, and its Policies decide what happens when execution cannot follow the ideal timeline.
2 · Become an action
A forecast becomes a buffered action
FutureActionTimes is a forecast view. When its time arrives, the Generator materializes a new entry in the one persisted BufferedStarts collection.
3 · Resolve overlap
What if another Workflow is already running?
The baseline lifecycle stays the same, but overlap policy changes whether each new action disappears, waits, replaces the current run, or starts concurrently.
4 · Decide whether it is too late
Waiting has a deadline
A Catch-up Window limits how late a scheduled action may begin. It matters after outages, retries, and long overlap deferrals.
5 · Revisit the past
Backfills create actions from past times
A Backfill asks the same five-minute Spec for matches in a historical range, preserves those historical nominal times, and starts their Workflows now.
The live interval keeps producing FutureActionTimes. Each temporary Backfiller owns an independently scaled past window and writes its matches directly into the shared BufferedStarts queue.
Reference
How Temporal names these times
Map each timestamp in the diagrams to its V2 storage and API field.