Repository navigation
Qualify linked cancellation outcomes through actual Nexus workflows - #404
Conversation
…tive-service-outcomes # Conflicts: # .github/workflows/published-nexus-sdk-callers.yml # scripts/conformance/nexus-php-service-worker.php # scripts/conformance/nexus-php-workflow-probe.php # scripts/conformance/nexus-published-artifacts.sh # scripts/conformance/nexus-python-service-worker.py # scripts/conformance/nexus-python-workflow-probe.py # tests/Unit/NexusSdkCallerEvidenceTest.mjs
|
For merge coordination with Rust-owned #401: its current candidate08deec205 incorporates #403 and is rerunning the required source gate plus all six runtime/retention configurations. Please sequence this nonurgent main merge after that qualification, or coordinate the next integration, to avoid restarting the full matrix for another base change. #404 qualification can continue independently; its PHP Nexus work and artifacts remain yours, and no native/shared changes are requested. Native Nexus is still unqualified and #401 retains its separate frozen workflow/activity tuple. |
rmcdaniel
left a comment
There was a problem hiding this comment.
Exact-head review of Server #404
Reviewed 5d20435d72ab3f2f589effdc4e11f2542400eec3 against current main #403. All normal source gates pass, including feature 38153153787 and actual published execution 38153153767.
The fixture starts real registry-installed PHP/Python workers, explicitly enabling cooperative cancellation with protocol 1.20. PHP uses the pinned published Server image for its required process extensions. Both language runtime containers run as UID/GID 1000. The existing shared fixture token supplies discovery and worker authentication. This does not qualify scoped worker credentials, whose observed PHP discovery failure belongs to SDK #121/#122.
Cancellation starts only after the linked service has committed its timer. Requests target its exact linked workflow and run. A duplicate with changed reason and shorter budget must retain the original request identity, requested-at and deadline. Typed application observation is required in actual worker logs, plus one canonical request, delivery and cancelled linked outcome before the original deadline.
The original service call and waiting caller must agree on one cancelled terminal delivery at the original caller/run/call/sequence. Caller code catches the typed error and completes the handled result. No claim that the caller run itself ends Cancelled, that caller-run/service-call API cancellation propagates cooperatively, or that cleanup survives SIGKILL.
API setup requests explicitly close their connections across blocking Docker probes. Reads retain their single recorded transport retry; writes are never retried. Existing successful and handled typed-failure cases pass alongside all eight cancellation cases. Useful raw observations and original failed setup cohorts are retained. The separate full Nexus suite stays non-passing.
No blocking finding. Merge is authorized. Verify normal main feature and actual published execution before delivery.
…tive-service-outcomes
|
Server #401 has merged as |
rmcdaniel
left a comment
There was a problem hiding this comment.
Reviewed exact head 45f3376, tree 5a809b394e0d14f1204855b037ae5f40afc5bca9, after integrating the merged Rust #401 main. The seven Nexus qualification files preserve the earlier reviewed implementation. No native or shared rewrite change is introduced by this PR.
All normal gates pass, including published execution 38153818637 and feature/source qualification 38153818639. The exact published tuple executes eight successes, eight handled typed failures and eight selected linked-run cooperative cancellations. Cancellation checks require actual handler observation, one request/delivery/terminal history, unchanged duplicate identity/deadline and one original caller call/sequence delivery. Reviewed role scope remains explicit: this fixture uses the shared credential, while PHP SDK #121/#122 owns real worker-only authentication.
No blocker found. Main checks remain required. Caller-run cancellation propagation, service-call cancellation propagation, cleanup SIGKILL/replacement, external payloads and operator visibility are still unqualified. The new independently reproduced execution-deadline defect is Workflow #761, with regression Server #405. The full Nexus suite remains non-passing.
|
Delivered in merge All eight PHP/Python caller/service combinations in same and cross namespaces observe genuine cooperative cancellation in the actual linked service handler. Duplicate requests retain the original request identity, requested-at and 30-second deadline. Each linked history records one request, delivery and WorkflowCancelled before that deadline. Each original service call delivers one cancelled outcome at its caller run/call/sequence. The caller catches its SDK exception and completes its handled result. The tuple remains published Server 2.5.22 / Workflow 2.5.11 at index This does not qualify caller-run/service-call API propagation, caller runs becoming Cancelled, cleanup SIGKILL/replacement, external payloads or operator visibility. Workflow #753 remains open. The independently reproduced deadline defect is Workflow #761 and Server #405. Merged remote head is deleted and verified absent. |
Linked cooperative cancellation outcomes
Continue durable-workflow/workflow#753 and the PHP/Python SDK #116 qualification after #394 and #403.
Run all four PHP/Python caller/service language directions in same and cross namespaces. The service first commits a durable timer. Outside workflow code, the installed SDK requests cooperative cancellation of that selected linked run with a 30-second cleanup deadline, then repeats the request with a different reason and shorter budget. Require the original identity, requested-at and deadline to remain unchanged.
The actual service application must observe
WorkflowCancelled, with its request ID in the real worker log. Its history must contain one cooperative request, one delivery and one cancelled terminal outcome before the original deadline. The durable service call and waiting caller must converge to one cancelled delivery at the original call/run/sequence. Preserve all earlier successful and typed failure checks.This qualifies linked workflow cancellation convergence. It does not qualify cancellation initiated by the caller run or the service-call cancel API, a global cancellation cascade, cleanup SIGKILL/replacement, external payloads or operator visibility. Those acceptance cases remain open. The separate full Nexus suite remains non-passing.
Frozen tuple is unchanged: published Server 2.5.22 / Workflow 2.5.11 (
sha256:5e0d2dc34f6199f4b01b77874e046c173d9697499f647cc0e9ca543ea89bee7c), PHP SDK 2.3.0-rc.1, Python SDK 2.6.0rc2, CLI 2.2.3 and Waterline 2.9.1. No local product artifact substitution or native/shared rewrite changes.All source gates pass on
5d20435d72ab3f2f589effdc4e11f2542400eec3, including actual published execution 38153153767 and feature 38153153787. All eight cancellation cases and the previous eight success and eight handled failure cases pass. Exact-head review finds no blocker. Normal main checks remain required after merge.Both service workers explicitly advertise cooperative cancellation with protocol 1.20. The PHP CLI runtime is the frozen published Server image, supplying pcntl and posix, with SDK dependencies installed from Packagist. Both language runtime containers use UID/GID 1000. Earlier setup failures remain in their Actions artifacts. Discovery uses the existing shared fixture credential and therefore does not qualify worker-only authentication. PHP SDK #121/#122 own the observed worker-only discovery fix. Setup connections explicitly close across blocking Docker probes without retrying writes.