You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Backfill respects `maxRuns` — if the schedule's remaining actions are exhausted mid-backfill, the operation stops and the schedule is auto-deleted.
195
+
196
+
Backfill instance IDs are deterministic: `schedule:{scheduleId}:backfill:{timestamp}`.
197
+
169
198
## History event types
170
199
171
-
Schedule lifecycle operations produce typed history events for auditability:
200
+
When a schedule triggers a workflow, a `ScheduleTriggered` history event is recorded on the started workflow run. This provides lineage from the schedule to the workflow:
201
+
202
+
```php
203
+
// The event payload includes:
204
+
// - schedule_id: the schedule's user-facing identifier
205
+
// - schedule_ulid: the schedule's internal ULID
206
+
// - cron_expression, timezone, overlap_policy
207
+
// - trigger_number: which trigger this was (1-indexed)
208
+
// - occurrence_time: the cron occurrence time (backfill only)
209
+
```
210
+
211
+
The full set of schedule event types in the history enum:
172
212
173
213
-`ScheduleCreated` — schedule was created
174
214
-`SchedulePaused` — schedule was paused
@@ -178,6 +218,18 @@ Schedule lifecycle operations produce typed history events for auditability:
178
218
-`ScheduleDeleted` — schedule was soft-deleted
179
219
-`ScheduleTriggerSkipped` — a trigger was skipped due to overlap policy or exhausted actions
180
220
221
+
`ScheduleTriggered` is the only event currently recorded on workflow history. The others are reserved for future schedule-level audit logging.
222
+
223
+
## Skip tracking
224
+
225
+
When a trigger is skipped (due to overlap policy, non-triggerable status, or exhausted actions), the schedule tracks the skip:
226
+
227
+
-`last_skip_reason` — why the most recent trigger was skipped (e.g., `overlap_policy_skip`, `status_not_triggerable`, `remaining_actions_exhausted`)
228
+
-`last_skipped_at` — when the skip occurred
229
+
-`skipped_trigger_count` — cumulative number of skipped triggers
230
+
231
+
These fields are included in `ScheduleManager::describe()` and the Waterline schedule detail API.
232
+
181
233
## Database
182
234
183
-
The schedule table (`workflow_schedules`) is created by migration `2026_04_14_000157`. The model class is configurable via `workflows.v2.schedule_model`.
235
+
The schedule table (`workflow_schedules`) is created by migration `2026_04_14_000157`. Skip tracking columns are added by migration `2026_04_14_000158`. The model class is configurable via `workflows.v2.schedule_model`.
0 commit comments