Workflow 2.2.19 makes schedule starts idempotent for the same nominal UTC occurrence. A normal tick, backfill, or buffered action now records a clean already_fired_occurrence skip if that occurrence has already started. The migration indexes occurrence keys and backfills existing schedule history; during a rolling upgrade, new schedulers also recognize unindexed events written by older processes. The schedule correctness guide documents daylight-saving folds and gaps, manual triggers, and backfill boundaries.
This release also reads the retention details_pruned_at marker as a UTC instant, preserving the correct time in API consumers such as Waterline across application timezones and daylight-saving transitions.
Qualification covered the schedule boundary scenarios with published Workflow 2.2.18 on SQLite, MySQL, PostgreSQL, and MariaDB, then verified the candidate fix across those databases. The exact release commit passed the full database, Laravel upgrade, quality, regression, and coverage matrix. The published-package verification passed, including Laravel 9–13 upgrades. A fresh install of the exact published 2.2.19 package passed the schedule boundary cases on all four databases and the retention serialization probe with published Waterline 2.0.7 on PostgreSQL 17. Download the raw synthetic evidence.
Run the Workflow package migrations before restarting schedule processing. Server images pin their own Workflow package version and need a separate update and image qualification. The schedule implementation and raw evidence and retention fix provide the source review.