Changelog
Exactly-once triggered runs, and cancels that keep output
Three gaps at the edges of a run are closed. A run that exists in the database is always handed to a worker, a redelivered schedule or webhook can no longer execute twice, and stopping a run no longer throws away the text the agent was in the middle of writing.
How it works
- Durable starts. Starting, resuming, or continuing a run writes its queue job in the same database transaction as the run itself, through an outbox. A publisher sends committed jobs immediately and a one-second sweep repairs anything it missed. If publishing keeps failing, the run fails with that reason instead of sitting queued forever.
- One run per firing. Every triggered run carries a key unique to its trigger firing, so a redelivered event finds the existing run instead of starting a second one.
- Cancel keeps output. A worker saves its partial step before reporting cancelled, and a run that finished in the meantime isn't overwritten.
Also shipped
- Rerun and Test are no longer disabled while another run of the same workflow is in progress.
- Apps queue requests during busy moments (up to 256 in flight and 2,048 waiting) instead of rejecting anything past 16.