From 9b88905d3c9c33d96692a810ccf90dfabc71ed23 Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Sat, 24 Oct 2026 10:23:30 +0000 Subject: [PATCH 1/4] Adopt Core 2.13 readers for the next PHP Server patch --- composer.json | 4 +- composer.lock | 18 +++--- database/database.sqlite | Bin 0 -> 1839104 bytes docker-compose.dedicated-matching.yml | 4 +- docker-compose.memo-rolling.yml | 4 +- docker-compose.published.yml | 4 +- docker-compose.small-cluster.yml | 2 +- docker-compose.yml | 8 +-- k8s/README.md | 10 +-- k8s/helm/durable-workflow/Chart.yaml | 4 +- k8s/helm/durable-workflow/README.md | 2 +- .../ci/existing-secrets-values.yaml | 2 +- .../ci/ingress-and-hpa-values.yaml | 2 +- .../ci/inline-secrets-values.yaml | 2 +- .../durable-workflow/templates/_helpers.tpl | 2 +- k8s/helm/durable-workflow/values.yaml | 2 +- k8s/helm/examples/values-dev.yaml | 2 +- .../values-external-secrets-operator.yaml | 2 +- .../values-production-existing-secrets.yaml | 2 +- k8s/migration-job.yaml | 2 +- k8s/scheduler-cronjob.yaml | 2 +- k8s/secret.yaml | 2 +- k8s/server-deployment.yaml | 2 +- k8s/worker-deployment.yaml | 2 +- resources/release/source-release.json | 2 +- scripts/k8s-kind-smoke.sh | 2 +- tests/Feature/HistoryControllerTest.php | 59 ++++++++++++++++++ 27 files changed, 104 insertions(+), 45 deletions(-) diff --git a/composer.json b/composer.json index 674e5d072..a5fb9a08b 100644 --- a/composer.json +++ b/composer.json @@ -6,7 +6,7 @@ "require": { "php": "^8.2", "apache/avro": "^1.12", - "durable-workflow/workflow": "2.11.4", + "durable-workflow/workflow": "2.13.0", "laravel/framework": "^13.30", "laravel/tinker": "^3.0", "league/flysystem-aws-s3-v3": "^3.35.3" @@ -48,7 +48,7 @@ }, "extra": { "durable-workflow": { - "product-train": "2.11.2" + "product-train": "2.11.3" }, "laravel": { "dont-discover": [] diff --git a/composer.lock b/composer.lock index d2aaed51b..3c68b0030 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "d99dd86d09e048c04ae6a4edff646739", + "content-hash": "833341940159c12188b9c6e6762fa65f", "packages": [ { "name": "apache/avro", @@ -655,21 +655,21 @@ }, { "name": "durable-workflow/workflow", - "version": "2.11.4", + "version": "2.13.0", "source": { "type": "git", "url": "https://github.com/durable-workflow/workflow.git", - "reference": "ae6bf6c8a7c4b9597ee4eecb15ecd786e78b0430" + "reference": "ae18295693273907d0f750b479eb9b8a593e5803" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/durable-workflow/workflow/zipball/ae6bf6c8a7c4b9597ee4eecb15ecd786e78b0430", - "reference": "ae6bf6c8a7c4b9597ee4eecb15ecd786e78b0430", + "url": "https://api.github.com/repos/durable-workflow/workflow/zipball/ae18295693273907d0f750b479eb9b8a593e5803", + "reference": "ae18295693273907d0f750b479eb9b8a593e5803", "shasum": "" }, "require": { "apache/avro": "^1.12", - "laravel/framework": "^9.52.17|^10.48.29|^11.44.1|^12.69.0|^13.30.0", + "laravel/framework": "^9.52.17|^10.48.29|^11.56.1|^12.69.0|^13.30.0", "php": "^8.1", "react/promise": "^2.9|^3.0", "symfony/yaml": "^6.0|^7.0|^8.0" @@ -705,7 +705,7 @@ "dev-main": "2.0.x-dev" }, "durable-workflow": { - "product-train": "2.11.4", + "product-train": "2.13.0", "laravel-embedded-upgrade-contract": "resources/laravel-embedded-upgrade-contract.json", "laravel-dependency-security-policy": "resources/laravel-dependency-security-policy.json" } @@ -732,9 +732,9 @@ "description": "Embedded durable workflow runtime and orchestration engine for Laravel applications.", "support": { "issues": "https://github.com/durable-workflow/workflow/issues", - "source": "https://github.com/durable-workflow/workflow/tree/2.11.4" + "source": "https://github.com/durable-workflow/workflow/tree/2.13.0" }, - "time": "2026-10-23T11:36:13+00:00" + "time": "2026-10-24T08:44:23+00:00" }, { "name": "egulias/email-validator", diff --git a/database/database.sqlite b/database/database.sqlite index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..fa9cf19d92358b05e8a78dfabae0d44d985c5d97 100644 GIT binary patch literal 1839104 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 bA}a_$00Izz00bZa0SG_<0uX>eTHyZ&&2p!x literal 0 HcmV?d00001 diff --git a/docker-compose.dedicated-matching.yml b/docker-compose.dedicated-matching.yml index 999e33a5b..91e556b45 100644 --- a/docker-compose.dedicated-matching.yml +++ b/docker-compose.dedicated-matching.yml @@ -32,13 +32,13 @@ name: durable-workflow-server # daemon reports `shape: dedicated`. # Generated by scripts/ci/sync-source-release.mjs. Do not edit the fallback. -x-server-image: &server-image ${DW_SERVER_IMAGE:-durableworkflow/server:${DW_SERVER_TAG:-2.11.2}} +x-server-image: &server-image ${DW_SERVER_IMAGE:-durableworkflow/server:${DW_SERVER_TAG:-2.11.3}} x-server-environment: &server-environment APP_NAME: "Durable Workflow Server" APP_ENV: ${APP_ENV:-local} DW_SERVER_KEY: ${DW_SERVER_KEY:-} - APP_VERSION: ${APP_VERSION:-${DW_SERVER_TAG:-2.11.2}} + APP_VERSION: ${APP_VERSION:-${DW_SERVER_TAG:-2.11.3}} APP_DEBUG: ${APP_DEBUG:-false} DB_CONNECTION: mysql DB_HOST: mysql diff --git a/docker-compose.memo-rolling.yml b/docker-compose.memo-rolling.yml index e4a616b93..4a805dcc8 100644 --- a/docker-compose.memo-rolling.yml +++ b/docker-compose.memo-rolling.yml @@ -49,14 +49,14 @@ services: command: ["server-bootstrap"] environment: <<: *runtime-environment - APP_VERSION: ${APP_VERSION:-2.11.2} + APP_VERSION: ${APP_VERSION:-2.11.3} successor: image: ${DW_MEMO_SUCCESSOR_IMAGE:-durable-workflow/server-memo-rolling:local} ports: !override [] environment: <<: *runtime-environment - APP_VERSION: ${APP_VERSION:-2.11.2} + APP_VERSION: ${APP_VERSION:-2.11.3} DW_SERVER_ID: memo-successor DW_SERVER_TOPOLOGY_SHAPE: standalone_server DW_SERVER_PROCESS_CLASS: server_http_node diff --git a/docker-compose.published.yml b/docker-compose.published.yml index 4234aaa43..d237aa576 100644 --- a/docker-compose.published.yml +++ b/docker-compose.published.yml @@ -1,13 +1,13 @@ name: durable-workflow-server # Generated by scripts/ci/sync-source-release.mjs. Do not edit the fallback. -x-server-image: &server-image ${DW_SERVER_IMAGE:-durableworkflow/server:${DW_SERVER_TAG:-2.11.2}} +x-server-image: &server-image ${DW_SERVER_IMAGE:-durableworkflow/server:${DW_SERVER_TAG:-2.11.3}} x-server-environment: &server-environment APP_NAME: "Durable Workflow Server" APP_ENV: ${APP_ENV:-local} DW_SERVER_KEY: ${DW_SERVER_KEY:-} - APP_VERSION: ${APP_VERSION:-${DW_SERVER_TAG:-2.11.2}} + APP_VERSION: ${APP_VERSION:-${DW_SERVER_TAG:-2.11.3}} APP_DEBUG: ${APP_DEBUG:-false} LOG_CHANNEL: ${LOG_CHANNEL:-stderr} LOG_LEVEL: ${LOG_LEVEL:-info} diff --git a/docker-compose.small-cluster.yml b/docker-compose.small-cluster.yml index 081fcc172..29cfad2f3 100644 --- a/docker-compose.small-cluster.yml +++ b/docker-compose.small-cluster.yml @@ -12,7 +12,7 @@ x-server-build: &server-build x-server-environment: &server-environment APP_NAME: "Durable Workflow Server" APP_ENV: testing - APP_VERSION: ${APP_VERSION:-2.11.2} + APP_VERSION: ${APP_VERSION:-2.11.3} APP_DEBUG: "false" DW_SERVER_KEY: ${DW_SERVER_KEY:-base64:5Zt4nUhlCm3DD0nLXZJQdHiwPfb56yGo9gNV/g3jYbY=} DB_CONNECTION: ${DW_SMALL_CLUSTER_DB:-mysql} diff --git a/docker-compose.yml b/docker-compose.yml index 8fa6287b6..2ae745ef0 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -15,7 +15,7 @@ services: DW_SERVER_KEY: "${DW_SERVER_KEY:-}" DW_SERVER_TOPOLOGY_SHAPE: standalone_server DW_SERVER_PROCESS_CLASS: server_http_node - APP_VERSION: "${APP_VERSION:-2.11.2}" + APP_VERSION: "${APP_VERSION:-2.11.3}" APP_DEBUG: "false" DB_CONNECTION: mysql DB_HOST: mysql @@ -62,7 +62,7 @@ services: APP_NAME: "Durable Workflow Server" APP_ENV: local DW_SERVER_KEY: "${DW_SERVER_KEY:-}" - APP_VERSION: "${APP_VERSION:-2.11.2}" + APP_VERSION: "${APP_VERSION:-2.11.3}" APP_DEBUG: "false" DB_CONNECTION: mysql DB_HOST: mysql @@ -124,7 +124,7 @@ services: DW_SERVER_KEY: "${DW_SERVER_KEY:-}" DW_SERVER_TOPOLOGY_SHAPE: standalone_server DW_SERVER_PROCESS_CLASS: worker_node - APP_VERSION: "${APP_VERSION:-2.11.2}" + APP_VERSION: "${APP_VERSION:-2.11.3}" DB_CONNECTION: mysql DB_HOST: mysql DB_PORT: 3306 @@ -178,7 +178,7 @@ services: DW_SERVER_KEY: "${DW_SERVER_KEY:-}" DW_SERVER_TOPOLOGY_SHAPE: standalone_server DW_SERVER_PROCESS_CLASS: scheduler_node - APP_VERSION: "${APP_VERSION:-2.11.2}" + APP_VERSION: "${APP_VERSION:-2.11.3}" DB_CONNECTION: mysql DB_HOST: mysql DB_PORT: 3306 diff --git a/k8s/README.md b/k8s/README.md index 92692c837..bc91fe759 100644 --- a/k8s/README.md +++ b/k8s/README.md @@ -13,7 +13,7 @@ The checked-in manifests are synchronized with the repository's stable source release and pin its Docker Hub tag: ```text -durableworkflow/server:2.11.2 +durableworkflow/server:2.11.3 ``` ## Application logs @@ -42,15 +42,15 @@ digest you intend to run: ```bash kubectl set image -n durable-workflow deploy/durable-workflow-server \ - server=durableworkflow/server:2.11.2 + server=durableworkflow/server:2.11.3 kubectl set image -n durable-workflow deploy/durable-workflow-worker \ - worker=durableworkflow/server:2.11.2 + worker=durableworkflow/server:2.11.3 kubectl set image -n durable-workflow cronjob/durable-workflow-scheduler \ - scheduler=durableworkflow/server:2.11.2 + scheduler=durableworkflow/server:2.11.3 ``` GitHub Container Registry publishes the same release line at -`ghcr.io/durable-workflow/server:2.11.2`. Digest pinning is preferred for strict +`ghcr.io/durable-workflow/server:2.11.3`. Digest pinning is preferred for strict change control. The manifests expect you to provide: diff --git a/k8s/helm/durable-workflow/Chart.yaml b/k8s/helm/durable-workflow/Chart.yaml index 275daf869..0376bee71 100644 --- a/k8s/helm/durable-workflow/Chart.yaml +++ b/k8s/helm/durable-workflow/Chart.yaml @@ -9,7 +9,7 @@ version: 0.3.2 # The immutable Durable Workflow Server identity this chart release packages. # The onboarding default in values.yaml and appVersion are generated from the # checked-in source release record. -appVersion: "2.11.2" +appVersion: "2.11.3" kubeVersion: ">=1.27.0-0" home: https://durable-workflow.github.io/docs/2.0/deployment sources: @@ -30,7 +30,7 @@ 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:2.11.2" + dev.durable-workflow.image-reference: "docker.io/durableworkflow/server:2.11.3" artifacthub.io/license: MIT artifacthub.io/category: integration-delivery # Free-form changelog for the current chart release shown by Artifact Hub. diff --git a/k8s/helm/durable-workflow/README.md b/k8s/helm/durable-workflow/README.md index 3dfc2d8bf..91bcc4dd8 100644 --- a/k8s/helm/durable-workflow/README.md +++ b/k8s/helm/durable-workflow/README.md @@ -63,7 +63,7 @@ helm install durable-workflow ./k8s/helm/durable-workflow \ ```yaml image: - tag: "2.11.2" + tag: "2.11.3" # Pin a digest in production: # digest: "sha256:abc123..." # memoPayloadStorage: "raw-json-v1" # Required for a digest or custom image. diff --git a/k8s/helm/durable-workflow/ci/existing-secrets-values.yaml b/k8s/helm/durable-workflow/ci/existing-secrets-values.yaml index 8b83c7dfd..2627767ef 100644 --- a/k8s/helm/durable-workflow/ci/existing-secrets-values.yaml +++ b/k8s/helm/durable-workflow/ci/existing-secrets-values.yaml @@ -1,7 +1,7 @@ # CI fixture: GitOps / externally-managed-secret path. The chart consumes # existing Secrets and renders no Secret resources of its own. image: - tag: "2.11.2" + tag: "2.11.3" externalDatabase: connection: pgsql diff --git a/k8s/helm/durable-workflow/ci/ingress-and-hpa-values.yaml b/k8s/helm/durable-workflow/ci/ingress-and-hpa-values.yaml index b9f98a16f..70793a40a 100644 --- a/k8s/helm/durable-workflow/ci/ingress-and-hpa-values.yaml +++ b/k8s/helm/durable-workflow/ci/ingress-and-hpa-values.yaml @@ -1,6 +1,6 @@ # CI fixture: ingress + autoscaling enabled. Exercises optional templates. image: - tag: "2.11.2" + tag: "2.11.3" externalDatabase: connection: mysql diff --git a/k8s/helm/durable-workflow/ci/inline-secrets-values.yaml b/k8s/helm/durable-workflow/ci/inline-secrets-values.yaml index 0acc006fb..d8cce1473 100644 --- a/k8s/helm/durable-workflow/ci/inline-secrets-values.yaml +++ b/k8s/helm/durable-workflow/ci/inline-secrets-values.yaml @@ -2,7 +2,7 @@ # chart's render path is exercised end-to-end. Real deployments should use # existingSecret instead. image: - tag: "2.11.2" + tag: "2.11.3" externalDatabase: connection: mysql diff --git a/k8s/helm/durable-workflow/templates/_helpers.tpl b/k8s/helm/durable-workflow/templates/_helpers.tpl index 91af55fce..6ed87100b 100644 --- a/k8s/helm/durable-workflow/templates/_helpers.tpl +++ b/k8s/helm/durable-workflow/templates/_helpers.tpl @@ -88,7 +88,7 @@ resolved by an explicit capability declaration or an existing workload marker. {{- define "durable-workflow.memoPayloadStorageForImage" -}} {{- $image := toString . -}} {{- $normalized := regexReplaceAll "^index\\.docker\\.io/" $image "docker.io/" -}} -{{- if eq $normalized "docker.io/durableworkflow/server:2.11.2" -}} +{{- if eq $normalized "docker.io/durableworkflow/server:2.11.3" -}} dual-v1 {{- else if regexMatch "^docker\\.io/durableworkflow/server:2\\.0\\.0-rc\\.[0-9]+$" $normalized -}} {{- $releaseCandidate := atoi (regexFind "[0-9]+$" $normalized) -}} diff --git a/k8s/helm/durable-workflow/values.yaml b/k8s/helm/durable-workflow/values.yaml index fcc1c2239..0c260b24c 100644 --- a/k8s/helm/durable-workflow/values.yaml +++ b/k8s/helm/durable-workflow/values.yaml @@ -21,7 +21,7 @@ image: registry: docker.io repository: durableworkflow/server # Generated by scripts/ci/sync-source-release.mjs. Do not edit this default. - tag: "2.11.2" + tag: "2.11.3" # Optional digest pin. When set, takes precedence over tag for change control. # Example: "sha256:abc123..." digest: "" diff --git a/k8s/helm/examples/values-dev.yaml b/k8s/helm/examples/values-dev.yaml index 57e2a544d..29fc715f9 100644 --- a/k8s/helm/examples/values-dev.yaml +++ b/k8s/helm/examples/values-dev.yaml @@ -3,7 +3,7 @@ # shape in production. image: - tag: "2.11.2" + tag: "2.11.3" externalDatabase: connection: mysql diff --git a/k8s/helm/examples/values-external-secrets-operator.yaml b/k8s/helm/examples/values-external-secrets-operator.yaml index 4d6adf089..16dd021bd 100644 --- a/k8s/helm/examples/values-external-secrets-operator.yaml +++ b/k8s/helm/examples/values-external-secrets-operator.yaml @@ -5,7 +5,7 @@ # concern. image: - tag: "2.11.2" + tag: "2.11.3" externalDatabase: connection: pgsql diff --git a/k8s/helm/examples/values-production-existing-secrets.yaml b/k8s/helm/examples/values-production-existing-secrets.yaml index e38494739..f2bb7981b 100644 --- a/k8s/helm/examples/values-production-existing-secrets.yaml +++ b/k8s/helm/examples/values-production-existing-secrets.yaml @@ -10,7 +10,7 @@ image: repository: durable-workflow/server # Pin a digest in production for change-control auditability. digest: "" # e.g. "sha256:abc123..." - tag: "2.11.2" + tag: "2.11.3" externalDatabase: connection: pgsql diff --git a/k8s/migration-job.yaml b/k8s/migration-job.yaml index b843742bb..095b2c5db 100644 --- a/k8s/migration-job.yaml +++ b/k8s/migration-job.yaml @@ -13,7 +13,7 @@ spec: restartPolicy: OnFailure containers: - name: migrate - image: durableworkflow/server:2.11.2 + image: durableworkflow/server:2.11.3 command: ["server-entrypoint"] args: ["server-bootstrap"] envFrom: diff --git a/k8s/scheduler-cronjob.yaml b/k8s/scheduler-cronjob.yaml index 390a8a255..bd60a1120 100644 --- a/k8s/scheduler-cronjob.yaml +++ b/k8s/scheduler-cronjob.yaml @@ -24,7 +24,7 @@ spec: restartPolicy: Never containers: - name: scheduler - image: durableworkflow/server:2.11.2 + image: durableworkflow/server:2.11.3 command: ["server-entrypoint"] args: - sh diff --git a/k8s/secret.yaml b/k8s/secret.yaml index bb80cb253..c96c8c4b4 100644 --- a/k8s/secret.yaml +++ b/k8s/secret.yaml @@ -12,7 +12,7 @@ metadata: app.kubernetes.io/name: durable-workflow data: APP_NAME: "Durable Workflow Server" - APP_VERSION: "2.11.2" + APP_VERSION: "2.11.3" APP_ENV: production APP_DEBUG: "false" LOG_CHANNEL: "stderr" diff --git a/k8s/server-deployment.yaml b/k8s/server-deployment.yaml index 88c49fcc8..67065963a 100644 --- a/k8s/server-deployment.yaml +++ b/k8s/server-deployment.yaml @@ -23,7 +23,7 @@ spec: spec: containers: - name: server - image: durableworkflow/server:2.11.2 + image: durableworkflow/server:2.11.3 ports: - containerPort: 8080 name: http diff --git a/k8s/worker-deployment.yaml b/k8s/worker-deployment.yaml index 2c956b1c5..b19470f0f 100644 --- a/k8s/worker-deployment.yaml +++ b/k8s/worker-deployment.yaml @@ -19,7 +19,7 @@ spec: spec: containers: - name: worker - image: durableworkflow/server:2.11.2 + image: durableworkflow/server:2.11.3 command: ["server-entrypoint"] args: ["php", "artisan", "queue:work", "--sleep=1", "--tries=3", "--max-time=3600"] envFrom: diff --git a/resources/release/source-release.json b/resources/release/source-release.json index b9d2868a6..3cea75301 100644 --- a/resources/release/source-release.json +++ b/resources/release/source-release.json @@ -1,7 +1,7 @@ { "schema": "durable-workflow.server.source-release/v1", "server": { - "version": "2.11.2" + "version": "2.11.3" }, "helm_chart": { "version": "0.3.2" diff --git a/scripts/k8s-kind-smoke.sh b/scripts/k8s-kind-smoke.sh index 18b0dbd98..69924f803 100755 --- a/scripts/k8s-kind-smoke.sh +++ b/scripts/k8s-kind-smoke.sh @@ -7,7 +7,7 @@ cluster="${K8S_SMOKE_CLUSTER:-durable-workflow-server-smoke}" image="${K8S_SMOKE_IMAGE:-durableworkflow/server:k8s-smoke}" # Generated by scripts/ci/sync-source-release.mjs so the smoke replaces the # same default shipped by the public manifests. -manifest_image="durableworkflow/server:2.11.2" +manifest_image="durableworkflow/server:2.11.3" kind_node_image="${K8S_SMOKE_KIND_NODE_IMAGE:-kindest/node:v1.29.4}" artifact_dir="${K8S_SMOKE_ARTIFACT_DIR:-/tmp/durable-workflow-k8s-kind-smoke-artifacts}" rendered_dir="${artifact_dir}/rendered-manifests" diff --git a/tests/Feature/HistoryControllerTest.php b/tests/Feature/HistoryControllerTest.php index 70269acb0..b476789bd 100644 --- a/tests/Feature/HistoryControllerTest.php +++ b/tests/Feature/HistoryControllerTest.php @@ -2,12 +2,15 @@ namespace Tests\Feature; +use App\Support\HistoryPageToken; use Illuminate\Foundation\Testing\RefreshDatabase; use Illuminate\Support\Facades\Queue; +use Illuminate\Support\Str; use Tests\Feature\Concerns\ServerTestHelpers; use Tests\Fixtures\ExternalGreetingWorkflow; use Tests\TestCase; use Workflow\V2\Models\WorkflowHistoryEvent; +use Workflow\V2\Models\WorkflowRun; class HistoryControllerTest extends TestCase { @@ -70,6 +73,62 @@ public function test_it_returns_history_events_for_a_workflow_run(): void ); } + public function test_history_and_export_read_a_stored_rejected_outcome_without_mutating_the_run(): void + { + Queue::fake(); + $this->createNamespace('default'); + $start = $this->postJson('/api/workflows', [ + 'workflow_id' => 'wf-history-rejected-outcome', + 'workflow_type' => 'tests.external-greeting-workflow', + 'input' => ['Ada'], + ], $this->apiHeaders())->assertCreated(); + $runId = (string) $start->json('run_id'); + $sequence = (int) WorkflowHistoryEvent::query()->where('workflow_run_id', $runId)->max('sequence') + 1; + $payload = [ + 'activity_execution_id' => 'activity-reader', + 'activity_attempt_id' => 'attempt-reader', + 'attempt_number' => 2, + 'lease_owner' => 'old-worker', + 'outcome' => 'completed', + 'reason' => 'lease_expired', + 'observed_at' => now()->toIso8601String(), + ]; + + // Seed an existing fact directly. Reader adoption does not enable its producer. + WorkflowHistoryEvent::query()->insert([ + 'id' => (string) Str::ulid(), + 'workflow_run_id' => $runId, + 'sequence' => $sequence, + 'event_type' => 'ActivityOutcomeRejected', + 'payload' => json_encode($payload, JSON_THROW_ON_ERROR), + 'recorded_at' => now(), + 'created_at' => now(), + 'updated_at' => now(), + ]); + WorkflowRun::query()->whereKey($runId)->update(['last_history_sequence' => $sequence]); + $before = WorkflowRun::query()->findOrFail($runId)->getRawOriginal(); + $eventCount = WorkflowHistoryEvent::query()->where('workflow_run_id', $runId)->count(); + $historyUrl = "/api/workflows/wf-history-rejected-outcome/runs/{$runId}/history"; + $pageToken = HistoryPageToken::encode($sequence - 1); + + $this->getJson($historyUrl.'?page_size=1&next_page_token='.$pageToken, $this->apiHeaders()) + ->assertOk() + ->assertJsonCount(1, 'events') + ->assertJsonPath('events.0.sequence', $sequence) + ->assertJsonPath('events.0.event_type', 'ActivityOutcomeRejected') + ->assertJsonPath('events.0.payload', $payload) + ->assertJsonPath('next_page_token', null); + $export = $this->getJson($historyUrl.'/export', $this->apiHeaders())->assertOk(); + $event = collect($export->json('history_events'))->firstWhere('sequence', $sequence); + $this->assertSame('ActivityOutcomeRejected', $event['type'] ?? null); + $this->assertSame($payload, $event['payload'] ?? null); + $timelineEntry = collect($export->json('timeline'))->firstWhere('sequence', $sequence); + $this->assertSame('ActivityOutcomeRejected', $timelineEntry['type'] ?? null); + $this->assertSame('Rejected completed outcome from activity attempt 2: lease_expired.', $timelineEntry['summary'] ?? null); + $this->assertSame($before, WorkflowRun::query()->findOrFail($runId)->getRawOriginal()); + $this->assertSame($eventCount, WorkflowHistoryEvent::query()->where('workflow_run_id', $runId)->count()); + } + public function test_it_surfaces_run_compatibility_on_history_response_and_start_event(): void { Queue::fake(); From 2ecb36028a836e90a01f470bd183e589a658f65e Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Sat, 24 Oct 2026 10:24:51 +0000 Subject: [PATCH 2/4] Remove generated SQLite state from the consumer change --- database/database.sqlite | Bin 1839104 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/database/database.sqlite b/database/database.sqlite index fa9cf19d92358b05e8a78dfabae0d44d985c5d97..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 GIT binary patch literal 0 HcmV?d00001 literal 1839104 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 bA}a_$00Izz00bZa0SG_<0uX>eTHyZ&&2p!x From cf450accf8de903bcde3b3542ef2b663f5409420 Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Sat, 24 Oct 2026 10:29:06 +0000 Subject: [PATCH 3/4] Advance the chart version for the next Server image --- k8s/helm/durable-workflow/Chart.yaml | 4 +++- resources/release/source-release.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/k8s/helm/durable-workflow/Chart.yaml b/k8s/helm/durable-workflow/Chart.yaml index 0376bee71..ca24a6238 100644 --- a/k8s/helm/durable-workflow/Chart.yaml +++ b/k8s/helm/durable-workflow/Chart.yaml @@ -5,7 +5,7 @@ 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: 0.3.2 +version: 0.3.3 # The immutable Durable Workflow Server identity this chart release packages. # The onboarding default in values.yaml and appVersion are generated from the # checked-in source release record. @@ -35,6 +35,8 @@ annotations: artifacthub.io/category: integration-delivery # Free-form changelog for the current chart release shown by Artifact Hub. artifacthub.io/changes: | + - kind: fixed + description: Include canonical failure storage, retention recovery and rejected-outcome history readers. - kind: changed description: Package Server 2.11 with capability-gated activity lease maintenance and configurable lease duration. - kind: added diff --git a/resources/release/source-release.json b/resources/release/source-release.json index 3cea75301..67b6b1bde 100644 --- a/resources/release/source-release.json +++ b/resources/release/source-release.json @@ -4,6 +4,6 @@ "version": "2.11.3" }, "helm_chart": { - "version": "0.3.2" + "version": "0.3.3" } } From 93e28e48089bb1c6d67bb60142724221dd42c92e Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Sat, 24 Oct 2026 10:58:26 +0000 Subject: [PATCH 4/4] Read the official image version from the release manifest in the Helm contract --- tests/Unit/HelmMemoPayloadTransitionContractTest.php | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/Unit/HelmMemoPayloadTransitionContractTest.php b/tests/Unit/HelmMemoPayloadTransitionContractTest.php index e930a771b..70dec58a3 100644 --- a/tests/Unit/HelmMemoPayloadTransitionContractTest.php +++ b/tests/Unit/HelmMemoPayloadTransitionContractTest.php @@ -27,7 +27,9 @@ public function test_chart_fails_closed_for_active_envelope_only_workloads(): vo $this->assertStringContainsString('(not (has $phase (list "Succeeded" "Failed")))', $helpers); $this->assertStringContainsString('(not $terminal)', $helpers); $this->assertStringContainsString('$pod.metadata.deletionTimestamp', $helpers); - $this->assertStringContainsString('docker.io/durableworkflow/server:2.0.0', $helpers); + $release = json_decode($this->read('resources/release/source-release.json'), true, flags: JSON_THROW_ON_ERROR); + $this->assertIsString($release['server']['version'] ?? null); + $this->assertStringContainsString('docker.io/durableworkflow/server:'.$release['server']['version'], $helpers); $this->assertStringNotContainsString('get $labels "app.kubernetes.io/version"', $helpers); $this->assertStringContainsString('fail (printf "memo payload transition', $helpers); }