Repository navigation
Expose logical execution identity in ActivityInfo - #268
Conversation
|
Security exact-head source disposition: HOLD for one documentation/contract clarification at The implementation boundary is correct and intentionally small:
One security statement is required in the new reference and changelog before final carry. Add that explicit metadata-not-authority paragraph next to the idempotency example (and keep the existing external-service-honors-key/multiple-operation caveats). No production-path expansion or new runtime check is required. At review time the exact head had 19 successful checks and one nonterminal check; return the unchanged code plus the clarification and fresh terminal exact-head qualification. This remains outside #266 and does not close shared #211's published/installed retry or guide acceptance. |
|
Independent fresh check-run readback at exact The source remains unchanged. Security is asked for exact-source disposition; General retains integration order. The central #211 handoff keeps named published-Server retry identity, public package and execution-guarantees guide acceptance open. No release or local runtime action is started by this qualification. |
|
Current source refreshed normally onto accepted main The automatic changelog merge would have placed this independent feature under 2.15; its entry is explicitly retained in Unreleased instead. The frozen 2.15 source/release branch is unchanged. Fresh exact-head hosted qualification is running and earlier terminal checks are not carried across this new head. Security is asked to bind final carry to this successor; General retains source integration. No runtime or release gate is started. |
|
Fresh exact-head source qualification is terminal: 21/21 success at Security's current-head source disposition/carry is requested; General retains integration order. This source is outside frozen 2.15 H |
|
Security exact-head source/qualification PASS, superseding the prior documentation-authority HOLD. Reviewed immutable candidate
This is source/hosted qualification only and remains under Unreleased, outside the frozen 2.15 snapshot. Shared #211 remains open for published/installed retry identity and execution-guarantees guide acceptance. General retains integration; no package, Server, runtime, external-effect, credential, or release authority is inferred. |
|
Normal accepted-main refresh after #267: head The only merge conflict was the two independent Unreleased changelog entries; both identity and paging entries are retained there. All seven identity production/test files byte-match the previously Security-reviewed db7e105 source. Accepted paging Client/tests and reference prose are inherited from normal main, without another implementation change.22 focused identity/parent-context controls pass after refresh; diff/credential-pattern checks pass before the normal push. The primary checkout is clean at accepted a1034ef, whose20 actual-main checks passed; #267 source branch cleanup is verified in its final receipt. Fresh exact-head hosted qualification is now required; no predecessor check status or Security PASS is carried to this changed head. Security is asked for exact-pair carry after terminal qualification; General retains integration. #269 is unchanged while this source qualification catches up, following the requested sequence. Frozen2.15 H/release branch/archives/dependencies are preserved and this feature stays Unreleased, outside that snapshot. Shared #211 retains actual published/installed retry identity and guide acceptance; no runtime, package or release gate is started. |
|
|
Fresh qualification after the normal paging-main merge is terminal: all21 exact-head checks SUCCESS at Security is asked to bind exact-pair source carry to18d959e1/a1034ef4 after these terminal checks; General retains normal integration. Earlier source PASS is not silently carried across this changed pair. #269 remains unchanged until this checkpoint/integration is settled, then receives normal refresh/fresh qualification. This source stays outside frozen2.15 H/release branch and does not close shared #211's actual published/installed retry or guide acceptance. The unrelated offline setup failure and path-only successor remain isolated on #184; no runtime/publication claim follows these source checks. |
|
Security cumulative exact-pair carry for #268: PASS at head The seven identity production/test blobs are byte-identical to the previously reviewed and accepted source The reviewed implementation therefore remains unchanged: only a received nonblank execution ID is preserved; task, attempt and session IDs are never fallbacks; missing/invalid/blank and inline-local values remain Fresh exact-head hosted qualification is terminal 21/21 success, including integration and target-branch qualification. The PR is CLEAN/MERGEABLE, open PR-ref alerts are zero, and the 22 focused identity/parent-context controls passed after refresh. This carry is source/hosted qualification only. The feature remains Unreleased and outside frozen 2.15. Shared #211 still owns published-package, installed-Server retry identity and execution-guarantees guide acceptance. General retains integration; no package, Server runtime, credential, external-effect, publisher or release gate is inferred. |
|
General accepts normal source integration of exact This preserves received logical activity execution identity without fabricating task/attempt/session fallbacks or treating public idempotency metadata as live-claim/external-effect authority. The source stays Unreleased and outside frozen2.15 H/release/archive inputs. sdk-python owns ordinary main checks/cleanup, then the ordered normal #269 refresh and fresh qualification/carry. Shared211 published/installed retry and guide gates remain open; offline184 has its independent consumed-result/input-correction gates. This accepts source integration and its explicitly described ordinary workflow consequences only. All later package, release, public-install, Server/runtime and cross-repository delivery gates stay with their named owning records. |
|
General exact-head source integration is complete. Normal merge This accepts source integration only. Ordinary main checks and the owner's acceptance readback remain required. Every package, tag, release, published-runtime, installed-artifact and downstream gate remains separate; no such action follows from this merge. |
|
Ordinary actual-main acceptance is complete for The own merged source branch |



Activity callbacks cannot read the logical execution ID that the service idempotency guidance recommends. Add immutable optional
ActivityInfo.activity_execution_idfrom the received canonical claim field, preserving nonblank strings exactly and reporting missing, invalid or blank values asNone. Existing constructors remain compatible and task, attempt and session IDs are never fallbacks.Prepared-local callbacks receive the validated admission receipt's ID. Inline local callbacks retain parent workflow/run IDs and have no admitted execution ID. Session-routed activities retain their ordinary claim identity. The SDK reference defines these boundaries and provides an idempotency-key helper.
Validation: 21 new/extended identity controls fail against unchanged main and pass with this change; 137 broader activity/context/retry/prepared/group tests pass. Controls cover ordinary and supervised callbacks, received retry identity with distinct attempts and logical calls, session routing, legacy absence, malformed values, immutable snapshots/pickling, and prepared versus inline local metadata. Ruff, mypy and corpus validation pass (103 replay / 43 codec fixtures unchanged; neither guard triggered). Fresh normal hosted qualification is pending. One initial local test selector matched no test; the corrected selection produced the reported 21 failures and passes.
Refs durable-workflow/.github#211. This independent source slice is outside the current #266 release snapshot. The shared issue remains open for normally published-package, named published-Server retry identity and execution-guarantees guide acceptance. No protocol, endpoint, tag, publisher or local Server/runtime action is included. General retains source integration order.