Repository navigation
Description
Current delivery — November 13 (General)
The original source snapshot below is historical; these accessors have shipped.
| Binding | Delivered evidence | Remaining action |
|---|---|---|
| Rust | Registry 4.9.0 has normally installed published-Server ordinary/cooperative/local/session retry identity proof and all-locale/API/guide delivery. General previously revalidated this portion as delivered. | No additional Rust runtime is required to satisfy this issue absent a concrete regression. A current-native refresh is separate conformance coverage. |
| PHP | Read-only accessor shipped3.10.0 and remains in3.18.2. Owner reconciliation finds no retained real-Worker retry callback pair; FakeTransport controls retain their source-only scope. | SDK PHP owns one ordinary maintained published-worker retry acceptance after421/422 priority and its own source/profile gates, then Docs handoff. Preserve419/420 installed holds; absence/local/session source reconciliation does not create four extra runtime requirements. |
| Python | Accessor shipped2.15.0; published2.17.2/native3.9.2 ordinary retry proof, stable SDK guide and root all-locale adoption are delivered. Missing/session/prepared/inline behavior retains its explicit source-defined scope. | Python delivery is accepted at these scopes. General independently checked exact merge tree, all main workflows/Pages, English live pages and unchanged selector; no further unchanged SDK release/runtime is required absent regression. |
General retains cross-SDK closure after the remaining criteria are proved. Historical named artifacts retain their exact scope; the retired PHP Server receipt does not authorize a new PHP Server release or imply a current-native Rust observation.
Original problem and acceptance
The execution guarantees guide makes activity_execution_id the default idempotency key for external side effects, stable across retries. Service-mode activity code in the PHP, Python and Rust SDKs cannot read it. An activity that follows the guidance has no supported stable key except a business key it passes in itself.
Current behavior
- The execution guarantees guide names
activity_execution_idas the default remote idempotency key. - The Server includes
workflow_instance_id,workflow_run_id,activity_execution_idandidempotency_keyin every ordinary activity claim (ActivityTaskPoller). - Python
ActivityInfo, PHPActivityContextand RustActivityContextexpose only per-attempt identity: task id, attempt id, attempt number, queue and worker. The task id and attempt id change on every retry.
This was found by reading source.
Expected
Each SDK's activity context exposes the logical activity execution id and the owning workflow instance and run ids from the claim. When an older Server omits them, they are reported as unavailable and never derived from task or attempt ids.
Acceptance
- A typed accessor in each SDK, documented in its reference and in the execution guarantees guide with a service-mode example.
- An integration test against a named published Server: an activity that fails its first attempt sees the same execution id and a different attempt id on retry.
- Defined, tested behavior when the field is absent.
- A defined answer for local activities and worker sessions.
- Link from durable-workflow.github.io#272, whose resumable-checkpoint recipe needs a stable key.
Activity
rmcdaniel commentedon Oct 23, 2026
Rust implementation is SDK139 / draft140. The context now has immutable optional
activity_execution_id(),workflow_id()andrun_id()accessors forwarding the existing claim fields. Missing values stay unavailable and never use task/attempt-derived fallbacks. Local callbacks expose their parent workflow/run IDs and no Server activity ID before command recording; Server-free tests expose no Server IDs. Session callbacks retain their ordinary claim identity.Initial Rust1.86 all-feature build and19 focused public/workflow/task-literal controls pass. Named published PHP Server2.11.0 normal/cooperative/local/session retry-identity cells are in progress. No version/tag, publication, normal-installed acceptance or cross-SDK completion is claimed for this work. The active fixture-lock security repair SDK138 remains with its owner and will be incorporated before qualification of a later minor.
rmcdaniel commentedon Oct 23, 2026
Rust4.9.0 is published and normally installed: exact receipt, immutable source93d3c3aa78be4347045f50833ffcdc02dcabc4ed, protected OIDC39967443675, matching API/archive/lock SHA256be21bb5b033cc8db364f1f9e3d789607eb6eff976126965cfc95072146c220a6. Actual Rust1.86, no source overrides, clean VCS and critical source equality; public absence/identity controls and all4 fresh published PHP Server2.11.0 ordinary/cooperative/local/session retry-identity cells pass. Two logical calls/four attempts per cell prove stable original owning IDs, stable remote execution IDs with distinct attempts, distinct logical calls and explicit local/Server-free behavior. Exact README and Website helper compile/run installed.
API portal deployment39967624766 and all8 Rust/execution-guarantees service examples/+272 link remain with the Website owner; no unpublished guide/API anchor is called delivered. SDK139 stays open for live readback. Shared211 remains open for other SDKs, with no automatic cross-repository adoption.
rmcdaniel commentedon Oct 23, 2026
Rust211 is fully delivered in4.9.0, including normal registry/Rust1.86/publishedPHP2.11.0 normal+cooperative+local+session acceptance and all8Rust/execution-guarantees guide locales. Final SDK receipt: durable-workflow/sdk-rust#139 (comment) . Website396/397 actualPages39978971911 and independent all16 route/helper-hash/API/receipt checks passed. Original source93d3c3aa/checksumbe21bb5b remain immutable. SDK139 is closed; this shared parent remains open for other SDK acceptance, and218 checkpoints/consumer adoption remain separate.
rmcdaniel commentedon Nov 4, 2026
General open-item pass, November 4. Owner: sdk-python and sdk-php for remaining delivery; sdk-rust evidence owner; General for acceptance.
Next action: Reconcile actual activity_execution_id authoring, retry stability and published-package/guide acceptance for every SDK, without fabricating absent identity.
Action taken in this pass: Retained Rust4.9 delivery and asked Python/PHP owners for exact current source/published evidence during their complete passes; checkpoint recovery remains218.
General retains the cross-repository follow-through. Existing operator stops and exact source/release/production gates remain binding; the item stays open until its actual acceptance is evidenced.
rmcdaniel commentedon Nov 4, 2026
Python source audit (owner sdk-python) confirms a remaining gap.
ActivityInfonow exposes optionalworkflow_idandrun_idfrom the received task, but has no typedactivity_execution_idaccessor. The execution ID in Client activity models/lease authority is not an activity-context accessor. No stable identity is derived from task/attempt IDs today.Concrete next independent slice: expose an optional logical execution ID from the exact claim metadata, preserve missing/blank legacy behavior as unavailable, and define local activity/worker-session absence without synthesizing an ID. Add received-claim/legacy/pickling controls and the retry proof (same execution, different attempt) against an admitted exact published Server later. sdk-python owns source; General owns sequencing/installed-runtime admission; durable-workflow-github-io owns execution-guarantee/example follow-through after qualification. Advanced today: checked
ActivityInfo.__post_init__and its worker construction against the parent requirement; current workflow/run metadata is partial progress, not full acceptance. No protocol change or new run was started.rmcdaniel commentedon Nov 4, 2026
Rust portion revalidated in the complete owner pass: delivered, not waiting for another Rust runtime. Immutable Rust4.9.0 source93d3c3aa78be4347045f50833ffcdc02dcabc4ed/archive SHAbe21bb5b033cc8db364f1f9e3d789607eb6eff976126965cfc95072146c220a6 has normal installed publishedPHP2.11.0 ordinary/cooperative/local/session retry-identity acceptance and final all-locale/API/guide delivery. Current4.12.0 retains the immutable optional ActivityContext activity_execution_id/workflow_id/run_id accessors and no task/attempt fallback.
I re-read the source/accessors and accepted receipts without rerunning the four cells. Named remaining parent owners sdk-php/sdk-python have been asked for their current public identity/absence/local/session acceptance links, so General can resolve stale parent status from precise evidence. Rust implementation owner remains sdk-rust for any concrete new defect; shared parent closure remains General's cross-SDK decision.
rmcdaniel commentedon Nov 4, 2026
sdk-php owns the remaining PHP source and installed retry-identity acceptance. I audited current ActivityContext: workflowId/runId already bind the claim's public keys (with explicit-null precedence and legacy internal-name aliases), but there is still no activityExecutionId accessor/property. ActivityRetryInfo does not supply it either. PHP completion of this parent therefore remains real work.
Next PHP source slice after the current P1/typed-search work: expose nullable logical execution identity from the actual activity_execution_id claim field, preserving constructor compatibility; never synthesize it from task/attempt IDs. Add same-execution/different-attempt retry controls, distinct logical-call controls, missing/invalid/explicit-null controls and defined normal/cooperative/prepared-local/Server-free/session behavior. The actual worker claim metadata path is already present, so ordinary source implementation does not need a new Server endpoint.
Server owner: please confirm the canonical prepared-local/session claim identity availability and fixture reference so null/unavailable behavior is portable. Rust owner retains the delivered 4.9.0 receipt above; I am not rerunning it or claiming PHP parity. sdk-php will request exact source review, publish only through the separately admitted release, then run the actual installed retry pair on an admitted published Server. Website owner owns the service-idempotency example/link handoff after that result.
rmcdaniel commentedon Nov 4, 2026
The next PHP slice is implemented in draft SDK #304, exact source
a70fc73cdcea2ddaf720592024177d3c4b175a79, independently based on accepted main5777680c. The nullable read-only activityExecutionId comes only from the received canonical field; validated prepared-local admission forwards its actual execution ID, while inline/Server-free/legacy absence remains null. Task/attempt/session IDs are never substitutes. Existing constructors remain compatible.PHP 8.4.27 local source qualification: 58 identity/retry/prepared-worker tests / 440 assertions, no skips, plus single-process PHPStan pass. The first cached runner skipped prepared controls without pcntl; a bounded task-owned toolchain corrected that, and the complete run then passed. Normal hosted checks are running. This proves received-claim/callback dataflow and source compatibility, not a new live producer retry observation.
sdk-php owns exact source review, the later admitted package, named published-Server normal/cooperative/prepared-local/session retry identity acceptance and Website's all-locale handoff. The shared parent stays open until that installed outcome is delivered. No package, runtime run or application adoption was started.
rmcdaniel commentedon Nov 4, 2026
Python is taking the independent source slice now, isolated from the 2.15 candidate. Owner: sdk-python. The current metadata path already reaches ordinary and supervised activity callbacks. Prepared-local admission also has a validated logical execution ID, which must be forwarded from that receipt rather than from the enclosing workflow task. Inline local execution has no admitted Server execution ID and will remain unavailable. Session-routed remote tasks retain their own claim identity, not the session ID.
Next concrete action: add the immutable optional
ActivityInfo.activity_execution_id, absent/invalid/blank and constructor/pickling controls, received normal/cooperative/session identity controls, and prepared-versus-inline local dataflow controls. No task/attempt-derived fallback, endpoint or protocol change is needed. Source tests will distinguish stable received logical identity from distinct attempts; they do not replace the required named published-Server retry observation.The later package/installed retry acceptance and execution-guarantees guide remain with sdk-python, General's qualification sequencing and durable-workflow-github-io. Rust's delivered reference and PHP's independent #304 remain separately owned. No package, Server or runtime experiment has started.
rmcdaniel commentedon Nov 4, 2026
Python source is now draft SDK #268, exact
c286f19a81b87599ce1fb9225fb66a8b914d901d, tree406cfaba94e4dd7d2c8873f59638ed97f9bdca59, based on accepted main5ac5a008. The production delta adds the immutable optional received execution ID and forwards validated prepared-local admission identity. Ordinary/supervised/session claims use their actual field; inline local and legacy absence stayNone. Constructor compatibility and exact nonblank strings are preserved.21 new/extended controls fail against unchanged main and pass on the candidate, including actual supervised callback serialization and prepared-versus-inline metadata. Another 137 broader activity/context/retry/prepared/group tests pass, plus Ruff, mypy and append-only corpus validation (103 replay / 43 codec fixtures unchanged). The synthetic received retry pair proves SDK dataflow only, not a live producer retry observation. One initial test selector matched no test before the corrected control run.
Next owners/actions: Security reviews the exact source; General retains integration order and later package/installed qualification sequencing. sdk-python owns the eventual named published-Server retry pair and public package proof; durable-workflow-github-io owns the execution-guarantees guide/service example after qualification. This independent slice remains outside the current 2.15 candidate. No endpoint/protocol, publisher or Server/runtime invocation was added, and this shared parent stays open.
rmcdaniel commentedon Nov 4, 2026
Docs owner handoff disposition: SDK Python #268 prepares optional activity execution identity, with its SDK examples explicitly unreleased. It is outside the current prepared 2.15 package candidate, so the stable website pin and availability wording remain unchanged.
durable-workflow-github-io owns the eventual English plus seven-locale execution-guarantees/idempotency guidance update on this existing item. The current truth boundary is: workflow/run identity is not the missing logical activity-execution accessor; inline/legacy absence must remain explicit. sdk-python is asked to return the exact qualified published package and normally installed consumer receipt after source/General's release decision; that receipt clears the documentation adoption dependency. No draft source, source check or another SDK's package is treated as stable availability. The immediate Python #184/#188 availability corrections remain a separate prepared docs commit, with no pin/release action requested here.
rmcdaniel commentedon Nov 5, 2026
PHP source integration is now complete through sdk-php #304, actual main 486f25a9294fb40c548df37ddb2e266930aa77ec, reviewed tree ba42b8737c1fb4307f33386338ec20cb1dc14bc2. Main/source/portal preservation receipt records 42 terminal checks (40 success/two intended skips), exact reviewed parents/tree, preview-only portal build and unchanged live stable source.
The read-only nullable ActivityContext::activityExecutionId accepts only the canonical received string, preserves opaque spelling and refuses aliases by leaving unavailable identity null. Prepared local callbacks use their validated Server admission; inline local and legacy/Server-free contexts remain null. This is accepted PHP source, not a named published-Server retry observation.
sdk-php owns the later qualified package and normally installed retry/session/local acceptance after General's cohort/publication decision. Stable PHP remains registry 3.9.4; no new property availability or website pin is adopted. Docs retains the eventual all-locale idempotency guidance after that artifact handoff. Keep this parent open; no Server/runtime/release action followed from the merge.
rmcdaniel commentedon Nov 11, 2026
Server: done. The native activity claim carries a stable
activity_execution_idacross retries. Remaining work is SDK accessors and published-Server retry proof. Owner: SDK owners.rmcdaniel commentedon Nov 11, 2026
PHP: the accessor shipped in 3.10.0 (
ActivityContext::$activityExecutionId, sdk-php#304). Remaining: an installed test against a published Server showing the same execution id and a new attempt id on retry. Owner: sdk-php.rmcdaniel commentedon Nov 13, 2026
Python audit now reconciles source and publication: the optional
ActivityInfo.activity_execution_idaccessor from SDK268 shipped in2.15.0 and is present in qualified published2.17.2 (release receipt). Its received-only immutable/absent behavior, workflow/run context, ordinary/session dataflow and inline-versus-prepared local distinction remain unchanged. No task, attempt or session identity is substituted for a missing logical execution ID.The concrete remaining acceptance gap is still a normally installed actual callback retry against a named published Server: same received logical execution ID and owning workflow/run, distinct task/attempt IDs. Existing synthetic received-claim tests do not fill that cell.
Python owns the bounded follow-through in SDK324, exact
0cca7c7b833fea5d0719148b16ece841c024becb. It adds a standard actual-Worker integration case and removes stale unreleased wording from the SDK reference.51 focused source checks and Ruff pass; the new integration case only collected locally and its normal CI is pending. The published-package/published-Server cell remains a separate next action through ordinary acceptance. No new API or release is needed. Docs owns the subsequent execution-guarantees/example handoff once that receipt exists; General retains cross-SDK closure.rmcdaniel commentedon Nov 13, 2026
Rust owner receipt reconciliation: the normally installed published-Server retry proof already exists at SDK139/6367230500, with subsequent live guide/API delivery. It uses registry4.9.0, source93d3c3aa, archive SHA
be21bb5b033cc8db364f1f9e3d789607eb6eff976126965cfc95072146c220a6and named published PHP Server2.11.0 indexb29157eb2cf844916debbbb3c01b3257672e0dece778a9c6fa539043a3038f02. Ordinary/cooperative/session retries retain logical execution identity with distinct attempt IDs across two logical calls; inline-local callbacks retain parent IDs and no fabricated Server execution ID. Absent identity and immutable-original-claim controls are also linked there.That is a historical PHP-Server consumer result, not a current native3.x repeat. Current source retains the shipped optional accessors and service-mode recipe; no new implementation or SDK release is needed for those accessors. The active logger release/installed qualification remains the priority. Any selected current-native retry refresh will be recorded separately against its actual current published tuple, without relabeling this historical receipt or claiming the cross-SDK parent closed. General retains the final cross-binding reconciliation.
rmcdaniel commentedon Nov 14, 2026
Python's named published-Server retry-identity acceptance is now independently qualified: Security's exact evidence PASS, full retained packet, successful ordinary Actions cell.
The normally installed registry SDK is 2.17.2, wheel SHA-256
7dc77d3882fa5cbddbeaee6a4cc63b05285e280523c8ea40dc31e03cc12a40bc, with qualified native Server 3.9.2 (index8ffcdb2a…, amd64 child813c9337…, source5614274d…) and official Python 3.12.16. Runner source is accepted maind7eb1fe3300cbf514a169d8e76d5854ccc183232/ tree53ab828f9116d67213e3313e2c8db6332621ba39. All current source/main/manual checks are terminal SUCCESS.One real activity failed its first attempt and succeeded on its second. Both callbacks received the same nonempty logical execution ID and owning workflow/run IDs, while both task and attempt IDs changed and attempt numbers advanced 1 → 2. All 15 wheel hashes and the installed SDK inventory reconcile; SDK bytes were unchanged before/after. Captured runtime, consumer and network IDs and independent ownership-label inventories are absent after cleanup. Artifact
14091746046has raw ZIP SHA-256972def3f71d33d88aaf8d05e8d00f526d1b4eb6526d4227ea1d760d6597270b1; the result hashes toc91771ffd72997b867fb913ed8284bb42aa9bd4ed250b6a0d9f966d3c3c2a590. The first dispatch remains separately recorded NONPASS.The accessor's received-only/absence/session/inline-local behavior is already shipped and source-tested through SDK268; this new runtime receipt establishes ordinary retries only. No new SDK release is needed for this API. General retains cross-binding closure, and Docs retains the execution-guarantees/service-example adoption.
One concrete portal follow-through remains with sdk-python: stable deployment 43541781612 succeeded, but public readback still contains the tag's stale “unreleased” identity heading. The renderer copies the reference guide entirely from the immutable release tag, so accepted prose-only corrections in SDK324 were not staged. I am correcting that staging behavior with published API/source and example equality controls, then will return the actual stable-page readback. This does not reopen the installed identity result or authorize a broader runtime claim.
rmcdaniel commentedon Nov 14, 2026
The existing Docs adoption dependency is now active in Docs draft #543, English head
2d18c42e77cd6ef198112058adea40e984947864. I read the exact installed ordinary retry receipt and Security PASS, checked the published 2.17.2 accessor and the SDK-owned idempotency helper, and retained the distinctions for absent identity, sessions, prepared local, inline local and Server-free contexts. This changes no selected version, code example or Embedded feature.Docs owns all seven translations/source hashes, semantic/ordinary review, normal checks, bounded all-locale build, Pages and public readback. The service example remains on the Python SDK site. Its current public guide still uses the stale
activity-execution-identity-unreleasedanchor; SDK #326 owns the corrected stableactivity-execution-identityguide and actual provenance/readback. That live link check remains explicit before Docs delivery is called complete. General retains shared #211 cross-binding closure. Neither the named ordinary retry receipt nor this prose adopts broader local/session runtime acceptance.rmcdaniel commentedon Nov 14, 2026
Python's SDK-owned delivery is complete for the currently scoped acceptance: the qualified installed ordinary retry-identity proof now has a live stable SDK reference and provenance receipt. The activity identity service example resolves with the corrected anchor and published availability; absent/session/prepared-versus-inline behavior remains explicit. Stable API source and the approved 2.17.2 wheel are unchanged.
The two English additions in Docs543 have bounded Python semantics review PASS. The SDK-owned external link condition is now cleared. Docs owns its seven locales, root checks/build/Pages/live readback; General retains cross-SDK closure. This does not expand the ordinary installed cell to local/session runtime acceptance or change any other binding's evidence.
rmcdaniel commentedon Nov 14, 2026
The Docs Python activity-identity adoption is delivered: Docs543 final receipt. Exact reviewed head
235b6ffa3f347f323814c8bbf8442df8e79bc2a2merged as2693bdc733d3fc361efff069ea4fee5fa0133770with full tree equality. All 11 head checks, all 12 main checks and protected Pages43544711233succeed. All 16 public Python/execution-guarantees pages across eight locales match the reviewed build, including identity/absence guidance, localized cross-links and the SDK-owned service example. The selected package versions and artifact data are unchanged. Owned build container and remote branch are independently absent; source is clean.The Python guide and shared execution guarantees now adopt the shipped accessor and qualified 2.17.2/native3.9.2 ordinary retry observation. The SDK portal correction is independently read back with its corrected guide/helper anchor and exact source/wheel/audit/inventory identities. Local/session behavior retains its defined scope, unavailable identity remains
None, and the ID supplies no claim authority or exactly-once external effect. General retains cross-binding reconciliation and shared closure. No new SDK package or runtime was needed for this Docs delivery.rmcdaniel commentedon Nov 14, 2026
PHP evidence reconciliation, November 14. This was a read-only audit; no install, SDK/Server execution or new runtime selection occurred.
The accessor and SDK-owned guidance are delivered. SDK #304 shipped in 3.10.0, and current published 3.18.2/source
f9483bb2b5b45f591a82d9e5419c5b60a6e967c6retains it. Fresh default public HTTP readback returned 200 for the PHP manual and service-key example and ActivityContext API. The deployment audit binds SDK/presentation/published source and workflow tof9483bb2, version 3.18.2. No new accessor API or SDK release is needed for #211.I found no retained named PHP installed receipt that supplies the required callback retry pair. I rechecked the 3.10.0 acceptance reconciliation, its 54-cell installed completion-poll matrix, 3.18.0/native 3.8 ordinary compatibility, and 3.18.1/3.18.2 installed native 3.9.1 receipts. Those qualify their stated polling/child/ordinary/completion/query/read behaviors. They do not record two actual retry callbacks with the same logical execution/workflow/run identities and different task/attempt identities. The existing
testReceivedRetryClaimsKeepLogicalIdentityAndDifferentAttemptsexplicitly supplies the claims throughFakeTransport; it is received-metadata dataflow evidence, not that installed producer observation.The absence/local/session answer is already defined in the shipped reference and source review:
Concrete remaining PHP owner action: after the current #421/#422 security priority and the ordinary caller's own source/profile gates, sdk-php will prepare and qualify one real-Worker ordinary retry case through the maintained published-worker acceptance path. It must fail the first activity attempt, succeed on the second, and retain both callbacks' execution/workflow/run/task/attempt IDs and attempt numbers: stable nonempty execution/workflow/run, changed task and attempt IDs, 1 → 2. The exact published package/producer tuple is a separate reviewed selection, not selected by this audit. No #419/#420 held step is resumed or replaced.
After that named installed receipt, sdk-php owns the handoff to Docs for the shared execution-guarantees PHP adoption and service-example link across locales. General retains cross-binding acceptance and parent closure. The defined absence/local/session cases remain accurately scoped; this audit does not invent four new runtime requirements or claim the remaining ordinary retry proof complete.