From 4f509051442b8e9ddbacb98a879355bac11319aa Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Mon, 2 Nov 2026 22:11:26 -0600 Subject: [PATCH 1/5] Draft the native Server 3.0 launch post Announce the native (Rust) Server 3.x: one process with a database, the SQLite and Compose quickstarts from the native install guides, the PHP 2.x takeover path, SDK support, and the gaps that remain. The post is dated as a placeholder and kept as draft: true so it cannot publish before Server 3.0.3 and the native install guides ship. Co-Authored-By: Claude Opus 5.5 --- .../2026-11-04-durable-workflow-server-3-0.md | 226 ++++++++++++++++++ 1 file changed, 226 insertions(+) create mode 100644 blog/2026-11-04-durable-workflow-server-3-0.md diff --git a/blog/2026-11-04-durable-workflow-server-3-0.md b/blog/2026-11-04-durable-workflow-server-3-0.md new file mode 100644 index 00000000000..fa19a865395 --- /dev/null +++ b/blog/2026-11-04-durable-workflow-server-3-0.md @@ -0,0 +1,226 @@ +--- +slug: durable-workflow-server-3-0 +title: "Durable Workflow Server 3.0: One Native Process" +description: "Server 3.x is a native (Rust) implementation of the standalone Durable Workflow Server. It runs as one container plus a database. You no longer deploy Redis, a queue worker, a scheduler or a bootstrap job." +authors: [richard] +tags: [server, self-hosting, rust, release] +draft: true +--- + +import ProductPromotion from '@site/src/components/ProductPromotion'; + +{/* + Release-day checklist: + - The Server version is written as the literal 3.0.3 in the prose, the + commands and the Compose URL. Replace every occurrence if the release + number changes. + - Merge docs PR #426 first. This post links to its native install guides. + - Remove `draft: true` to publish. +*/} + +Durable Workflow Server 3.0 is a native implementation of the standalone +Server, written in Rust. It runs as a single process. You give it a database +and a token. It creates its own schema, serves the API, and fires durable timers +and schedules itself. You no longer deploy Redis, a queue worker, a scheduler or +a bootstrap job alongside it. + +Your workflows do not change. The native Server implements the same HTTP control +plane and worker protocol, so existing PHP, Python and Rust workers connect to +it as before. + + + +## What changed, and why + +PHP Server 2.x ran the PHP workflow engine behind the Server's HTTP boundary. +That design worked, but a production installation had five moving parts beside +the database: the API server, a queue worker, a scheduler, a one-time bootstrap +job and Redis. Each one had to be sized, monitored, restarted in the right order +and described in a runbook. + +The native Server replaces all of that with one process: + +- On first start it creates its schema and the `default` namespace. +- The same process fires durable timers and schedules and runs the maintenance + passes, including activity-timeout enforcement. These keep running while SDK + workers are stopped. +- It stores data in SQLite (the default), MySQL, MariaDB or PostgreSQL. +- It uses token authentication. A shared `DW_AUTH_TOKEN` is required, and the + Server refuses to start without one. You can add role-scoped worker, + operator and admin tokens so that each client gets only the access it needs. + +We did not set out to design a new architecture. The goal of the rewrite, +tracked in [server#325](https://github.com/durable-workflow/server/issues/325), +was a new major version of the same product, with the same API, behavior and +data. Before release, we ran the same shared corpus of 97 fixture cases against +the published PHP Server 2.11.8 image, embedded Laravel and the native 3.0.0 +image. All three passed every case. That shows the behavior matches. It is not a +performance claim, and this post does not publish benchmark numbers. + +PHP Server 2.x is frozen at 2.11.8, its final release. Embedded Laravel +Workflow is unaffected and remains a first-class way to run Durable Workflow. + +## Try it in two minutes + +All you need is Docker. The commands below start the Server with SQLite in a +named volume and a local development token. The API listens on loopback only: + +```bash +export DW_SERVER_IMAGE=durableworkflow/server:3.0.3 +export DW_AUTH_TOKEN=dev-token + +docker volume create durable-workflow-quickstart + +docker rm -f durable-workflow-server >/dev/null 2>&1 || true +docker run -d --name durable-workflow-server \ + -p 127.0.0.1:8080:8080 \ + -v durable-workflow-quickstart:/app/database \ + -e DW_AUTH_TOKEN="$DW_AUTH_TOKEN" \ + "$DW_SERVER_IMAGE" + +until curl -sf http://localhost:8080/api/ready >/dev/null; do sleep 1; done +curl -H "Authorization: Bearer $DW_AUTH_TOKEN" \ + http://localhost:8080/api/cluster/info +``` + +Cluster info should report `"implementation":"rust"` and version `3.0.3`. Next, +go to [step 3 of the quickstart](/docs/quickstart/#choose-one-language) and run +a workflow with the PHP, Python or Rust SDK. Use `dev-token` only for this local +exercise. When you are done, remove the container and the volume: + +```bash +docker rm -f durable-workflow-server +docker volume rm durable-workflow-quickstart +``` + +### Compose with MySQL + +The published Compose file runs the native Server with MySQL. Download it from +the release and pin the image version: + +```bash +curl -fsSLO https://raw.githubusercontent.com/durable-workflow/server/3.0.3/docker-compose.published.yml + +export DW_SERVER_IMAGE=durableworkflow/server:3.0.3 +export DW_AUTH_TOKEN=dev-token + +docker compose -f docker-compose.published.yml up -d --wait +curl -H "Authorization: Bearer $DW_AUTH_TOKEN" \ + http://localhost:8080/api/cluster/info \ + | jq '{version, implementation}' +``` + +Compose refuses to start until `DW_AUTH_TOKEN` is set, and it publishes the API +on `127.0.0.1` only. For single-node production, the +[deployment guide](/docs/deployment/) covers the env file, backups, TLS through +a reverse proxy and upgrades. All Server settings are listed in the +[configuration reference](/docs/polyglot/server-config-reference/). + +### Image tags + +Native releases are published to the same repositories as before: +`durableworkflow/server` on Docker Hub and `ghcr.io/durable-workflow/server`. +The rolling `3` and `latest` tags now follow native releases. The `2` tag stays +on PHP 2.11.8. If you run PHP Server from `latest`, pin `2.11.8` or an image +digest today. A native Server refuses to start against a PHP-owned database +and leaves it untouched, but an accidental pull would still leave you without a +running Server. + +### Kubernetes + +Helm chart 1.x runs the native Server by default. It renders one Server Deployment and no +worker, scheduler, migration Job or Redis. You supply an external MySQL, +MariaDB or PostgreSQL database, because the chart refuses SQLite, and you +provide the tokens through Kubernetes Secrets. Running more than one replica +requires a ReadWriteMany volume for external payload storage. The chart is +still marked beta. An existing PHP release never switches to native on an +ordinary upgrade: the chart refuses to upgrade it until you set `runtime` +explicitly. See [Helm chart for Kubernetes](/docs/deployment/#helm-chart-for-kubernetes). + +## Moving from PHP Server 2.x + +The native Server never converts a database when it starts. You move an +existing PHP database to native once, with an explicit, one-way takeover: + +1. Upgrade to PHP Server 2.5.14 or later, which adds an ownership fence. Then + stop every PHP role that can write: the API server, queue workers, the + scheduler and any bootstrap job. +2. Inspect the stopped database with the native image's read-only + `upgrade-inspect` commands. +3. Back up the database and restore the backup into a separate database. Run + `upgrade-fingerprint` on both. The two digests must match. +4. Run `upgrade-takeover` with that digest. Before it changes anything, it + refuses if the database was written after your backup, or if the database + holds state that the native Server cannot carry over. +5. Start the native Server. From then on, PHP refuses to run against that + database. + +There is no rollback to PHP after takeover, apart from restoring your verified +backup into a new database. Takeover accepts PHP database layouts from 2.5.14 +through 2.11.8. It is planned for deprecation in the 3.1.x line, so move from +PHP while you are on 3.0.x. Follow the +[native takeover runbook](https://github.com/durable-workflow/server/blob/main/docs/rust-server-upgrade-takeover.md) +step by step. + +## SDK support + +The native Server implements worker protocol 1.20, the version the current SDKs +use. These SDK releases declare support for native Server 3.x: + +| SDK | Release | Declares native Server 3.x support from | +| --- | --- | --- | +| [PHP](/docs/polyglot/php/) (`durable-workflow/sdk`) | 3.8.0 | 3.0.0 | +| [Python](/docs/polyglot/python/) (`durable-workflow`) | 2.13.0 | 3.0.0 | +| [Rust](/docs/polyglot/rust/) (`durable-workflow` crate) | 4.10.3 | 3.0.2 | + +Server 3.0.3 meets all three declarations. + +## What isn't there yet + +Some things are not yet available in the native Server: + +- **No server-side admission control or quotas.** Task-queue lease and dispatch + caps, namespace request admission and namespace durable-state quotas have + not been implemented on native yet + ([server#982](https://github.com/durable-workflow/server/issues/982)). If one + of these limits is configured, the Server refuses to start rather than + silently ignoring it. Until then, limit task concurrency with each SDK + worker's slots and the number of workers you run. +- **No published high-availability evidence.** No failover rehearsal has been + published for the native Server, and `/api/cluster/info` reports + `single_region_failover_contract: false`. The validated small-cluster and + HA failover contracts remain PHP 2.x contracts. To run more than one native + replica, use the Helm chart. Single-region HA is available only as a + support-led design. The + [deployment support matrix](/docs/deployment/#deployment-support-matrix) + shows what each path supports and what it does not promise. +- **External payloads are stored on local disk only.** The native Server has + no S3 transport yet. +- **Token authentication only.** The native Server refuses the 2.x HMAC + `signature` driver. +- **Open protocol gaps.** Task-delivery offers + ([server#931](https://github.com/durable-workflow/server/issues/931)), + durable signal and update command keys + ([server#934](https://github.com/durable-workflow/server/issues/934)) and the + `abandon` activity cancellation policy + ([server#971](https://github.com/durable-workflow/server/issues/971)) are + still open. The [release notes](https://github.com/durable-workflow/server/releases) + for each version list its known issues. + +If one of these gaps blocks you, comment on the issue. That helps us decide what +to build next. + +## Or let us run it + +Durable Workflow Cloud runs the Server for you. Cloud operates the runtime, +persistence and recovery for a managed namespace. Your existing PHP, Python or +Rust workers connect to it with role-scoped credentials. Cloud is in early +access, and the request form lets you ask to join the launch cohort. If you would rather not +operate a database, backups and upgrades yourself, +[request early access](https://cloud.durable-workflow.com/early-access#source=blog-native-server-3-0). + + +Skip operating the Server yourself: Cloud runs the runtime and persistence for +a managed namespace, and the same SDK workers connect with role-scoped +credentials. + From 2ffe1a2407de56c6c4691b21a1c8306a74d24bea Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Mon, 2 Nov 2026 23:56:02 -0600 Subject: [PATCH 2/5] State the takeover coverage and refusals; recommend PHP SDK 3.8.1 Describe which PHP layouts takeover recognizes and tests end to end, what it refuses before changing anything, and ask operators to rehearse on a restored backup. Link the runbook at the 3.0.3 tag. Name PHP SDK 3.8.1, which fixes activities with heartbeat timeouts. Co-Authored-By: Claude Opus 5.5 --- blog/2026-11-04-durable-workflow-server-3-0.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/blog/2026-11-04-durable-workflow-server-3-0.md b/blog/2026-11-04-durable-workflow-server-3-0.md index fa19a865395..0a71f68345e 100644 --- a/blog/2026-11-04-durable-workflow-server-3-0.md +++ b/blog/2026-11-04-durable-workflow-server-3-0.md @@ -15,6 +15,8 @@ import ProductPromotion from '@site/src/components/ProductPromotion'; commands and the Compose URL. Replace every occurrence if the release number changes. - Merge docs PR #426 first. This post links to its native install guides. + - Confirm PHP SDK 3.8.1 is published (it fixes activities with heartbeat + timeouts; do not recommend 3.8.0). - Remove `draft: true` to publish. */} @@ -156,10 +158,16 @@ existing PHP database to native once, with an explicit, one-way takeover: database. There is no rollback to PHP after takeover, apart from restoring your verified -backup into a new database. Takeover accepts PHP database layouts from 2.5.14 -through 2.11.8. It is planned for deprecation in the 3.1.x line, so move from -PHP while you are on 3.0.x. Follow the -[native takeover runbook](https://github.com/durable-workflow/server/blob/main/docs/rust-server-upgrade-takeover.md) +backup into a new database. Takeover recognizes PHP database layouts from +2.5.14 through 2.11.8 and refuses any other database before changing it. +Databases created by PHP 2.8.0 through 2.11.8 are tested end to end on SQLite, +PostgreSQL, MySQL and MariaDB. It also refuses, without changing anything, a +database that holds external payload references, workflow-to-workflow +messages, pending service-call work, or schedules that use search attributes or +Laravel queue routing. Rehearse the takeover on a restored copy of your backup +first. Takeover is planned for deprecation in the 3.1.x line, so move from PHP +while you are on 3.0.x. Follow the +[native takeover runbook](https://github.com/durable-workflow/server/blob/3.0.3/docs/rust-server-upgrade-takeover.md) step by step. ## SDK support @@ -169,7 +177,7 @@ use. These SDK releases declare support for native Server 3.x: | SDK | Release | Declares native Server 3.x support from | | --- | --- | --- | -| [PHP](/docs/polyglot/php/) (`durable-workflow/sdk`) | 3.8.0 | 3.0.0 | +| [PHP](/docs/polyglot/php/) (`durable-workflow/sdk`) | 3.8.1 | 3.0.0 | | [Python](/docs/polyglot/python/) (`durable-workflow`) | 2.13.0 | 3.0.0 | | [Rust](/docs/polyglot/rust/) (`durable-workflow` crate) | 4.10.3 | 3.0.2 | From 1b0020ba123de156c08c8bace6526ffd522fe49e Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Tue, 3 Nov 2026 01:19:05 -0600 Subject: [PATCH 3/5] Target Server 3.0.4 and hold takeover as not yet qualified Server 3.0.3 was stopped; the launch release is 3.0.4. Security held the takeover runbook, so the post no longer presents takeover as a supported upgrade path: existing PHP installations stay on 2.11.8 until the runbook is qualified, and the runbook is linked only as design and status. Name PHP SDK 3.8.1 or later. Co-Authored-By: Claude Opus 5.5 --- .../2026-11-04-durable-workflow-server-3-0.md | 64 ++++++++----------- 1 file changed, 26 insertions(+), 38 deletions(-) diff --git a/blog/2026-11-04-durable-workflow-server-3-0.md b/blog/2026-11-04-durable-workflow-server-3-0.md index 0a71f68345e..d704f7ecc8b 100644 --- a/blog/2026-11-04-durable-workflow-server-3-0.md +++ b/blog/2026-11-04-durable-workflow-server-3-0.md @@ -11,12 +11,14 @@ import ProductPromotion from '@site/src/components/ProductPromotion'; {/* Release-day checklist: - - The Server version is written as the literal 3.0.3 in the prose, the + - The Server version is written as the literal 3.0.4 in the prose, the commands and the Compose URL. Replace every occurrence if the release number changes. - Merge docs PR #426 first. This post links to its native install guides. - - Confirm PHP SDK 3.8.1 is published (it fixes activities with heartbeat - timeouts; do not recommend 3.8.0). + - Confirm PHP SDK 3.8.1 or later is published (3.8.1 fixes activities with + heartbeat timeouts; do not recommend 3.8.0). + - Takeover is described as not yet qualified. Update that section only when + the runbook is marked qualified. - Remove `draft: true` to publish. */} @@ -68,7 +70,7 @@ All you need is Docker. The commands below start the Server with SQLite in a named volume and a local development token. The API listens on loopback only: ```bash -export DW_SERVER_IMAGE=durableworkflow/server:3.0.3 +export DW_SERVER_IMAGE=durableworkflow/server:3.0.4 export DW_AUTH_TOKEN=dev-token docker volume create durable-workflow-quickstart @@ -85,7 +87,7 @@ curl -H "Authorization: Bearer $DW_AUTH_TOKEN" \ http://localhost:8080/api/cluster/info ``` -Cluster info should report `"implementation":"rust"` and version `3.0.3`. Next, +Cluster info should report `"implementation":"rust"` and version `3.0.4`. Next, go to [step 3 of the quickstart](/docs/quickstart/#choose-one-language) and run a workflow with the PHP, Python or Rust SDK. Use `dev-token` only for this local exercise. When you are done, remove the container and the volume: @@ -101,9 +103,9 @@ The published Compose file runs the native Server with MySQL. Download it from the release and pin the image version: ```bash -curl -fsSLO https://raw.githubusercontent.com/durable-workflow/server/3.0.3/docker-compose.published.yml +curl -fsSLO https://raw.githubusercontent.com/durable-workflow/server/3.0.4/docker-compose.published.yml -export DW_SERVER_IMAGE=durableworkflow/server:3.0.3 +export DW_SERVER_IMAGE=durableworkflow/server:3.0.4 export DW_AUTH_TOKEN=dev-token docker compose -f docker-compose.published.yml up -d --wait @@ -137,38 +139,24 @@ provide the tokens through Kubernetes Secrets. Running more than one replica requires a ReadWriteMany volume for external payload storage. The chart is still marked beta. An existing PHP release never switches to native on an ordinary upgrade: the chart refuses to upgrade it until you set `runtime` -explicitly. See [Helm chart for Kubernetes](/docs/deployment/#helm-chart-for-kubernetes). +explicitly. Set `runtime: php` to keep running PHP 2.11.8. See [Helm chart for Kubernetes](/docs/deployment/#helm-chart-for-kubernetes). ## Moving from PHP Server 2.x -The native Server never converts a database when it starts. You move an -existing PHP database to native once, with an explicit, one-way takeover: - -1. Upgrade to PHP Server 2.5.14 or later, which adds an ownership fence. Then - stop every PHP role that can write: the API server, queue workers, the - scheduler and any bootstrap job. -2. Inspect the stopped database with the native image's read-only - `upgrade-inspect` commands. -3. Back up the database and restore the backup into a separate database. Run - `upgrade-fingerprint` on both. The two digests must match. -4. Run `upgrade-takeover` with that digest. Before it changes anything, it - refuses if the database was written after your backup, or if the database - holds state that the native Server cannot carry over. -5. Start the native Server. From then on, PHP refuses to run against that - database. - -There is no rollback to PHP after takeover, apart from restoring your verified -backup into a new database. Takeover recognizes PHP database layouts from -2.5.14 through 2.11.8 and refuses any other database before changing it. -Databases created by PHP 2.8.0 through 2.11.8 are tested end to end on SQLite, -PostgreSQL, MySQL and MariaDB. It also refuses, without changing anything, a -database that holds external payload references, workflow-to-workflow -messages, pending service-call work, or schedules that use search attributes or -Laravel queue routing. Rehearse the takeover on a restored copy of your backup -first. Takeover is planned for deprecation in the 3.1.x line, so move from PHP -while you are on 3.0.x. Follow the -[native takeover runbook](https://github.com/durable-workflow/server/blob/3.0.3/docs/rust-server-upgrade-takeover.md) -step by step. +New installations start on the native Server. If you already run PHP Server +2.x, stay on 2.11.8 for now. It is the final PHP release and is still +supported. + +The native image includes `upgrade-takeover`, a one-way, backup-first command +that moves an existing PHP database (layouts from 2.5.14 through 2.11.8) to the +native Server. It is tested in CI on source builds against SQLite, PostgreSQL, +MySQL and MariaDB, but it has not yet been qualified on a published image, so +we are not presenting it as a supported upgrade path today. We will announce +when the takeover runbook is marked qualified. Takeover is planned for +deprecation in the 3.1.x line, so plan to move from PHP during 3.0.x once it is +qualified. Its +[design and status](https://github.com/durable-workflow/server/blob/3.0.4/docs/rust-server-upgrade-takeover.md) +are public. ## SDK support @@ -177,11 +165,11 @@ use. These SDK releases declare support for native Server 3.x: | SDK | Release | Declares native Server 3.x support from | | --- | --- | --- | -| [PHP](/docs/polyglot/php/) (`durable-workflow/sdk`) | 3.8.1 | 3.0.0 | +| [PHP](/docs/polyglot/php/) (`durable-workflow/sdk`) | 3.8.1 or later | 3.0.0 | | [Python](/docs/polyglot/python/) (`durable-workflow`) | 2.13.0 | 3.0.0 | | [Rust](/docs/polyglot/rust/) (`durable-workflow` crate) | 4.10.3 | 3.0.2 | -Server 3.0.3 meets all three declarations. +Server 3.0.4 meets all three declarations. ## What isn't there yet From 5f4cf896661d72b42c2bd423d33af08a3b3123d3 Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Tue, 3 Nov 2026 05:05:08 -0600 Subject: [PATCH 4/5] Describe takeover as qualified within its accepted 3.0.4 scope Security cleared the takeover runbook (server#992). Existing PHP 2.x installations can move in place; the post states exactly the accepted evidence (published 3.0.4 image from PHP 2.11.8 on SQLite, MySQL 8.0 and PostgreSQL 17; source CI for MariaDB and layouts 2.8.0-2.11.8), the MySQL/MariaDB post-marker refusal boundary, and links the runbook at its merge commit. Recommend PHP SDK 3.8.2. Co-Authored-By: Claude Opus 5.5 --- .../2026-11-04-durable-workflow-server-3-0.md | 47 ++++++++++--------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/blog/2026-11-04-durable-workflow-server-3-0.md b/blog/2026-11-04-durable-workflow-server-3-0.md index d704f7ecc8b..e55919089f3 100644 --- a/blog/2026-11-04-durable-workflow-server-3-0.md +++ b/blog/2026-11-04-durable-workflow-server-3-0.md @@ -15,10 +15,8 @@ import ProductPromotion from '@site/src/components/ProductPromotion'; commands and the Compose URL. Replace every occurrence if the release number changes. - Merge docs PR #426 first. This post links to its native install guides. - - Confirm PHP SDK 3.8.1 or later is published (3.8.1 fixes activities with - heartbeat timeouts; do not recommend 3.8.0). - - Takeover is described as not yet qualified. Update that section only when - the runbook is marked qualified. + - The takeover section states exactly the scope Security accepted for 3.0.4 + (server#992). Do not widen it without new evidence. - Remove `draft: true` to publish. */} @@ -139,33 +137,40 @@ provide the tokens through Kubernetes Secrets. Running more than one replica requires a ReadWriteMany volume for external payload storage. The chart is still marked beta. An existing PHP release never switches to native on an ordinary upgrade: the chart refuses to upgrade it until you set `runtime` -explicitly. Set `runtime: php` to keep running PHP 2.11.8. See [Helm chart for Kubernetes](/docs/deployment/#helm-chart-for-kubernetes). +explicitly. Set `runtime: php` to keep running PHP 2.11.8, or take over the +database (below) before you set `runtime: native`. See [Helm chart for Kubernetes](/docs/deployment/#helm-chart-for-kubernetes). ## Moving from PHP Server 2.x -New installations start on the native Server. If you already run PHP Server -2.x, stay on 2.11.8 for now. It is the final PHP release and is still -supported. - -The native image includes `upgrade-takeover`, a one-way, backup-first command -that moves an existing PHP database (layouts from 2.5.14 through 2.11.8) to the -native Server. It is tested in CI on source builds against SQLite, PostgreSQL, -MySQL and MariaDB, but it has not yet been qualified on a published image, so -we are not presenting it as a supported upgrade path today. We will announce -when the takeover runbook is marked qualified. Takeover is planned for -deprecation in the 3.1.x line, so plan to move from PHP during 3.0.x once it is -qualified. Its -[design and status](https://github.com/durable-workflow/server/blob/3.0.4/docs/rust-server-upgrade-takeover.md) -are public. +New installations start on the native Server. Existing PHP 2.x installations +can move in place with `upgrade-takeover`, a one-way, backup-first command that +the native image runs once, while every PHP role is stopped. It checks that the +database still matches a backup you have verified. After it commits, PHP +refuses the database, and the only way back is to restore that backup. + +Security accepted takeover on the published 3.0.4 image, run against databases +written by published PHP 2.11.8 on SQLite, MySQL 8.0 and PostgreSQL 17 (all +on arm64). MariaDB, and databases created by PHP 2.8.0 through 2.11.8, are +covered by the CI test matrix built from the 3.0.4 source. Takeover refuses any +state it cannot carry over. On SQLite and PostgreSQL a refusal changes nothing. +On MySQL and MariaDB, a refusal that comes after takeover has written its +marker needs a resume or a restore; the runbook explains both. + +Rehearse on a restored copy of your backup before you take over the live +database. Takeover is planned for deprecation in the 3.1.x line, so move from +PHP while you are on 3.0.x. The +[native takeover runbook](https://github.com/durable-workflow/server/blob/a051f57fcc7e3605b301581ee9105461b3ef5815/docs/rust-server-upgrade-takeover.md) +has the commands, the full scope and every refusal. ## SDK support The native Server implements worker protocol 1.20, the version the current SDKs -use. These SDK releases declare support for native Server 3.x: +use. These SDK releases declare support for native Server 3.x. For PHP, use 3.8.2; +do not use 3.8.0. | SDK | Release | Declares native Server 3.x support from | | --- | --- | --- | -| [PHP](/docs/polyglot/php/) (`durable-workflow/sdk`) | 3.8.1 or later | 3.0.0 | +| [PHP](/docs/polyglot/php/) (`durable-workflow/sdk`) | 3.8.2 | 3.0.0 | | [Python](/docs/polyglot/python/) (`durable-workflow`) | 2.13.0 | 3.0.0 | | [Rust](/docs/polyglot/rust/) (`durable-workflow` crate) | 4.10.3 | 3.0.2 | From 132efa2e36c9d9d3919bc5084e2be9f6d4bd6044 Mon Sep 17 00:00:00 2001 From: Richard McDaniel <1130888+rmcdaniel@users.noreply.github.com> Date: Tue, 3 Nov 2026 05:17:16 -0600 Subject: [PATCH 5/5] Publish the Server 3.0 launch post Server 3.0.4, chart 1.0.2 and PHP SDK 3.8.2 are published and the native install guides (#426) are merged, so the post leaves draft and takes today's date. Co-Authored-By: Claude Opus 5.5 --- ....md => 2026-11-03-durable-workflow-server-3-0.md} | 12 ------------ 1 file changed, 12 deletions(-) rename blog/{2026-11-04-durable-workflow-server-3-0.md => 2026-11-03-durable-workflow-server-3-0.md} (95%) diff --git a/blog/2026-11-04-durable-workflow-server-3-0.md b/blog/2026-11-03-durable-workflow-server-3-0.md similarity index 95% rename from blog/2026-11-04-durable-workflow-server-3-0.md rename to blog/2026-11-03-durable-workflow-server-3-0.md index e55919089f3..deddb5f10fe 100644 --- a/blog/2026-11-04-durable-workflow-server-3-0.md +++ b/blog/2026-11-03-durable-workflow-server-3-0.md @@ -4,22 +4,10 @@ title: "Durable Workflow Server 3.0: One Native Process" description: "Server 3.x is a native (Rust) implementation of the standalone Durable Workflow Server. It runs as one container plus a database. You no longer deploy Redis, a queue worker, a scheduler or a bootstrap job." authors: [richard] tags: [server, self-hosting, rust, release] -draft: true --- import ProductPromotion from '@site/src/components/ProductPromotion'; -{/* - Release-day checklist: - - The Server version is written as the literal 3.0.4 in the prose, the - commands and the Compose URL. Replace every occurrence if the release - number changes. - - Merge docs PR #426 first. This post links to its native install guides. - - The takeover section states exactly the scope Security accepted for 3.0.4 - (server#992). Do not widen it without new evidence. - - Remove `draft: true` to publish. -*/} - Durable Workflow Server 3.0 is a native implementation of the standalone Server, written in Rust. It runs as a single process. You give it a database and a token. It creates its own schema, serves the API, and fires durable timers