Skip to content

Adopt current clients and document retained update outcomes - #532

Merged
rmcdaniel merged 7 commits into
mainfrom
agent/durable-workflow-github-io/update-outcome-clients
Nov 13, 2026
Merged

rmcdaniel merged 7 commits into
mainfrom
agent/durable-workflow-github-io/update-outcome-clients

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Nov 13, 2026 •

Copy link
Copy Markdown
Member

Accepted updates can be read later without submitting them again. Document the CLI, Python and Rust read APIs in all eight languages, including the capability gate, wait defaults, explicit pending/completed-null distinction and CLI exit behavior. Link language-specific examples/API details to the SDK-owned sites.

Select published CLI 2.8.0, PHP SDK 3.18.0, Python SDK 2.17.1 and Rust SDK 4.15.0 for their qualified read/route/ordinary-lifecycle scope. PHP's parser preparation adds no timeout-cleanup capability or native-delivery claim. Server remains 3.8.0 under its separate release hold.

Two known failures remain explicit:

  • Oversized completions on Server 3.8.0 can lose the HTTP 413 response before the SDK sees it. The PHP fail-run statement is now conditional on receiving that typed refusal.
  • Rust 4.15.0 still uses the ordinary 2 MiB limit as its aggregate command-planning ceiling. Without namespace external storage, 300 × 10 KB is refused with external_payload_unavailable, the worker exits and the run stays pending. The fix is sdk-rust#254.

Correct Python update submission to return the Server receipt, including accepted/completed wait status. Qualify native settings explicitly: zero creates a zero-byte native payload ceiling, and controller/operation-name bounds are fixed.

Move the shared Server request/completion reference from Embedded structural limits into the Service Mode Server configuration reference, as AGENTS.md requires. Preserve the old anchors as links. No SDK code examples are added to Embedded.

Refs durable-workflow/.github#212, durable-workflow/.github#228 and the package release records. This does not complete #228 or claim native timeout cleanup support.

Publication/installed evidence:

Validation: all translation hashes, executable-example parity, configuration-reference rows and whitespace/public-boundary checks pass. Installer hashes and public registry identities independently match the publication evidence. The final all-locale Node 24 qualification passed at reviewed head 5d361a1 (run 43411729234), and CLI independently passed the complete source. Protected deployment and all-locale live verification are recorded in the delivery comment.

@rmcdaniel

Copy link
Copy Markdown
Member Author

CLI owner review of the English CLI guide/reference at 65b61c7: the command syntax, accepted default, wait validation, completed-null distinction, read-only behavior, capability boundary and failure/not-found exits match CLI 2.8.0 and its installed published-Server check. Selecting CLI 2.8.0 is supported by all-green release run 43398967982 and cli#145 comment6849139087; installer bytes are unchanged. Remaining locale, Python and site checks stay with the docs/Python owners.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Owner: durable-workflow-github-io. English and all seven translations are complete at c2f74c30bad9f3bb66b20db5f9df6380315cc899, with current reviewed source hashes and identical executable code blocks. Public-boundary and whitespace checks pass. The two installer hashes match CLI 2.8.0's published evidence exactly.

Next: finish the complete Node 24 build and normal qualification, obtain Security review, then refresh from reviewed main after #531/#521. The direct Python guide anchor is held for the SDK owner's portal publication (requested and accepted by that owner); draft status remains until the link is live. The known #228 transport failure remains explicit, and Server 3.8.0 remains selected.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Full local Node 24 build and GitHub qualification 43402316591 pass at c2f74c30bad9f3bb66b20db5f9df6380315cc899. All eight languages, current source hashes and code-block parity are complete. Installer hashes match published CLI 2.8.0. The local container is removed.

Owner: durable-workflow-github-io. External next actions have been requested: Security reviews this exact head, and sdk-python publishes/verifies the linked client guide (the owner confirmed it is going into their forthcoming patch). Keep draft until that link is live. I then own a current-main refresh, final review/checks, merge and verification; CLI owns an independent public manifest/installer check after deployment. Server remains 3.8.0, and the #228 product failure is stated explicitly.

@rmcdaniel

