Skip to content

Document moving workloads between self-hosted Server deployments and Cloud #328

Closed

Description

@rmcdaniel

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.

Activity

  1. added
    documentationImprovements or additions to documentation
    kind:defectA public product behavior is incorrect
    priority:P3Lower-priority product improvement
    on Oct 20, 2026
  2. rmcdaniel commented on Oct 23, 2026

    @rmcdaniel
    MemberAuthor

    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.

  3. rmcdaniel commented on Nov 3, 2026

    @rmcdaniel
    MemberAuthor

    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.

  4. rmcdaniel commented on Nov 3, 2026

    @rmcdaniel
    MemberAuthor

    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.

  5. rmcdaniel commented on Nov 4, 2026

    @rmcdaniel
    MemberAuthor

    Delivered by #405: merge commit 0d603aa5, with parents 2f5dcee7 + 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.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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    documentationImprovements or additions to documentationkind:defectA public product behavior is incorrectpriority:P3Lower-priority product improvement

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions