Resume only unpauses; listeners need a native way to re-fire the same job id with a new run without creating duplicate executors.
Co-authored-by: Cursor <cursoragent@cursor.com>
cron_runs entered/exited were identical because settleRun rewrote stateEnteredAt and actualAt to the finish instant.
Co-authored-by: Cursor <cursoragent@cursor.com>
Extend jobs with lifecycle projection and history policies so listeners can poll state at scale without breaking existing cron_* flows.
Co-authored-by: Cursor <cursoragent@cursor.com>