From 2be8347aed016ef1c66b1d5f7d161d37b7a46ba5 Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Tue, 3 Nov 2026 16:36:19 -0600 Subject: [PATCH 1/2] Chart 1.0.3: default to native Server 3.0.5 Move the source release record's helm_chart to 1.0.3 with app_version 3.0.5 and regenerate Chart.yaml, the values.yaml image tag and the README example with sync-source-release.mjs. The Artifact Hub changes and the UPGRADING note say the default image moves from 3.0.4 to 3.0.5 and what 3.0.5 fixes: one failing schedule no longer stalls the schedule tick (#955), and refused workflow-task reports carry the full not-recorded receipt (#994). No template, values contract or schema change. Co-Authored-By: Claude Opus 5.5 --- k8s/helm/durable-workflow/Chart.yaml | 14 ++++++------- k8s/helm/durable-workflow/README.md | 2 +- k8s/helm/durable-workflow/docs/UPGRADING.md | 23 +++++++++++++++++++++ k8s/helm/durable-workflow/values.yaml | 2 +- resources/release/source-release.json | 4 ++-- 5 files changed, 33 insertions(+), 12 deletions(-) diff --git a/k8s/helm/durable-workflow/Chart.yaml b/k8s/helm/durable-workflow/Chart.yaml index 1a15654b2..8e6600a39 100644 --- a/k8s/helm/durable-workflow/Chart.yaml +++ b/k8s/helm/durable-workflow/Chart.yaml @@ -5,11 +5,11 @@ type: application # The chart's own semver version. Bumped on every chart release; treated as # independent of the server image version (appVersion). Breaking-change rules # for this version live in docs/UPGRADING.md alongside the chart. -version: 1.0.2 +version: 1.0.3 # The immutable native Durable Workflow Server this chart release packages. # The onboarding default in values.yaml and appVersion are generated from the # checked-in source release record (helm_chart.app_version). -appVersion: "3.0.4" +appVersion: "3.0.5" kubeVersion: ">=1.27.0-0" home: https://durable-workflow.github.io/docs/2.0/deployment sources: @@ -30,16 +30,14 @@ annotations: # exact commit that most recently changed the packaged chart. org.opencontainers.image.source: https://github.com/durable-workflow/server dev.durable-workflow.source-revision: "unreleased" - dev.durable-workflow.image-reference: "docker.io/durableworkflow/server:3.0.4" + dev.durable-workflow.image-reference: "docker.io/durableworkflow/server:3.0.5" artifacthub.io/license: MIT artifacthub.io/category: integration-delivery # Free-form changelog for the current chart release shown by Artifact Hub. artifacthub.io/changes: | - kind: changed - description: Default image changes from native Server 3.0.2 to 3.0.4. No template, values contract or schema change. 3.0.3 was stopped before publication, so 3.0.4 follows 3.0.2. + description: Default image changes from native Server 3.0.4 to 3.0.5. No template, values contract or schema change. - kind: fixed - description: "Server 3.0.4 fixes the known issue in 3.0.1 and 3.0.2 (server#979): with namespace external payload storage enabled, a signal whose arguments exceed the threshold no longer leaves its run waiting, so signal arguments no longer need to stay below the threshold." + description: "Server 3.0.5 keeps one schedule whose start always fails with a non-transient database error from stopping every other due schedule, the repair pass and readiness; the failure is recorded and the schedule moves to its next occurrence (server#955)." - kind: fixed - description: Server 3.0.4 answers a full query queue with HTTP 429 (query_task_queue_full), as the PHP Server does (server#975). - - kind: fixed - description: "Server 3.0.4 marks the history export of a retention-pruned run as incomplete instead of complete with no events (server#977). https://github.com/durable-workflow/server/releases/tag/3.0.4" + description: "Server 3.0.5 answers a late or refused workflow-task report (task_not_leased or run_closed) with the full not-recorded receipt: recorded false, task_id, workflow_task_attempt and run_id (server#994). https://github.com/durable-workflow/server/releases/tag/3.0.5" diff --git a/k8s/helm/durable-workflow/README.md b/k8s/helm/durable-workflow/README.md index 933beddae..2c5b0b6ac 100644 --- a/k8s/helm/durable-workflow/README.md +++ b/k8s/helm/durable-workflow/README.md @@ -77,7 +77,7 @@ helm install durable-workflow ./k8s/helm/durable-workflow \ ```yaml image: - tag: "3.0.4" + tag: "3.0.5" # Pin a digest in production: # digest: "sha256:abc123..." diff --git a/k8s/helm/durable-workflow/docs/UPGRADING.md b/k8s/helm/durable-workflow/docs/UPGRADING.md index 371c2b5dc..db0a30461 100644 --- a/k8s/helm/durable-workflow/docs/UPGRADING.md +++ b/k8s/helm/durable-workflow/docs/UPGRADING.md @@ -69,6 +69,29 @@ chart MINOR bump and an entry below. ## Per-version migration notes +### Chart 1.0.3 / Server 3.0.5 (native) + +The default image changes from native Server 3.0.4 to 3.0.5 +(`image.tag: "3.0.5"`), so the rendered Deployment runs the new image. No +template, values contract or values schema changes, and the native schema is +unchanged (version 8), so an upgrade from chart 1.0.2, 1.0.1 or 1.0.0 needs no +schema-upgrade job. + +Server 3.0.5 has two fixes: + +- A schedule whose start always fails with a non-transient database error no + longer stops every other due schedule, the repair pass and readiness. The + failure is recorded on the schedule, which moves to its next occurrence; + lock pressure and an unavailable database are still retried + ([server#955](https://github.com/durable-workflow/server/issues/955)). +- A late or refused workflow-task report (`task_not_leased` or `run_closed`) + is answered with the full not-recorded receipt: `recorded: false`, `task_id`, + `workflow_task_attempt` and `run_id`. Workers can then tell that nothing was + recorded for exactly that task and keep polling + ([server#994](https://github.com/durable-workflow/server/issues/994)). + +See the [3.0.5 release](https://github.com/durable-workflow/server/releases/tag/3.0.5). + ### Chart 1.0.2 / Server 3.0.4 (native) The default image changes from native Server 3.0.2 to 3.0.4 diff --git a/k8s/helm/durable-workflow/values.yaml b/k8s/helm/durable-workflow/values.yaml index a16d4c515..06326c2a6 100644 --- a/k8s/helm/durable-workflow/values.yaml +++ b/k8s/helm/durable-workflow/values.yaml @@ -42,7 +42,7 @@ image: # scripts/ci/sync-source-release.mjs. Do not edit this default. # A tag must match the runtime: 3.x (or latest) for native, 2.x for php. # The chart refuses a mismatch at render time. - tag: "3.0.4" + tag: "3.0.5" # Optional digest pin. When set, takes precedence over tag for change control. # Example: "sha256:abc123..." # The chart cannot see which runtime a digest names. Pin a native digest diff --git a/resources/release/source-release.json b/resources/release/source-release.json index dae3e222e..ed97fb40c 100644 --- a/resources/release/source-release.json +++ b/resources/release/source-release.json @@ -4,7 +4,7 @@ "version": "2.11.8" }, "helm_chart": { - "version": "1.0.2", - "app_version": "3.0.4" + "version": "1.0.3", + "app_version": "3.0.5" } } From a3256a4a3e07c54ccd5f76ba658a585560730959 Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Tue, 3 Nov 2026 16:38:59 -0600 Subject: [PATCH 2/2] Chart 1.0.3 notes: separate the Server receipt from SDK settlement Security's public-truth hold on #1000: 3.0.5 only supplies the not-recorded receipt. A worker settles a refusal only if its SDK validates that receipt against the exact task, attempt and run, and Rust SDK run_closed settlement is not yet released (sdk-rust#170). Say so in UPGRADING.md and the Artifact Hub note instead of implying workers keep polling. Co-Authored-By: Claude Opus 5.5 --- k8s/helm/durable-workflow/Chart.yaml | 2 +- k8s/helm/durable-workflow/docs/UPGRADING.md | 11 ++++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/k8s/helm/durable-workflow/Chart.yaml b/k8s/helm/durable-workflow/Chart.yaml index 8e6600a39..e872c865b 100644 --- a/k8s/helm/durable-workflow/Chart.yaml +++ b/k8s/helm/durable-workflow/Chart.yaml @@ -40,4 +40,4 @@ annotations: - kind: fixed description: "Server 3.0.5 keeps one schedule whose start always fails with a non-transient database error from stopping every other due schedule, the repair pass and readiness; the failure is recorded and the schedule moves to its next occurrence (server#955)." - kind: fixed - description: "Server 3.0.5 answers a late or refused workflow-task report (task_not_leased or run_closed) with the full not-recorded receipt: recorded false, task_id, workflow_task_attempt and run_id (server#994). https://github.com/durable-workflow/server/releases/tag/3.0.5" + description: "Server 3.0.5 answers a late or refused workflow-task report (task_not_leased or run_closed) with the full not-recorded receipt: recorded false, task_id, workflow_task_attempt and run_id (server#994). Workers settle such a refusal only once their SDK validates this receipt; that SDK support is released separately. https://github.com/durable-workflow/server/releases/tag/3.0.5" diff --git a/k8s/helm/durable-workflow/docs/UPGRADING.md b/k8s/helm/durable-workflow/docs/UPGRADING.md index db0a30461..5433e58fc 100644 --- a/k8s/helm/durable-workflow/docs/UPGRADING.md +++ b/k8s/helm/durable-workflow/docs/UPGRADING.md @@ -86,9 +86,14 @@ Server 3.0.5 has two fixes: ([server#955](https://github.com/durable-workflow/server/issues/955)). - A late or refused workflow-task report (`task_not_leased` or `run_closed`) is answered with the full not-recorded receipt: `recorded: false`, `task_id`, - `workflow_task_attempt` and `run_id`. Workers can then tell that nothing was - recorded for exactly that task and keep polling - ([server#994](https://github.com/durable-workflow/server/issues/994)). + `workflow_task_attempt` and `run_id` + ([server#994](https://github.com/durable-workflow/server/issues/994)). This + is the Server side of the contract only. A worker treats the refusal as + settled only if its SDK checks that receipt against the exact task, attempt + and run it reported. Until an SDK release does that for a refusal, the + worker's behavior on it is unchanged; for example, Rust SDK settlement of + `run_closed` is not yet released + ([sdk-rust#170](https://github.com/durable-workflow/sdk-rust/issues/170)). See the [3.0.5 release](https://github.com/durable-workflow/server/releases/tag/3.0.5).