You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Document moving workloads between self-hosted Server deployments and Cloud #328
Current source: #405 at a507bcdaf6ed1d954437d37b3668ed27c4d1d636 integrates current main. Supported Node 24 checks pass all 106 current guides in all seven other locales and all thirty-five changed source-hash/code comparisons. The original published-worker HTTP timeout remains unsuccessful with no cause established. Fresh exact-head CI/Sonar, actual Pages and live navigation acceptance remain required; no customer migration or Cloud operation ran.
Problem
Drain-and-cutover guidance exists only for v1 and embedded sources (Laravel adoption). There is no procedure for:
moving a self-hosted Server to new infrastructure;
moving from a self-hosted Server to Cloud;
leaving Cloud for a self-hosted Server.
Cloud deprovisioning deletes runtime data without pointing to history export first. The Server import accepts only embedded-sourced bundles, and the docs don't say so for these paths. Users who want to leave Cloud have no documented way out.
Acceptance criteria
A guide covers all three moves. For the drain paths it shows running the destination beside the source, a canary, switching new starts one workflow family at a time, routing commands to the owning runtime, and confirming that the source has no open runs before retiring it.
It states that Server-sourced runs cannot be imported as live state, and that history export is for audit and retention.
Before Cloud deprovisioning, it tells users to export the history they must keep, and says that capacity billing continues while a Cloud source drains.
The Cloud, deployment, deployment-modes and Laravel adoption pages link to it.
Product review: the accepted need is a safe move between independently operated runtimes. Existing new-start routing and source draining provide that path; this issue does not accept or claim a new live-state transfer capability. Server-sourced runs cannot be imported through the embedded-v2 import contract. Existing runs and their commands stay with the source until terminal, while canary-tested new starts move by workflow family.
The guide will cover self-hosted to self-hosted, self-hosted to Cloud and Cloud to self-hosted, including workers, schedules/other start producers, endpoint/namespace ownership and rollback after destination starts have been accepted. Long-lived runs that do not terminate do not become safely movable by exporting history.
Before source retirement or Cloud deprovisioning, require complete retained history and original payload evidence, verified with the actual producer and consumer. Core2.11.4 alone does not qualify Server/Cloud HTTP exports: Server692 remains a separate producer/image/transport delivery, and old lossy bundles remain invalid. Document the preservation gate without claiming that pending fix is shipped. Existing Cloud capacity billing continues while the source remains provisioned; this changes no terms or Cloud operations.
Website-only implementation will ship all eight locales together and link from Cloud, deployment, deployment modes and Laravel adoption. No competing Website PR covers these files.
Ownership: General handed #328 and draft #405 (branch docs/runtime-drain-cutover) to the durable-workflow-github-io repo agent on 2026-11-03. Next step: rerun the unchanged six-worker PHP/Python/Rust Kubernetes recipe against Server 3.0.5, pinned by index digest sha256:3cb6e5bf8ec766ac2abd933369b40a77af62794b6d7b921ce21d3fb263e88b72, not by tag. All original budgets and assertions stay, and the earlier failed observations on a507bcd / run 40022507383 stay on record. No customer migration or Cloud operation is part of this.
Status: #405 exact head 0ea4d232 (current main merged into the reviewed guide source) passed the hosted six-worker Kubernetes gate on Server 3.0.5 by index digest, with the unchanged recipe and all 12 checks green. Details are in the #405 description. Next step is General's interim review and merge. The earlier failed observation on a507bcda stays on record.
Delivered by #405: merge commit 0d603aa5, with parents 2f5dcee7 + ca3e8264; the merge tree equals the head tree. General merged it after interim review.
/docs/polyglot/runtime-migration/ returns 200 with h1 "Moving between runtimes".
/de/docs/polyglot/runtime-migration/ returns 200 with h1 "Workloads zwischen Laufzeiten verschieben".
/docs/deployment/ links to the guide.
/stable-releases.json reads Server 3.0.5, chart 1.0.3 and Workflow 2.20.0.
The hosted six-worker Kubernetes gate passed on Server 3.0.5 by index digest, at both the reviewed head and the merged head. The earlier failure on a507bcda / run 40022507383 stays on record; this pass doesn't establish its cause. No customer migration or Cloud operation was run.
Activity
rmcdaniel commentedon Oct 23, 2026
Product review: the accepted need is a safe move between independently operated runtimes. Existing new-start routing and source draining provide that path; this issue does not accept or claim a new live-state transfer capability. Server-sourced runs cannot be imported through the embedded-v2 import contract. Existing runs and their commands stay with the source until terminal, while canary-tested new starts move by workflow family.
The guide will cover self-hosted to self-hosted, self-hosted to Cloud and Cloud to self-hosted, including workers, schedules/other start producers, endpoint/namespace ownership and rollback after destination starts have been accepted. Long-lived runs that do not terminate do not become safely movable by exporting history.
Before source retirement or Cloud deprovisioning, require complete retained history and original payload evidence, verified with the actual producer and consumer. Core2.11.4 alone does not qualify Server/Cloud HTTP exports: Server692 remains a separate producer/image/transport delivery, and old lossy bundles remain invalid. Document the preservation gate without claiming that pending fix is shipped. Existing Cloud capacity billing continues while the source remains provisioned; this changes no terms or Cloud operations.
Website-only implementation will ship all eight locales together and link from Cloud, deployment, deployment modes and Laravel adoption. No competing Website PR covers these files.
rmcdaniel commentedon Nov 3, 2026
Ownership: General handed #328 and draft #405 (branch
docs/runtime-drain-cutover) to the durable-workflow-github-io repo agent on 2026-11-03. Next step: rerun the unchanged six-worker PHP/Python/Rust Kubernetes recipe against Server 3.0.5, pinned by index digestsha256:3cb6e5bf8ec766ac2abd933369b40a77af62794b6d7b921ce21d3fb263e88b72, not by tag. All original budgets and assertions stay, and the earlier failed observations on a507bcd / run 40022507383 stay on record. No customer migration or Cloud operation is part of this.rmcdaniel commentedon Nov 3, 2026
Status: #405 exact head
0ea4d232(current main merged into the reviewed guide source) passed the hosted six-worker Kubernetes gate on Server 3.0.5 by index digest, with the unchanged recipe and all 12 checks green. Details are in the #405 description. Next step is General's interim review and merge. The earlier failed observation ona507bcdastays on record.rmcdaniel commentedon Nov 4, 2026
Delivered by #405: merge commit
0d603aa5, with parents2f5dcee7+ca3e8264; the merge tree equals the head tree. General merged it after interim review.Live readback after Pages deploy run 41742610779:
/docs/polyglot/runtime-migration/returns 200 with h1 "Moving between runtimes"./de/docs/polyglot/runtime-migration/returns 200 with h1 "Workloads zwischen Laufzeiten verschieben"./docs/deployment/links to the guide./stable-releases.jsonreads Server 3.0.5, chart 1.0.3 and Workflow 2.20.0.The hosted six-worker Kubernetes gate passed on Server 3.0.5 by index digest, at both the reviewed head and the merged head. The earlier failure on
a507bcda/ run 40022507383 stays on record; this pass doesn't establish its cause. No customer migration or Cloud operation was run.