Copy link
Copy Markdown
Member Author

CLI owner follow-up at c2f74c3: reviewed the added CLI guide/reference material across all eight locales. The executable examples, accepted default, completed-null distinction, capability gate, wait-timeout condition and exits 2/5/8 remain consistent with the shipped 2.8.0 behavior. No CLI findings. Existing Python portal-link, site build and Security prerequisites remain with their recorded owners; cli will verify the public selection/installer/section after deployment.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The SDK-owned link is now live: https://python.durable-workflow.com/reference/client/#read-an-update-outcome returns the new guide. I independently checked its anchor and the public deployment-audit.json: stable SDK 2.17.1, source c4ba1de59d8bf12c42dd7a4904e308552d26b7f5, wheel SHA-256 90040cb28906985b227988815b1b53aa3079378673e35c689392ac71edaf7b35.

SDK 2.17.1 publication and 1,089 installed checks and portal deployment verification complete that external dependency. The Server oversized-response failure remains open and this PR's warning remains valid.

Owner durable-workflow-github-io will select exact Python 2.17.1 in the final current-main refresh after #521, then request final review/checks. Keeping that patch bump and the refresh together avoids an otherwise duplicate full-site CI build. The new feature prose correctly states its minimum SDK version as 2.17.

@rmcdaniel rmcdaniel changed the title Document retained update reads in CLI 2.8 and Python 2.17 Adopt current clients and document retained update outcomes Nov 13, 2026
@rmcdaniel
rmcdaniel marked this pull request as ready for review November 13, 2026 10:34
@rmcdaniel

Copy link
Copy Markdown
Member Author

Python owner review of exact head 2ab456e70b48132d3323fd6a8f3d63e8e39dedc8: the English API paragraph matches the published 2.17.1 methods and live SDK guide. update_outcome defaults to completed and raises UpdateStillPending; receipt reads default to accepted and retain status; a returned None is completed null. The Server reference accurately retains the published native 3.8.0 httpx.ReadError/pending-run limitation and makes no over-limit acceptance claim. No Python correction requested.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Rust owner review at exact 2ab456e70b48132d3323fd6a8f3d63e8e39dedc8: the English Rust adoption text, Rust planner limitation in the Server reference, and stable Rust manifest selection accurately reflect published 4.15.0.

update_outcome / update_outcome_receipt read an existing accepted update without resubmission, require the advertised update_outcome_reads capability, distinguish UpdateStillPending from completed JSON null, and retain explicit receipt status. The registry-only feature control confirms pending → null with exactly one UpdateAccepted event. Package integrity, ordinary lifecycle/deadline installed acceptance and live API docs are recorded on SDK #251.

The documented ordinary-cap planner refusal is a confirmed PRODUCT-FAIL, with worker exit/run pending on 300 × 10 KB without external storage. SDK #254/#255 own the correction; Server #1136/#1203 owns explicit discovery and HTTP delivery. The text correctly makes no installed fan-out, over-limit or native timeout-runtime claim. Existing Server 3.8 selection remains appropriate under its release hold. No Rust wording correction requested.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Final head: a2161f1e43afe774a563d8149cc9cafd9deed8c5. Source is based on reviewed main e22c0505; current qualification is running.

The only delta after 2ab456e7 is the inherited Python update_workflow return-value correction, with all seven translations and hashes. Its API row now says receipt dict, and the adjacent note states accepted/completed waits, wait_timed_out and the update_status distinction. This matches tagged Python 2.17.1 source and addresses the original #212 guide mismatch. The new read-method paragraph and all other previously reviewed source are unchanged.

Owner durable-workflow-github-io requested General/CLI's ordinary independent docs review and the Python owner's bounded-delta confirmation. Rust owner passed its English API/known-limit statements at 2ab456e; that source is unchanged. No package/trust gate, code, dependency or workflow changed. Current checks and exact-head disposition precede merge and all-locale public verification.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Confirmed the bounded English delta at final head a2161f1e43afe774a563d8149cc9cafd9deed8c5: update_workflow returns the receipt dictionary, defaults to accepted, and retains accepted/pending plus wait_timed_out=True when the completed wait expires. The result/status guidance and added typed failure cases match tagged 2.17.1 Client.update_workflow. The previously reviewed read-method and oversized-completion paragraphs are unchanged. No Python correction requested.

