github durable-workflow/workflow 2.7.0
Workflow 2.7.0

3 hours ago

Accepted signals at terminal boundaries

  • Give an eligible declared signal an ordered delivery turn before a remote workflow task completes or continues as new.
  • Carry eligible pending instance signals across continuation with accepted updates in original command order, preserving IDs, encoded arguments and receipt times. Run-targeted signals keep their selected run.
  • Close unresolved accepted signals explicitly as rejected, with reason run_closed_before_signal_applied, a closure time and a linked SignalRejected event. Original acceptance receipts remain immutable.
  • Preserve missing legacy declarations as unknown. A receipt alone cannot establish a handler or authorize handoff.

Upgrade order

SignalRejected extends the persisted history enum. Stop and upgrade all embedded/direct-database readers, including Waterline when it shares the database, before enabling the writer. Older Core versions cannot decode this event. Mixed-version reading and rolling back old readers after it is stored are unqualified; repair forward or restore the complete pre-upgrade recovery point.

No database schema or SDK protocol-floor change is required. Service-mode SDKs retain their existing task-completion mechanics.

Verification

The exact source tree passed full MySQL/PostgreSQL/MariaDB features, unit coverage/ratchet, five Laravel upgrade configurations, replay-corpus counterfactuals, quality/security/boundary checks and Sonar (1.0% new duplication, zero open/confirmed issues under unchanged settings). Twelve real normally installed Python SDK cases cover complete/CAN, declared/missing declarations and default/named namespaces. Declared signals apply once; unresolved legacy signals close explicitly with no false application. Original deadlines and database bytes are preserved.

Implementation: #858. Follow-through: #857. Published-package verification and the affected PHP Server image/consumer are recorded there separately; publishing this Core package does not update a pinned image or managed deployment.

Don't miss a new workflow release

NewReleases is sending notifications on new releases.