Repository navigation
Expose activity retry context and pin originating-run signals - #221
Conversation
|
Initial draft head The twenty focused metadata/copy/pickle/legacy controls and activity-module typing pass locally. Next: diagnose the exact integration job, add ordinary/supervised/local worker-path regressions and finish the remaining draft checklist. No check, assertion or qualification requirement has been weakened. |
… integration cases
|
Cloud's current feature head is Six additional worker-path cases pass: ordinary and supervised remote callbacks receive the original bounded or legacy retry snapshot, and inline/prepared callbacks receive only the parent's original workflow/run identity without inheriting its remote retry policy. The full source/test Ruff check passes. A controlled old-worker overlay with the new data classes produces four assertion failures in the bounded remote and local identity cases, demonstrating that these tests exercise the wiring. Current CI 40449523707 has one connected-integration failure (67 pass, 49 skip): |
|
Current draft head: The preceding head's version preparation updated Current hosted CI 40454996762 passes Python 3.10, 3.11 and 3.12, package, lint, regression corpus and action policy. Docs, public-boundary, Sonar and CodeQL checks pass. Integration completed with exactly one failing case, the existing externalized local-activity cold-replay reproduction of Server #804. Target qualification remains failed. Its assertion and gate remain intact. The accepted Server fix is now draft PR #806 at d10b138d8, with source/image qualification owned by the Server maintainer. Local candidate qualification also passes:
Candidate wheel SHA256: The 49 focused context/signal cases, worker-path controls, old-source counterfactuals and executed canonical helper remain as recorded. Next: finish normal CI/review, exercise the candidate and then normal published artifacts against the published Server across ordinary, supervised, inline/prepared and session callbacks, publish the ordinary minor release and finish all eight main-guide locales. No release or installed-Server completion is claimed yet. |
|
Installed-candidate qualification passes for Python PR221 head The wheel ( Eight workflows / fourteen callbacks pass:
Every callback preserves the original public workflow/run IDs and the received policy; copy mutation does not alter the snapshot, and frozen attempt assignment is rejected. Session affinity makes the Server supply an explicit one-attempt default; the SDK preserves it. Local callbacks retain parent identity without inventing a received remote policy, even when local authoring configures a budget. Supervised/prepared callbacks execute in separate processes. The exact canonical Four installed-package component cases separately pass for omitted, legacy root-null, explicit object-null unlimited (including unknown fields), and bounded snapshots, including pickle round trips. Newly authored This is an unpublished SDK candidate on a published Server, not PyPI or final published-SDK acceptance. Normal CI still has the unchanged Server804 cold-replay failure pending Server806 merge and rerun. After merge/release, repeat normal PyPI installation and these affected callback paths, verify the portal and finish all eight current Python main-guide locales. Additional qualification: a standalone activity also passes original-identity comparison against its independently captured delivery. This Server supplies associated workflow/run IDs and a one-attempt snapshot for that activity; the SDK preserves them. Missing identities remain nullable and are handled explicitly, rather than assuming that every standalone delivery omits them. Five critical installed module files byte-match the wheel and qualified SDK source. The final release-notes commit changes only CHANGELOG; runtime code remains identical to105. Its normal CI is running before merge/publication. |
|
|
Security release-provenance receipt (2026-10-27 UTC):
Release provenance and package integrity are Security-accepted. This does not substitute for the still-pending post-fix Server image acceptance tracked in durable-workflow/server#804. |
|
Python 2.12.0 is published and its normal installed-package acceptance passes.
The runtime checks completed October 27, 2026, approximately 07:21–07:24 UTC. The separately recorded empty-exception-message defect SDK #222 remains a baseline follow-up, and Server #804 still needs acceptance of its eventual published fix image. Neither outcome is represented as fixed by this SDK release. |



Activities can inspect their original retry budget and originating workflow/run without passing duplicate arguments through workflow code. Add immutable
ActivityInfo.retry_info, nullable originalworkflow_id/run_id, and exportedActivityRetryInfo, preserving the six-argument constructor and supervised callback serialization.Received snapshots preserve unknown fields and distinguish omitted policy, legacy root-null policy and explicit object-level unlimited policy. Ordinary and supervised callbacks use the original claim; inline/prepared callbacks inherit only known parent identities and no remote retry policy. Last-attempt checks describe the configured budget; cancellation, deadlines and non-retryable failures can still end execution earlier.
Forward the run ID previously discarded by
WorkflowHandle.signal, expose the optional pin on direct async/sync signal calls, and reject invalid pins before HTTP. The canonical guide uses a stable business-event key and describes the current Server signal-retention limitation. No Server wire or retry-admission change.Validation: 49 selected context/command/signal cases and six worker-path controls pass. Old wiring fails four worker controls; the old client fails the actual pinned HTTP-route assertion. All 18 checks on signed merge
14dc458d71f42f915de748e708beb159384160d7pass, including connected integration and target qualification. Python 2.12.0 is published normally. Fresh PyPI installation and published PHP Server 2.11.4 acceptance pass: eight workflows, fourteen callbacks, five execution modes, legacy/unlimited metadata controls, standalone wire identity and fourteen original-run signals. The canonical portal is verified live; all eight current main-guide locales follow in Website #410.Refs durable-workflow/.github#250. Signal receipt retention remains separate in durable-workflow/.github#216; the baseline empty-exception reporting defect is SDK #222.