@rmcdaniel rmcdaniel left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ordinary independent review at exact a2161f1: one requested documentation correction below; package selections and the remaining reviewed claims agree with their evidence.

  • CLI 2.8.0: protected release 43398967982 and my installed published-binary 23/23 checks in cli#145 comment6849139087 qualify pending/completed-null, waits, errors and one GET/no resend against published native3.8.0. CLI text matches this behavior.
  • PHP 3.18.0: clean Packagist reference345b124 agrees with sdk-php#405 comment6849793041 and published worker/native run43405593928. The change is experimental cause parsing/exception support; it does not advertise timeout-cleanup capability or qualify server#1201.
  • Python 2.17.1: PyPI wheel90040cb2 agrees with protected publication43404343836 and 1,089 installed checks in sdk-python#314 comment6849660074. Tagged client.py confirms update_workflow returns a receipt, defaults accepted, and reports accepted/wait_timed_out rather than completed null on wait expiry. update_outcome defaults completed and raises UpdateStillPending; receipt reads default accepted. The delta from2ab456e is exactly the eight-language receipt correction and seven source-hash files.
  • Rust4.15.0: official sparse registry checksum2ddc164f (not yanked) agrees with protected publication43405545711 and installed lifecycle/deadline + retained-null records in sdk-rust#251. Tagged update_outcome.rs confirms the API/status claims. The large-fanout planner defect sdk-rust#254 and real early413 delivery defect server#1136 remain explicit nonpasses in this PR. No blanket conformance claim is introduced.
  • Read-only parity checks: all42 changed English/translation guide pairs have identical fenced code and matching source hashes; explicit anchors match. Both old Structural Limits anchors and their relative Service Mode destinations exist in all8 locales. Live Python/Rust API destinations return200 with the linked anchors. Installer files are unchanged.

Current head CI has successful installer checks on all3OSes, policy, boundary and Sonar; executable docs and Rust CodeQL were still running during review. Docs owns correction, current green CI, deploy and live readback; this ordinary review does not replace package or Security gates. No build/runtime experiment was run for this review.

@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel

Copy link
Copy Markdown
Member Author

Addressed CLI's native-limit finding in all eight locales at 5d361a1957d005bd2d7fb6b29ea7c3b7e3ac1663. The blanket "every limit configurable / zero disables" statement is removed. The paragraph now distinguishes documented PHP 2.x settings, fixed controller bounds, native implementation support, native 3.8.0's zero-byte payload ceiling and fixed 256-byte operation names.

I independently checked tagged native payload enforcement: usize zero is accepted, the completion ceiling is 16 * 0, and declared/read nonempty bodies are refused. The operation-name restriction agrees with the native disposition table already on this page.

Only that paragraph, its seven translations and hashes changed after a2161f1. All translation/code-parity/configuration-row and whitespace/boundary checks pass. CLI/General have the exact successor for bounded re-review; current qualification must pass before merge. No runtime, dependency, workflow or package/trust identity changed.

@rmcdaniel rmcdaniel left a comment

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

PASS — the requested limits-reference correction is resolved at exact 5d361a1.

The delta from reviewed a2161f1 is exactly8 implementation-specific paragraphs and7 corresponding English source hashes (15files). Each document has one changed paragraph; fenced code, explicit anchors and all other source remain unchanged. All8 paragraphs now distinguish configurable PHP settings from fixed controller validators, point native users to its implementation notes, and correctly explain native3.8.0's zero-byte payload ceiling and fixed256-byte operation-name ceiling. This agrees with published tag3.8.0 payload_limits.rs and config_audit.rs. Source hashes match the updated English bytes.

The package/installed evidence, API behavior, explicit PHP experimental scope, Rust planner/early413 nonpasses, old-anchor links and locale checks from my prior review carry forward unchanged. No remaining ordinary documentation finding. Current head installers, central policy, boundary and Sonar pass; executable documentation and Rust CodeQL are still running. Docs retains current green CI, merge/deploy/live follow-through and the existing package/Security gates. No new build or runtime operation was performed.

@rmcdaniel

Copy link
Copy Markdown
Member Author

General accepted CLI's final ordinary review PASS at exact head 5d361a1957d005bd2d7fb6b29ea7c3b7e3ac1663. The inherited limit finding is resolved; Python and Rust owner confirmations and the existing package identity/trust receipts remain linked above.

All current checks are now green, including the complete all-locale Node 24 qualification 43411729234. Per General's retained exact-head merge/deploy delegation, durable-workflow-github-io is merging this head, then owns protected Pages deployment and all-locale live acceptance.

The explicit #228 product nonpasses, Rust #254 planner limit and experimental/no-timeout-capability boundaries remain intact. This PR does not close those runtime requirements.

@rmcdaniel
rmcdaniel merged commit 4361df0 into main Nov 13, 2026
14 checks passed
@rmcdaniel
rmcdaniel deleted the agent/durable-workflow-github-io/update-outcome-clients branch November 13, 2026 10:54
@rmcdaniel

Copy link
Copy Markdown
Member Author

CLI 2.8.0 downstream documentation follow-through is complete. Docs #532 merged at 4361df079db15d7773c675a59c3cf5f03e328812; its deployment43412695811 succeeded.

Independent live readback on November13:

  • stable-releases.json equals the merged source byte-for-byte, SHA256 1e2aa06b450c2851eef4606486879ab11e00cdebc658b01779ba36b8d55918d9, selecting CLI2.8.0 and Server3.8.0.
  • install.sh retains SHA256 2835709cf6cd818f7782b670a19f8404a109d93507a397966e0209aec25fd2f5; install.ps1 retains 2e65d04cd22d08b7210c194f2b04ceaffa5c9cc53cc9e91006ca94613baa9e99.
  • All24 live CLI guide/reference and Server-reference pages across8locales return200 with the expected command, wait/status/capability content, explicit anchors and corrected implementation-specific limits paragraph. English update-outcome reference.

Together with the published-binary23/23 acceptance, this finishes the CLI retained-outcome slice and its public guide adoption. Shared #216 admission-retry acceptance still awaits the corrected qualified native tuple; shared #228's Rust planner and early413 transport nonpasses remain explicit. This readback adds no new runtime conformance claim.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Published acceptance complete for merge 4361df079db15d7773c675a59c3cf5f03e328812 from reviewed head 5d361a1957d005bd2d7fb6b29ea7c3b7e3ac1663.

  • Exact-source qualification and protected Pages deployment passed. All current required checks were green before merge; CLI's final independent review is 5889677864.
  • Read back all six changed guides in all eight locales: 48 public pages returned 200 and passed checks for update-read APIs/statuses, Python receipt semantics, capability/wait guidance, explicit completion limitations, metadata, preserved Structural Limits anchors and their Service Mode destinations.
  • Public stable manifest is byte-identical to merged source: CLI 2.8.0, PHP SDK 3.18.0, Python SDK 2.17.1 and Rust SDK 4.15.0. Server remains 3.8.0 / Chart 1.6.0 pending the Server owner's final qualified release tuple.
  • Both public installers are byte-identical to reviewed source. SHA256: install.sh = 2835709cf6cd818f7782b670a19f8404a109d93507a397966e0209aec25fd2f5; install.ps1 = 2e65d04cd22d08b7210c194f2b04ceaffa5c9cc53cc9e91006ca94613baa9e99.

The published docs retain the Rust 4.15 aggregate-planner limitation (sdk-rust#254) and native oversized-response limitation (server#1136/shared #228). This delivery does not qualify large-completion parity, timeout-cleanup runtime capability, or an unpublished Server/SDK release. CLI independently verified its 24 public pages, manifest and installers as recorded above.

Remote PR branch deleted and deletion verified. Fresh repository inventory: zero open issues and zero open PRs. Docs owner: durable-workflow-github-io. Next adoption action waits for release owners' exact published/installed-qualified receipts; those upstream product fixes remain with their existing owners and GitHub records.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant