Skip to content

Exercise actual published Python Nexus caller workflows - #394

Merged
rmcdaniel merged 12 commits into
mainfrom
qualify-python-nexus-workflows
Oct 11, 2026
Merged

rmcdaniel merged 12 commits into
mainfrom
qualify-python-nexus-workflows

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Oct 11, 2026 •

Copy link
Copy Markdown
Member

Actual published workflow execution

Part of durable-workflow/workflow#753 and durable-workflow/.github#122, coordinated with #325's owner. This ordinary published PHP Server fixture executes PHP and Python caller workflows against actual PHP and Python SDK service workers in all four language directions. Each direction covers the same namespace and a caller namespace targeting shared.

It retains original caller/run/call identities, one admission and one terminal delivery boundary, linked service histories/results, installed SDK versions, real worker process identities, and Python leased command HTTP receipts. PHP workers report their available signal handling and actual exit result.

Frozen tuple: Server 2.5.22 at sha256:5e0d2dc34f6199f4b01b77874e046c173d9697499f647cc0e9ca543ea89bee7c, bundled Workflow 2.5.11, PHP SDK 2.3.0-rc.1, Python SDK 2.6.0rc2, CLI 2.2.3 and Waterline 2.9.1. These are installed published packages/images, with no local product checkout used as an artifact.

Draft until actual execution and normal checks pass. The earlier frozen Started/null result in run 38130074555 is preserved. Existing client admission pairs and direct handler probes keep their separate scope and do not become actual workflow evidence. The full Nexus suite remains non-passing through terminal failure, cancellation, recovery and oversized-payload requirements. Waterline #174 tracks the actual service-mode operator gap. This PR makes no full Nexus parity claim.

Native Rust/shared differential fixtures/specs/migrations/performance remain with #325's owner. PHP SDK major #111 is separate from the additive prerelease used here.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Actual authored Python workflow execution in Server #394 reproduced three distinct product gaps on the frozen published tuple.

  • Python #111: the cross namespace workflow sends its caller namespace to the target catalog and gets endpoint_not_found.
  • Python #112: plain JSON Nexus arguments reach the real PHP SDK service worker as missing input. The Avro correction is in Python #113, with 11 focused wire/client/replay tests passing. Source checks, oversized transport and published consumer qualification remain required.
  • Workflow #753: the synchronous completion-waiting caller finishes with an admission surface, while the linked service fails. A subsequent Server API read still reports the original call as started with no terminal timestamps.

Latest published run 38126596930, runner 33792ad2f89b0df80656699d3addb38a6eeabf7b, executes actual Python 2.5.4 / PHP SDK 2.2.7 workers against Server 2.5.19 / Workflow 2.5.9. Original caller/service histories, HTTP receipts and the post-service durable call read are retained in its official artifact. Size and SHA-256 independently verify. CLI 2.2.3 / Waterline 2.9.1 complete the frozen tuple.

The previous four client admission pairs and 12 existing checks remain passing, with exactly two full workflow cases uncovered. #394's added real workflow check fails as required. The next work is to complete the wire and addressing fixes, converge linked outcomes, then qualify the actual published positive cases, failure, cancellation and cold recovery. #122 remains open. PHP durable authoring is separately tracked in durable-workflow/sdk-php#116. Native/shared fixture work stays coordinated with Server #325.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The installed prerelease has isolated the remaining product failure.

Published run, runner 53f35e3156daf0be49e47b78c5ea2eb672b0144f, uses unchanged Server 2.5.19 (sha256:1b8621cb43340f979f4dc144aa51c32d0747aaad73f2b600130e0ee973aea352), Workflow 2.5.9, PHP SDK 2.2.7, new Python SDK 2.6.0rc1, CLI 2.2.3 and Waterline 2.9.1.

Both actual Python caller workflows, in shared and tenant-b, send Avro input through the public SDK, route to the shared catalog and preserve their original caller/run identity. Both actual PHP service workers execute and return the expected greeting. The separate request and service-input assertion passes. Artifact with actual requests, installed versions and linked histories.

The full workflow gate still fails. Both callers finish with Started and no Nexus result, while the original durable call stays Started/Accepted after the linked PHP service completes. Terminal timestamps remain null. This is the concrete backend defect in durable-workflow/workflow#753. Its first implementation slice is Workflow #754.

The frozen published runner keeps that completion gate intact. This run qualifies inline input and addressing only. Oversized service input remains dependent on #395, and cancellation, replay restart, role enforcement and full recovery still need actual execution before any broader claim.

@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.

Reviewed exact head c9dca3de762aab68016501f0cf08f92a5bce6b62 against main 52900759bace5c4e8a20dd870c72774a5d48f178.

The seven-file change installs published PHP/Python SDKs and runs real caller workflows against real SDK service workers in four language directions and two namespaces. Each successful case checks the original caller/run/call identity, one admission and one terminal delivery at the same sequence, linked service history, and decoded caller/service results. HTTP client admission and direct handler probes remain separate.

Inspection reads may retry once after a transport exception with a fresh connection. Writes and HTTP rejections are not retried. The report records transport attempts and causes. PHP signal handling is measured honestly, including signal termination when pcntl is unavailable. Disposable workers and the existing isolated stack are cleaned by the enclosing runner.

All exact-head checks pass, including actual published execution 38149954026 and normal feature qualification 38149954006. The frozen image is Server 2.5.22 / Workflow 2.5.11, index sha256:5e0d2dc34f6199f4b01b77874e046c173d9697499f647cc0e9ca543ea89bee7c, with PHP 2.3.0-rc.1 and Python 2.6.0rc2.

This qualifies successful durable workflow service calls. Failure, cancellation, recovery, oversized payloads and actual Waterline visibility remain open in Workflow #753 and Waterline #174. The full Nexus suite exit remains nonzero and is retained explicitly. No native/shared rewrite contract changes or stable SDK promotion are included.

@rmcdaniel
rmcdaniel marked this pull request as ready for review October 11, 2026 15:17
@rmcdaniel
rmcdaniel merged commit bd6dc93 into main Oct 11, 2026
8 checks passed
@rmcdaniel
rmcdaniel deleted the qualify-python-nexus-workflows branch October 11, 2026 15:17
@rmcdaniel

Copy link
Copy Markdown
Member Author

Merged as bd6dc932159a34cb5fe2fe8e8401e4fae4a44733, identical reviewed tree 9d7f62490f4b33cbbcb4da25729892a2b7ea562a. Exact-head review, all source checks and all main checks pass. Main published execution and main feature qualification are green.

All eight actual PHP/Python caller/service cases complete with original caller/run/call/sequence and linked service result. The tuple uses published Server 2.5.22 / Workflow 2.5.11, PHP 2.3.0-rc.1 and Python 2.6.0rc2. The verified source artifact contains actual worker reports, requests and histories.

The merged branch is deleted and its completed worktree/scratch directory removed. Workflow #753 and the SDK parent issues remain open for failure, cancellation, restart/interruption, external payloads, deadline preservation and actual Waterline inspection. Follow-up #403 already passes actual typed failures and is separate from this successful execution scope.

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