Skip to content

Adopt Workflow lease recovery in Server 2.4.35 - #292

Merged
rmcdaniel merged 1 commit into
mainfrom
fix/workflow-lease-recovery-2.4.35
Oct 1, 2026
Merged

rmcdaniel merged 1 commit into
mainfrom
fix/workflow-lease-recovery-2.4.35

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

Customer outcome

Adopt published Workflow 2.3.1 at fb3f3e59a4342fdebf8ced6160798906c3ee4387 to carry the repair for durable-workflow/workflow#599 into the self-hosted Server image. A legitimately running activity must not hide an expired workflow task from the replacement worker's poll and native repair path.

The Composer graph changes one dependency only. Prepare Server 2.4.35 and Helm chart 0.1.131 through the existing source-release authority and update the chart's change description. Server routes, worker protocol defaults and capability admission are unchanged.

Qualification and release follow-through

  • Workflow's full source qualification passes MySQL/PostgreSQL feature shards, MariaDB, Laravel 9–13 embedded upgrades, quality and corpus. Both lease-state regressions pass on MySQL and PostgreSQL. Combined coverage is 88.25%, above the 87.85% accepted baseline.
  • Packagist resolves the exact 2.3.1 source/dist reference. The published package and Laravel upgrade verification passes package identity, platform/protocol resolver contracts and all 16 supported Laravel/PHP upgrade combinations. The immutable Workflow release retains scoped counterfactual evidence.
  • Local source-release synchronization, Composer validation and package authority checks pass. Normal Server feature qualification passes 2,252 tests and 47,202 assertions, with unchanged worker OpenAPI version 23. Chart validation/install, MySQL HTTP topology, both database rolling upgrades, bounded polling qualification and both boundary checks pass.
  • After source qualification, publish the exact Server images and chart and verify their installed package/provenance/readiness. Run the existing published PHP/Python/Rust lifecycle matrix with PHP 2.1.6, Python 2.3.7, Rust 2.1.2, CLI 2.1.3, Waterline 2.0.9 and Workflow 2.3.1, plus the focused expired-workflow/active-activity recovery reproduction using the published image.
  • Update Sample App's locked native package and Server tuple after image verification. Waterline's Workflow pin is development-only and its runtime embedded mode accepts the installed engine. Unchanged SDKs do not require alignment releases. Keep native issue #599 open through the affected consumer outcome.

The cooperative candidate Server PR #291 and Python PR #90 will be requalified with this corrected package. Their protocol 1.20 activation remains governed by durable-workflow/.github#136. Cloud adoption and managed-plan qualification remain in their private owning record.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Reviewed exact head e27db3096ca59a25b5a5fce88757d5ca31fb2daf against main d9b1a5610b8a53d6a2ed7fe6c97c38e6f7283348.

Only Workflow changes in the dependency graph, to published 2.3.1 at fb3f3e59a4342fdebf8ced6160798906c3ee4387. The other changes are the existing generator's Server 2.4.35 / chart 0.1.131 release consumers and the chart change description. No route, authorization, capability admission, wire schema or default protocol changes.

All normal source gates pass, including 2,252 feature cases / 47,202 assertions, corpus and package authority, chart install, MySQL HTTP topology, both database predecessor/successor checks and the final polling cache smoke. Workflow's source matrix and all 16 published Laravel/PHP upgrade combinations pass. Existing published Server 2.4.34 and PHP SDK 2.1.6 independently reproduce the defect with an ordinary signal and real lease expiry.

Merge the qualified tree and publish the immutable images/chart through the protected release workflow. Verify installed engine identity and image provenance/readiness, run the unchanged focused recovery probe and the exact published PHP/Python/Rust lifecycle tuple, then adopt that verified tuple in Sample App. Keep Workflow #599 open until this outcome is complete. Shared #136 candidate qualification and activation are separate and retain their existing gates. Delete this merged head branch when the tree is retained on main.

@rmcdaniel
rmcdaniel marked this pull request as ready for review October 1, 2026 07:44
@rmcdaniel
rmcdaniel merged commit d0692b1 into main Oct 1, 2026
14 checks passed
@rmcdaniel
rmcdaniel deleted the fix/workflow-lease-recovery-2.4.35 branch October 1, 2026 07:44
@rmcdaniel

Copy link
Copy Markdown
Member Author

Merged the exact qualified Server tree at d0692b171a0cabe6eefdc8bfc0f82d249e16128d, verified the remote PR branch is deleted and pushed immutable tag 2.4.35. Its protected release workflow owns AMD64/ARM64 image and Helm chart 0.1.131 publication and readiness checks. All normal source gates passed.

The clean source worktree is removed. The completed published baseline test stack and network are absent. Next verify the release's exact image digest/package identity, run the focused real-expiry recovery probe and the published PHP/Python/Rust lifecycle tuple, then update Sample App's locked engine and qualified artifact tuple. Keep Workflow #599 open through that outcome.

The cooperative candidate is independently updated at c32434cc784a1bf870dcf19568bef944a320f6a7, with the full Python candidate run 36831983386 active at unchanged Python 88f0e31bf1736271deaabcc67d74df9ce98df491. Protocol defaults remain 1.19 and shared #136 activation gates are unchanged.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Published native recovery delivery verified

Server 2.4.35 is published from d0692b171a0cabe6eefdc8bfc0f82d249e16128d, with Docker Hub and GHCR index sha256:49560f7f861271931125348a9d01638cd722e13ee976b5b732ef122548f15dab. Protected publication passes AMD64/ARM64 image identity, first readiness, source-free Compose, protocol convergence and Helm 0.1.131 anonymous pull/install. The actual installed image contains Workflow 2.3.1 at upstream fb3f3e59a4342fdebf8ced6160798906c3ee4387 and the corrected projector bytes. All three provenance copies match. Default protocol remains 1.19.

The identical ordinary-protocol published PHP probe fails on untouched Server 2.4.34 and passes on 2.4.35. After natural workflow lease expiry, a replacement reclaims the same workflow task at the next attempt while the older active activity remains unchanged. Stale workflow completion is rejected, the original activity owner completes successfully, and history has exactly one activity completion and one workflow completion. No database lease edits or installed-code patches are used.

Published lifecycle run 36832820422 passes all 12 cells against Workflow 2.3.1, Server 2.4.35, PHP SDK 2.1.6, Python SDK 2.3.7, Rust SDK 2.1.2, CLI 2.1.3 and Waterline 2.0.9. There are no blocked or unproven cells.

The release permanently retains publication/chart evidence, the installed-image assertion probe, before/after raw recovery JSON, the identical PHP reproducer, full lifecycle evidence, a report with the frozen tuple and commands, and SHA256SUMS. Every downloaded release asset matches its upload hash. Completed local test stacks, anonymous volumes, images, SDK dependencies and merged native/stable Server branches are removed.

Sample App adoption remains in PR #129 through its exact-head gates and any devcontainer publication. The new cooperative protocol is still a separate draft qualification under shared #136.

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants