From f0dfb054b04cf52c52e1e4409bc5e6d64df44425 Mon Sep 17 00:00:00 2001 From: Durable Workflow Date: Sun, 18 Oct 2026 02:15:32 +0000 Subject: [PATCH 1/5] Prepare compatible PHP Nexus delivery release 2.5.0 --- CHANGELOG.md | 7 +++++++ composer.json | 2 +- docs/portal/build/workflows-activities.md | 10 +++++++--- 3 files changed, 15 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ca1c0a..bdec268 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,13 @@ project follows [Semantic Versioning](https://semver.org/). ## [Unreleased] +### Added + +- Replay cooperative cancellation at an original completion-waiting Nexus + service call. Cooperative workers advertise support for the owned + `workflow_run` binding. Delivery requires a compatible runtime and preserves + the original cancellation request and cleanup deadline. + ### Fixed - Retry expired idle worker I/O budgets with backoff and restore registration diff --git a/composer.json b/composer.json index 2239ec9..69b3012 100644 --- a/composer.json +++ b/composer.json @@ -82,7 +82,7 @@ } }, "durable-workflow": { - "product-train": "2.4.2", + "product-train": "2.5.0", "supported-server-versions": "2.5.0", "worker-protocol-version": "1.20", "control-plane-version": "2", diff --git a/docs/portal/build/workflows-activities.md b/docs/portal/build/workflows-activities.md index 4db697b..2c2e655 100644 --- a/docs/portal/build/workflows-activities.md +++ b/docs/portal/build/workflows-activities.md @@ -67,9 +67,6 @@ fresh-construction correction is not released. ## Call a registered service -This authoring API is introduced in the PHP SDK 2.3 prerelease. Install it with -`composer require durable-workflow/sdk:^2.3@RC`. - Use `serviceOperation()` inside a workflow to invoke a Server service endpoint. The call pauses until Server records its result. Worker restarts replay the same call identity and result without submitting another operation. @@ -110,6 +107,13 @@ Service operations currently run sequentially outside cancellation scopes and operation groups. The worker reports `service_operations_unavailable` when the connected runtime does not advertise the command. +With cooperative cancellation enabled, a completion-waiting call can deliver +cancellation at its original service-call boundary. The runtime must advertise +`nexus_cooperative_cancellation` for the `workflow_run` binding. The caller +keeps its original cleanup deadline while its owned target finishes cleanup. +Admission-only calls do not gain this waiting boundary, and returning an +existing workflow does not grant cancellation ownership over it. + ## Fan out durable work and join it once `all()` (also available as `parallel()`) captures one durable operation from each closure, schedules every leaf in one workflow-task completion, then suspends the Fiber until the group can join. The returned array always follows declaration order, even when the Server records completions in another order: From 02257b8a9e30f5a1b74481068d9e79034773012a Mon Sep 17 00:00:00 2001 From: Durable Workflow Date: Sun, 18 Oct 2026 02:17:53 +0000 Subject: [PATCH 2/5] Align the candidate quickstart package identity --- docs/quickstart-contract.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/quickstart-contract.json b/docs/quickstart-contract.json index 54a3cb1..dfd7633 100644 --- a/docs/quickstart-contract.json +++ b/docs/quickstart-contract.json @@ -3,8 +3,8 @@ "schema_version": 2, "package": { "name": "durable-workflow/sdk", - "published_version": "2.4.2", - "composer_requirement": "2.4.2", + "published_version": "2.5.0", + "composer_requirement": "2.5.0", "onboarding_requirement": "^2.4" }, "runtime_targets": { From 51c4d8ba3017abe211a330d4de95484e865e47f5 Mon Sep 17 00:00:00 2001 From: Durable Workflow Date: Sun, 18 Oct 2026 02:23:19 +0000 Subject: [PATCH 3/5] Align onboarding with the candidate release series --- docs/quickstart-contract.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/quickstart-contract.json b/docs/quickstart-contract.json index dfd7633..39cd3cb 100644 --- a/docs/quickstart-contract.json +++ b/docs/quickstart-contract.json @@ -5,7 +5,7 @@ "name": "durable-workflow/sdk", "published_version": "2.5.0", "composer_requirement": "2.5.0", - "onboarding_requirement": "^2.4" + "onboarding_requirement": "^2.5" }, "runtime_targets": { "server": { From 3ab35372d5edce1edfc64ff2a1e1e42d949f3c86 Mon Sep 17 00:00:00 2001 From: Durable Workflow Date: Sun, 18 Oct 2026 02:32:13 +0000 Subject: [PATCH 4/5] Prepare immutable Nexus 2.5.0 RC preview --- CHANGELOG.md | 14 ++++++++------ composer.json | 2 +- docs/quickstart-contract.json | 6 +++--- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bdec268..2db65f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,14 @@ project follows [Semantic Versioning](https://semver.org/). ## [Unreleased] +### Fixed + +- Retry expired idle worker I/O budgets with backoff and restore registration + before acquiring more work. Task and cancellation authority deadlines retain + their original bounds. + +## [2.5.0-rc.1] - 2026-10-18 + ### Added - Replay cooperative cancellation at an original completion-waiting Nexus @@ -13,12 +21,6 @@ project follows [Semantic Versioning](https://semver.org/). `workflow_run` binding. Delivery requires a compatible runtime and preserves the original cancellation request and cleanup deadline. -### Fixed - -- Retry expired idle worker I/O budgets with backoff and restore registration - before acquiring more work. Task and cancellation authority deadlines retain - their original bounds. - ## [2.4.2] - 2026-10-15 ### Fixed diff --git a/composer.json b/composer.json index 69b3012..09742c0 100644 --- a/composer.json +++ b/composer.json @@ -82,7 +82,7 @@ } }, "durable-workflow": { - "product-train": "2.5.0", + "product-train": "2.5.0-rc.1", "supported-server-versions": "2.5.0", "worker-protocol-version": "1.20", "control-plane-version": "2", diff --git a/docs/quickstart-contract.json b/docs/quickstart-contract.json index 39cd3cb..df7dc64 100644 --- a/docs/quickstart-contract.json +++ b/docs/quickstart-contract.json @@ -3,9 +3,9 @@ "schema_version": 2, "package": { "name": "durable-workflow/sdk", - "published_version": "2.5.0", - "composer_requirement": "2.5.0", - "onboarding_requirement": "^2.5" + "published_version": "2.5.0-rc.1", + "composer_requirement": "2.5.0-rc.1", + "onboarding_requirement": "^2.5@RC" }, "runtime_targets": { "server": { From f49a9eef9bf6c0c28df1e8b6f7ea849352a516bb Mon Sep 17 00:00:00 2001 From: Durable Workflow Date: Sun, 18 Oct 2026 03:43:01 +0000 Subject: [PATCH 5/5] Prepare stable PHP SDK Nexus release 2.5.0 --- CHANGELOG.md | 2 +- composer.json | 2 +- docs/quickstart-contract.json | 6 +++--- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2db65f8..e8fe20a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ project follows [Semantic Versioning](https://semver.org/). before acquiring more work. Task and cancellation authority deadlines retain their original bounds. -## [2.5.0-rc.1] - 2026-10-18 +## [2.5.0] - 2026-10-18 ### Added diff --git a/composer.json b/composer.json index 09742c0..69b3012 100644 --- a/composer.json +++ b/composer.json @@ -82,7 +82,7 @@ } }, "durable-workflow": { - "product-train": "2.5.0-rc.1", + "product-train": "2.5.0", "supported-server-versions": "2.5.0", "worker-protocol-version": "1.20", "control-plane-version": "2", diff --git a/docs/quickstart-contract.json b/docs/quickstart-contract.json index df7dc64..39cd3cb 100644 --- a/docs/quickstart-contract.json +++ b/docs/quickstart-contract.json @@ -3,9 +3,9 @@ "schema_version": 2, "package": { "name": "durable-workflow/sdk", - "published_version": "2.5.0-rc.1", - "composer_requirement": "2.5.0-rc.1", - "onboarding_requirement": "^2.5@RC" + "published_version": "2.5.0", + "composer_requirement": "2.5.0", + "onboarding_requirement": "^2.5" }, "runtime_targets": { "server": {