Repository navigation
Audit conformance experiments for complete first-party SDK coverage #122
Description
Activity
Concrete audit finding from server#140: an exploratory unrestricted Server PHPUnit run includes legacy conformance-runner contract tests outside the current feature qualification command. The first failing assertion, ActivityConformanceRunnerContractTest::test_runner_rejects_local_repo_root_vendor_runtime_probe, expects the phrase "local product source probe" while the actual rejection identifies forbidden local source and missing pinned-image evidence. This reproduces identically on unchanged main e918f0c4; no Nexus change causes it. Include runner-test relevance and clean executable prerequisites in this existing experiment audit, alongside first-party SDK coverage. Do not turn obsolete message assertions into another release coordinator. Server release qualification is independently green on the documented 2,132-test command.
Initial public-runner audit (2026-09-23):
- Child workflows: the published runner resolves the Rust crate, but its manifest and runtime probe execute only the 2x2 PHP/Python parent-child matrix. Rust
WorkflowContext::start_child_workflowexists, so the five Rust-involving directions remain unexecuted. PR Clarify child-workflow conformance evidence scope #128 prevents this install-only pin from being read as behavioral proof. - Sagas: the published runner exercises PHP/Python compensation directions; Rust has a
SagaAPI and unit replay tests, but this runner has no Rust execution shard. This is another applicable published-artifact coverage gap. - Signals/queries: the published runner has an explicit Rust matrix probe; inspect its scenario results rather than inferring coverage from the crate pin.
- Heartbeats: separate PHP, Python, and Rust published-artifact runners exist.
- Nexus: the published runner exercises PHP/Python caller/service directions. The Rust SDK currently has no Nexus API; that is a capability boundary, not a runnable Rust permutation to invent in this experiment.
Next action after PR #128: add real published-artifact Rust child parent/child cells, then Rust saga compensation cells. Keep these separate from the existing PHP/Python passes and do not treat artifact installation as runtime evidence.
- Child workflows: the published runner resolves the Rust crate, but its manifest and runtime probe execute only the 2x2 PHP/Python parent-child matrix. Rust
Merged PR #128 after the shared contract check passed. The public runbook now distinguishes child-workflow Rust artifact resolution from executed PHP/Python runtime cells. The issue remains open for real Rust child and saga published-artifact scenarios and the remaining experiment audit.
Server PR #170 is merged as
91db02448ddacb70b3ea683c57a07962b7fb97b3. It repairs the stale activity conformance runner contract tests: synthetic evidence is exercised in explicit in-process mode, the extracted-source handoff remains separately tested, and local-source rejection asserts current diagnostics. The containerized contract suite passed 44 tests / 617 assertions; the Server PR feature suite and required checks passed. This is test-harness hygiene only, not new SDK runtime coverage. Rust child and saga published-artifact execution, plus the rest of the experiment audit, remain open.Merged PR #130 (
d28c6746208dbb9f8aca0e6294f4f5f16ea03467). The stable conformance runbook now includes the existing published-artifact saga runner and states its actual PHP/Python workflow-compensation coverage. The current manifest and runner do not execute Rust saga handlers; Rust remains uncovered rather than inferred from artifact installation or the playground. Shared contract tests passed. This advances the experiment inventory, not the missing Rust execution cells.Focused published-artifact child-workflow probe (2026-09-24), isolated local Docker stack:
- Artifact tuple: durableworkflow/server:2.3.14 (bundled Workflow 2.0.16), PHP SDK 2.0.11, Python SDK 2.0.0, Rust SDK 2.0.7, dw 2.0.0. Server/DB/Redis came from the sample-app playground Compose stack; workers and client ran from the published sample-app dev image with disposable local credentials. No Cloud/customer namespace was used.
- Rust parent to Rust child: completed; parent run 01m38ewm5323gdfnefvnrnqyxw.
- Rust parent to Python child: completed; parent run 01m38f3xfn6gm4fpx62rgwg568.
- Python parent to Rust child: completed; parent run 01m38f8pnh5ctpjq60ycsyq2b1.
- Rust parent to PHP child: completed; parent run 01m38fcnd93dwg5egnzhq0aqkf.
- PHP parent to Rust child: completed; parent run 01m38fcyr0r563sh9hdy66mqny.
Each returned the expected child language and input. For all five, persisted parent history contained StartAccepted, WorkflowStarted, ChildWorkflowScheduled, ChildRunStarted, ChildRunCompleted, WorkflowCompleted in that order; child runs completed. The PHP/Python-only directions remain covered by the existing published runner as noted above.
This is a focused local execution probe, not a claim that the published child runner now executes all nine directions. Remaining work: add these Rust-involving cells to ordinary reproducible public instructions/runner, cover restart/replay and failure/compensation cases, then run the separate Rust saga cells and continue the broader experiment audit. Scratch workers and stack are being removed after this probe.
Merged durable-workflow/sample-app#101 at f843d3b961e1a3a38b3a4c9d610d08bebc734eab. The public polyglot/child-workflows/ example now contains PHP, Python, and Rust workers plus a client that starts all nine parent/child directions and checks result identity and persisted lifecycle history. It reuses the existing Sample App playground and Rust lockfile, with no new conformance coordinator.
Verified local published-artifact run on 2026-09-24 01:34:27-01:34:50 UTC: 9/9 directions completed, zero client failures. Each parent history had WorkflowStarted, ChildWorkflowScheduled, ChildRunStarted, ChildRunCompleted, WorkflowCompleted in order. Exact tuple: Server 2.3.14 (bundled Workflow 2.0.16), Waterline 2.0.3, CLI 2.0.0, PHP SDK 2.0.11, Python SDK 2.0.0, Rust SDK 2.0.7. PHP lint and Pint, Python syntax, Rust cargo check --locked, and all Sample App PR checks passed. The disposable local stack, workers, volumes, and scratch files were removed.
Scope remains explicit: the existing Server child-workflows-published-artifacts.sh runner still executes its PHP/Python matrix, not Rust; this Sample App example is a separate executable manual experiment. Restart/replay, failure/cancellation and Rust saga compensation cells remain open under this issue. Next: link the manual matrix from the public conformance runbook and then tackle the Rust saga case.
The public conformance runbook now links the independently executed Sample App child-workflow matrix. Merged #131 at 3ef934b after Shared contract tests passed. The runbook explicitly keeps the Server runner's PHP/Python scenario result separate from the Sample App 9/9 execution result; no Rust pass is inferred from crate installation. Remaining work in this issue: Rust saga/compensation published-artifact execution and the broader experiment inventory, restart/replay and failure coverage.
Rust saga coverage increment shipped: sample-app#102 merged at
5bcc3b78d444a6d9d4023c2f3a2001bfe3441cda; the public conformance runbook now links it (merged41c1df2330804970acb54863a752c18aadf664fb).Focused local published-artifact execution on 2026-09-24 around 02:57-03:00 UTC (exact wall-clock start/finish were not captured, so this is not a complete stable-release record): Server 2.3.14, Waterline 2.0.3, PHP SDK 2.0.11, Python SDK 2.0.0, Rust SDK 2.0.7. The Rust workflow ran three cases with Rust, PHP and Python compensation workers, twice. The stricter second run passed 3/3: planned decline had
ActivityFailed; both forward activities and both reverse-order compensation activities hadActivityCompleted; workflow completed with expected result. No Cloud/customer namespace was used. Rustcargo check --locked, PHP lint/Pint, Python syntax and all Sample App PR checks passed. The disposable local stack and workers were removed. Rust formatting was not checked because the prepared image lacks cargo-fmt.This is separate from the Server saga runner PHP/Python matrix and does not qualify external business side effects, restart/replay, duplicate delivery, compensation failure, or PHP/Python workflow with Rust compensation. Next experiment should exercise those inverse directions and restart/replay before claiming full SDK saga parity. The broader experiment inventory in this issue remains open.
Rust-involving saga coverage update (pass, 2026-09-24 03:17:05-03:18:07 UTC): Sample App #103, merged runner commit
9206e513632c483ac63a4c98b724f74e02ed7bdc; conformance guide #133. A disposable local published-artifact stack completed 5/5 directions: Rust workflow -> Rust/PHP/Python compensation, PHP workflow -> Rust compensation, Python workflow -> Rust compensation. Each checked the intentional decline asActivityFailed, both reserves and reverse-order compensations as persistedActivityCompleted, andWorkflowCompletedwith the expected result. No customer namespace was used; task-owned workers, Compose services, volumes, and network were removed.Tuple: Server image
durableworkflow/server:2.3.14(bundled Workflow2.0.16), Waterline imagedurableworkflow/waterline:2.0.3, prepared Sample App CLI2.0.0, PHP SDK2.0.11, Python SDK2.0.0, Rust crate2.0.7. Command shape: start isolated published Server/Waterline stack withPLAYGROUND_COMPOSE_PROJECT=sample-app-saga-inverse scripts/playground rust; launchpolyglot/rust_workersaga binary pluspolyglot/sagas/php_worker.phpandpython_worker.py, then runpolyglot/sagas/client.pywith disposable runtime URL, namespace, queue, and tokens. The separate Server runner still contains only PHP/Python saga cells. Worker restart, duplicate delivery, and compensation failure are not proven by this run and remain open inventory work.Rust saga restart increment (pass, 2026-09-24 approximately 03:56-04:00 UTC): Sample App #104, tested source commit
6062c3f02b54563e3cdfe85acdf4bda7b04c4a86, merged asdc657d023f46c98870acbc9919c306c273c12ae2; guide #134. Exact second-level start/finish times were not retained; future manually run failure-mode checks should capture them before removing the stack.Tuple: published Server image
durableworkflow/server:2.3.14(bundled Workflow2.0.16), Waterline imagedurableworkflow/waterline:2.0.3, prepared CLI2.0.0, PHP SDK2.0.11, Python SDK2.0.0, Rust SDK2.0.7. Disposable Compose projectsample-app-saga-restart, namespacedefault, queuesample-app-saga-restart. Command sequence: startsaga_compensation_worker; runpython polyglot/sagas/restart_client.py start; stop the first Rust worker process afterActivityCompleted(reserve-first)andSignalWaitOpened; runrestart_client.py signal <workflow-id>with no Rust worker present; start a new Rust worker process; runrestart_client.py verify <workflow-id>. First/new worker host process IDs differed (501160->507206). Run ID01m38s09gd35hj9pgf9e52xdbdcompleted with exactly one persisted signal wait and receipt, the expected five scheduled activities with no duplicate first reserve, one planned decline failure, four completed reserve/compensation activities in expected order, andWorkflowCompleted. Task-owned containers, network, and volumes were removed. This proves one Rust-workflow/Rust-compensation cold-replay direction; cross-language restarts, process loss during activity side effects, duplicate delivery, and compensation failure remain unproven.Rust-parent saga restart matrix expanded and executed (2026-09-24 07:44:20-07:48:02 UTC). Sample App #105 merged as
416b39a9216f5497e1504d2f61344e3a6043f540; tested source commitf50d434. The runner now selects Rust, PHP, or Python compensation with--compensation-runtimeand verifies the selected type, result, and history.Published tuple: Workflow
2.0.16inside Server2.3.14(image digestsha256:252b85fd1e177bc40db9c5dc9a638d5d5c0bc465eab93e1024ebe5c7cd58bbc8), Waterline2.0.3, CLI2.0.0, PHP SDK2.0.11, Python SDK2.0.0, Rust SDK2.0.7. Disposable local Server, namespacedefault, queuesample-app-saga-directions. For each direction:python3 polyglot/sagas/restart_client.py start --compensation-runtime <runtime>; stop the Rust worker;signal <workflow-id>with no Rust worker; start a new Rust process;verify <workflow-id> --compensation-runtime <runtime>. Client/worker credentials were only the disposable playground token.All three passed: Rust-to-PHP run
01m395yq9hz0pkfwvfw6f7hrym, Rust-to-Python01m3961vqkxbzmc87p2edr0ks4, Rust-to-Rust01m3963xt557e4mz0jgp8h3t70. Each history had one persisted signal wait and receipt, no duplicate reserve, the planned decline failure, reverse-order compensation by the selected runtime, andWorkflowCompleted. Separate Rust worker containers/processes spanned each stop/resume; observed host PIDs included 730742, 739384, and 742846. The existing five-direction saga check also passed 5/5 on the same tuple. PR CI passed all ten checks. Task containers, network, and volumes were removed and their absence verified.This covers Rust-parent cold replay before compensation for three runtimes. PHP/Python-parent restarts, interruption during an activity side effect, duplicate delivery, and compensation failure remain unproven; #122 stays open.
PHP- and Python-parent saga restart directions are now implemented and merged in Sample App #106 as
680ce55. Published local tuple: Server 2.3.14 (Workflow 2.0.16), PHP SDK 2.0.11, Python SDK 2.0.0, Rust SDK 2.0.7. PHP parent run01m397pj801ewhvbqwe1wdntrwand Python parent run01m397tdwma5t84bacn29m5f54each persisted the first reserve and condition wait, lost its parent worker, received the signal while that worker was offline, and completed after a fresh parent process with one signal, no duplicate reserve, the planned decline failure, and ordered Rust undo-second/undo-first compensation. The verifier distinguishes PHP/PythonConditionWaitOpenedfrom RustSignalWaitOpened. Existing five-direction saga check passed 5/5 on the same disposable stack; PHP syntax and Python compile passed, and all PR checks passed. Task containers and volumes were removed. This closes the PHP/Python-parent restart gap, not activity-side interruption, duplicate delivery or compensation failure; #122 remains open.Terminal saga-compensation failure increment shipped on 2026-09-24: Sample App #107 merged as
5b5ecf6d6f3e5685a187ae1f6611bba8bdc0f854; conformance runbook #135 merged as08a375d7ddd4c8d4f64a6a443a867ed185876399. Both required check sets passed.Focused published-artifact local execution used Server
2.3.14(Workflow2.0.16), PHP SDK2.0.11, Python SDK2.0.0, Rust SDK2.0.7, an isolated MariaDB/Redis stack, and three registered workers. On the tested sourcecc7c3ea, all five Rust-involving directions passed the new--compensation-failuremode: the planned forward activity andundo-secondeach persistedActivityFailed, noundo-firstwas scheduled, and the workflow ended with persistedSagaCompensationFailedcontaining both failure identities. The default successful compensation client also passed 5/5 on the same tuple. PHP/Python syntax and locked Rust cargo check passed. The stack, workers, volume, network, and build scratch were removed. The manual result is not an automated Server-runner Rust shard.The issue remains open for the broader experiment inventory and failure modes not exercised here, especially process loss during a side effect, duplicate delivery, and real external-effect recovery. The PHP-parent result also exposed that a cross-SDK client should use the persisted
exception_typefor failure-type identity:exception_classcan be a broader runtime class. The experiment now asserts the persisted type and history rather than inferring type from the client class field.Heartbeat inventory finding: the current public conformance row already names focused published-artifact heartbeat runners for PHP, Python, and Rust, plus a shared-server wave. It is incorrect to treat the old PHP/Python-only experiment wording as a missing SDK implementation, or to infer simultaneous cross-SDK visibility from three isolated passes. The local experiment guidance has been aligned to the actual public runner and CLI contract. No product heartbeat capability or new conformance pass is claimed by this documentation correction. Next inventory work should identify categories whose executable runner truly omits a supported SDK or direction, then run that cell with exact published artifacts.
21 remaining items
The new total-deadline case exposed a PHP worker continuity bug, tracked in SDK #106. The published Server preserves the original deadline, fails the original run with the correct cause, and rejects late completion without changing history. PHP SDK 2.2.4 then exits on that expected rejection and cannot take the next queued activity.
SDK PR #107 discards a canonically fenced outcome for the exact original claim and resumes acquisition. Focused regressions prove the same worker takes another task after late completion or late failure, while malformed and unrelated conflicts remain errors. Both positive cases fail against the published Worker. The candidate passes 23 focused tests and static analysis.
The next action is to complete repository qualification, publish patch 2.2.5, and rerun Sample App #163 using that exact published package. The sample and inventory PRs remain drafts until this passes. No Server or other SDK behavior change is needed for this finding.
Sample App PR #163 and coverage PR #166 are merged. The activity command now passes twenty published-package cases.
Workflow → activity Retry Worker SIGKILL Total deadline Retry exhaustion PHP → Rust pass pass pass pass Python → Rust pass pass pass pass Rust → PHP pass pass pass pass Rust → Python pass pass pass pass Rust → Rust pass pass pass pass Run 37807030660, October 8, 2026, 16:13:03–16:25:21 UTC, retains raw claims, histories, deadlines, image identities and cleanup observations in its thirty-day artifact. Qualified head
0d435fec989673cf89d767ef9416da332e93d811, actual runner5af4dd5be6a21d3acf2dbc9ac07ad03a01f15fb6and merged source648d04331b42527d81e8c5f1f9dce82fa41cc662share tree0eaa01ad31c10072fe3d3d7eb84ae68688144e38.The exact tuple uses Workflow 2.5.3, Server 2.5.11, PHP SDK 2.2.5, Python SDK 2.5.0 and Rust SDK 3.4.0. Server index is
sha256:ef1ec35808419da8929d3a334ccb44e7a9fbecf26e6768b5826e1b689768c4d5. Run the existingscripts/resolve-current-artifacts.shassignments followed byscripts/sdk-activity-recovery.sh --result-dir <directory>.Deadline cases expire at the original total boundary after two actual attempts. Exhaustion cases retain the second retryable failure before that boundary. Both preserve the original run and execution, carry the terminal activity cause into one workflow failure, reject late completion without changing history, and produce no third attempt or successful result. Each activity worker takes the following case under the same registration. Physical loss receipts show exit 137, no OOM and distinct replacements. Task services, network and consumer images were removed.
The deadline fixture found and repaired PHP worker continuity in SDK 2.2.5. The affected consumer locks and prepared image publication are complete. Both registries serve index
sha256:a0c6ec4c25c850e5ae3441a8b0f20ae1001eb6f883aebadd8cf15e400d163673, with native anonymous startup passing on both architectures. Website PR #178 is deployed and its live manifest and commands select the qualified versions. The merged branches were deleted.Post-merge update run 37809351501 timed out once waiting for Rust to finish after its completion signal. The isolated second attempt passed on the identical source and tuple. The first failure and successful recheck are retained. Poll 429s appear in the failure log, but their connection to the timeout is not established.
Next action: diagnose that intermittent Rust update completion failure with a focused reproduction. Remaining activity scope includes the four PHP/Python service directions, application progress heartbeats and external side-effect recovery. Keep #122 open.
Sample App #164 landed a bounded Rust update/finish regression and failure diagnostics. Published run 37817302746 passes the existing matrix and ten additional finish cases at
a3993748b9c8ca7666bf91f1e402a334099212ed, using Server2.5.11, PHP SDK2.2.5, Python SDK2.5.0, Rust SDK3.4.0 and Workflow2.5.3. Cleanup finishes at17:38:49 UTC. All normal checks pass.The investigation also established Server #322: ordinary waiting replay acknowledgments can strand a message accepted during the replay's lease. Three controlled HTTP cases fail on the untouched published Server2.5.11 digest
sha256:ef1ec35808419da8929d3a334ccb44e7a9fbecf26e6768b5826e1b689768c4d5, including signal-before-update ordering. Each leaves no delivery task. The isolated reproduction stack is removed.Server #323 fixes the atomic handoff and prepares Server2.5.12. Focused checks pass, including 18 tests/389 assertions after correcting a database-fixture fleet-cache isolation failure exposed by full CI. Full exact-head CI, publication, the same published HTTP cases and PHP/Python/Rust follow-through are next.
The original intermittent Rust snapshot/finish stalls still need direct correlation. These additional passes and the independent Server fix do not close that investigation.
The expanded published update checks exposed two distinct delivery problems, and both now have focused regressions.
- Server 322 is delivered and closed in Server 2.5.12. Three real timer-replay message handoffs pass against the published image. The PHP/Python/Rust update matrix, ten Rust finish cases and required consumer checks pass. Sample App 165, its published native multiarchitecture prepared image and Website 179 are delivered. The live release manifest reports Server 2.5.12.
- Workflow 711 owns the separate buffered signal identity failure captured by the Rust conformance runner. PR 712 is merged after required source checks and the frozen replay regression pass, with matching qualified and merged trees. Full main qualification, Workflow 2.5.4 publication, a pinned Server rebuild and the new published consumer tuple are next. This remains open work.
The original language matrix and worker replacement checks remain intact. The retained runner diagnosis distinguishes accepted work without a delivery task from a delivery whose persisted identity cannot replay. Both findings came from the normal isolated published-artifact experiment.
Workflow #711 is delivered and closed. Workflow 2.5.4 and Server 2.5.13 preserve buffered signal wait identity through the MySQL admission/completion race and cold replay. The corrected published tuple passes all nine PHP/Python/Rust update directions, original and replacement snapshots and ten Rust immediate-finish cases. Post-merge updates also pass. Sample App #166, its native multiarchitecture prepared image and Website #180 are published and independently verified.
The activity recovery gap is next. Sample App #167 adds the four PHP/Python service directions to the existing five Rust-involving directions. Every direction runs retry, activity worker SIGKILL, total deadline expiry and retry exhaustion. The summary rejects missing or duplicate cases and a replacement that conceals worker continuity failure after expiry. The actual thirty-six-case published run is in progress.
Organization #167 updates the public experiment inventory and will merge after that run passes and Sample App #167 lands. Application progress heartbeats and external side-effect recovery remain separate activity work. This audit stays open.
Sample App #167 and organization #167 are merged. The activity recovery command now executes all nine service SDK directions.
Workflow → activity Retry Worker SIGKILL Total deadline Retry exhaustion PHP → PHP pass pass pass pass PHP → Python pass pass pass pass PHP → Rust pass pass pass pass Python → PHP pass pass pass pass Python → Python pass pass pass pass Python → Rust pass pass pass pass Rust → PHP pass pass pass pass Rust → Python pass pass pass pass Rust → Rust pass pass pass pass Published run 37832991918, October 8, 2026, 19:35:14–19:54:42 UTC, passes all 36 cells and 11 focused observer checks. Its thirty-day artifact retains actual claims, histories, deadlines, stale completion receipts, image identities and nine physical kill/replacement records. Every killed activity container exits 137 without OOM and has a distinct replacement.
The exact tuple uses Server 2.5.13, Workflow 2.5.4, PHP SDK 2.2.5, Python SDK 2.5.0 and Rust SDK 3.4.0. Server index is
sha256:1b2be3960f9d820f87abf6ba7ee37687c57c3ec75ec793be3417f7e8baa8b767. Qualified head9b4cfb3569bc1c53bce7d9b5921d54fc9d53dee3, actual runner3c5c886ae48929e8e50b7a0fbd673f97ceb14a2fand merged main497c6d18618b9845f4db5f7f08c52601976457c3have the same tree.The four new PHP/Python directions preserve the same run, execution and total deadline checks as the Rust directions. They reject stale first claims while a retry is live and second claims after terminal failure, without changing history. A worker that observes deadline expiry must take the following exhaustion case under the same registration. The summary rejects the previous partial matrix and missing or duplicate cells.
Use the documented
scripts/resolve-current-artifacts.shassignments, thenscripts/sdk-activity-recovery.sh --result-dir <directory>. Cleanup removed the task stack and consumer images. Merged branches and worktrees are removed. These test changes need no new package release or prepared tool/dependency image.Next activity work is application progress heartbeats, followed by external side-effect recovery with application idempotency or downstream fencing. The experiment audit remains open.
Cooperative requester attribution is delivered through
Sample App #176 and
shared guide #175.Published execution
passes October 9, 01:47:58–01:52:42 UTC, with successful cleanup through 01:52:51.
All five Rust-involving PHP/Python/Rust parent-child directions preserve the
authenticated legacy token requester through cooperative propagation, duplicate
requests, committed delivery and cold cleanup recovery. Five original HTTP 202
requests and five HTTP 200 duplicates actually carry the five forged identity
body fields and eleven headers, while preserving their original identity and
deadline. Root history retains the authenticated actor. Parent/child contexts,
cleanup markers and CLI/API cascade metadata retain that requester and source.
Internal propagation, delivery and cleanup have explicit null audit principals.Three workers have independently inspected SIGKILL exit 137 without OOM and
distinct running replacement containers. All ten original parent/child runs
close as Cancelled once in 15.399–16.577 seconds, before their original 30-second
deadlines. Original delivery, timers, relationships and cleanup outcomes remain
unchanged. Nine completion, five typed failure and five cold-recovery directions
also pass. Thirty-seven distinct focused checks, 76 metadata checks and all 15
normal gates pass. Actual histories, cascade views, receipts and process-loss records
have 30-day hosted retention.Qualified head
edcef7611d9c41389cd9c4a933288b2b68b0f9ff, actual runner
a86a687cdf69b7447f04992460ce863e02e5bd2dand merged Sample App
4427a537e092f9d92c96d2a4867b9186e0e75ccdshare tree
f260d463edecbf0f022ee6e568243bd903daa930. Shared guide merges5d182df
with its tested tree unchanged. Tuple: CLI 2.2.0 / PHP 2.2.6 / Python 2.5.0 /
Rust 3.4.1 / Server 2.5.13 / Waterline 2.3.1 / Workflow 2.5.4. Server index
sha256:1b2be3960f9d820f87abf6ba7ee37687c57c3ec75ec793be3417f7e8baa8b767.
No package release or prepared-image rebuild is required. Completed worktrees
and local/remote branches are removed, with GitHub absence verified.This case uses a published Python cancellation caller and the self-hosted legacy
token. Runtime-token role cooperation, anonymous cooperation, Rust cancellation
clients and rendered Waterline UI remain separate cases. Earlier
actual Rust CLI/Waterline API inspection,
named/anonymous principal checks, credential rotation, activity recovery, external
effects and typed search/cold replay remain delivered.The broader audit stays open. The coverage inventory retains remaining
compatibility-skew and runtime directions. The accepted Simplified Chinese increment is published through
Website #183,
with all eleven guides, five-locale build, normal CI and live desktop/mobile
qualification passing. Chinese word search, English API terms and existing
English/Ukrainian/Spanish/Portuguese search pass. Reference and 1.x pages
identify their English content, with direct English links. The merged branch,
local build and temporary qualification resources are removed.Japanese is also delivered through
Website #184.
All eleven guides, six-locale build, source/main checks, Pages and actual live
desktop/mobile qualification pass. Japanese phrases and English API terms,
all five existing locale searches, canonical/six alternates, complete SDK
programs, fallback/1.x notices and language switching are verified.
The merged branch and temporary qualification resources are removed.French is delivered through
Website #185.
All eleven guides, seven-locale build, source/main checks, Pages37887378868 and
actual live desktop/mobile qualification pass. Accented French/English API
search, all six existing locale searches, canonical/seven alternates, complete
SDK programs, shared artifact values, fallback/1.x notices and language switching
are verified. Cleanup is part of this completed handoff.German is delivered through
Website #186.
All eleven guides, eight-locale build, source/main checks, Pages37891946193 and
actual live desktop/mobile qualification pass. German/English API searches,
all seven existing locale searches, metadata, complete rendered SDK programs,
fallback/1.x notices and language switching are verified.The operator's language-menu feedback is addressed through
Website #187:
English first, followed by native-name order. Source/main checks, Pages37893493146
and actual desktop/mobile order and destination checks pass.
Website #169
is complete. Merged remote branches and temporary qualification resources are removed.The main CI repair in
Workflow #740 is delivered.
Three measured PostgreSQL timing hints distribute the previously overloaded
suites across separate shards. Every discovered feature file remains included.
The full candidate matrix passed before merge, and
main build37896378843
and the actual README badge are passing.
Workflow #739 is complete.
The separate #426 coverage assignment is preserved.The next accepted language work is
Waterline #157,
starting with Spanish operator-interface translation and both embedded/service
qualification. The issue separately owns all six additional interface languages.
Remaining SDK audit cases continue to belong here.Workflow #741 tracks
the embedded PostgreSQL cancellation-reason truncation found in the Server
parity suite. The PHP correction takes priority and is assigned separately from
#426 coverage. Server #325 retains its pending fixture and published differential
qualification, with no competing PHP correction.Server #325 separately
owns the assigned Rust successor and PHP/Rust/embedded differential fixtures.
Coordinate shared-contract changes through its owning record.Waterline #157 is complete through published 2.9.0, including the six additional interface languages and qualified public consumers.
Next here: extend the existing published cooperative-cancellation experiment to PHP/Python/Rust cancellation clients with the documented runtime-token roles and anonymous configuration, then inspect the actual rendered Waterline cascade. Verify authenticated requester attribution, unauthorized-role refusal, resistance to forged identity, original identity/deadline preservation and cold cleanup recovery. Reuse the public runner and current published tuple.
Server #325 retains ownership of native/shared differential fixtures. Coordinate any shared-contract change in its owning record. Waterline #136 retains its separate full cancellation acceptance gate.
The actual cancellation caller/access extension is merged in Sample App #186, source
dcb95b846734d767f833761ae70ac59c330151bc, identical to the qualified PR tree. All 17 PR checks pass, including published children run 38065074579.The unchanged published tuple executes cancellation through all three PHP/Python/Rust clients. Five runtime-token cascades preserve the original operator actor through administrator duplicates, and five anonymous cascades preserve the configured anonymous actor. They finish 20 additional Cancelled runs within their original shared 30-second deadlines, with a maximum measured 17.576 seconds. Actual receipts cover five worker-role 403 refusals and five unauthenticated discovery 401 refusals under forged metadata. Original delivery and cleanup resume after SIGKILL and distinct cold replacements. The five prior legacy cascades and ordinary child/failure/recovery directions also pass.
The official artifact is retained on that run, ID
11674727609, verified SHA-2568b367b72c376bee961af7947d77b1b6cdf6de8b5270d5bfaf50388c12e706d2c. This covers CLI and selected-run API inspection. All nine main workflows pass, including children run 38066795418.The public experiment map is delivered in organization #176, main
16b9297ee667ab402285558a6c7afee8006c4cc8. Next: execute the caller/access family's actual Waterline browser cascade case. The stronger full-cascade gate is organization #136, already complete with 236 published-artifact assertions and rendered Waterline proof. Waterline #136 is the separately completed prefix-links defect. The additional caller/access browser inspection belongs to this audit. Shared Server/PHP/Rust/embedded fixture work remains with Server #325's owner.Connected cancellation browser case delivered
Sample App #194 is merged at
8ef57b2ca80d5ee75f31a1291d6b11417c66036b, tree4a0ad9d048bc0ec1893a8ea62a1df64d1843f6e9. All 18 PR checks and all 20 main checks pass. The earlier #186 actual caller/access API coverage now has the connected published Waterline browser counterpart.Published PR run 38112417086 and independent main run 38114006472 each pass 45 real browser views: parent desktop/mobile and child desktop across the five Rust-involving directions and legacy/operator/anonymous access. Actual HTTP evidence agrees with original SDK/Server cancellation identity, requester, deadline, delivery and cleanup. All 15 PR cascades converge before their original 30-second deadline. Browser time is outside that measurement. No routes or responses are mocked.
This exposed and delivered Waterline #171 in published 2.9.1. The original requester ID is visible alongside its label/source, safely escaped and wrapped on mobile. The official artifact checksum is independently verified. The sample image publication passes both native architectures and public pull/attestation checks, with both registries matching the qualified main image.
Other tuple entries and existing workflows remain frozen. This adds actual rendered evidence to the completed caller/access case. Native Server #325 qualification and SDK major decisions retain their existing owners and gates.
Next general product action: inspect the separately handed-off concurrent SQLite claim/recovery finding, and perform the targeted Sample embedded/Waterline consumer update when the owner publishes Workflow #744's corrected package. The owning records will hold the reproduction and exact published qualification.
The documentation correction is open in .github #178 and Sample #197. The child command already executes the 45 connected Waterline browser views delivered in #194. Its instructions and inventory now describe that scope and retained outputs.
The Nexus audit found a different execution gap in the existing Server host runner.
probePublishedPhpPythonServiceCalls()invokes PHP → Python through the installed PHP SDK, but its Python → PHP cell uses NodeapiRequest()after reflecting Python's API. It assigns caller workflow/run IDs without executing those workflow workers. The required scenario list names only the two cross-language client/service cells, despite two supported caller and service runtimes.The inventory correction distinguishes actual SDK invocation, HTTP probes and workflow execution. Next execution work is to call the installed Python SDK, exercise the supported same-language client/service pairs, and retain async result/failure/cancellation outcomes. Workflow authoring and replay need actual caller workers and histories, separately from these client calls. PHP's service-mode workflow context currently lacks a Nexus operation command, so client invocation must not be described as workflow authoring.
Server implementation scope is being coordinated with #325's owner before edits. Rust Nexus support remains outside the current public SDK scope. This finding does not invalidate the separate child/browser or queue-recovery qualifications.
The browser documentation correction is delivered in .github #178 and Sample #197.
- The inventory merged at
d3f2ebbfaf6e60d572af9a04e988fcabdf5f632a. Its exact qualified tree and normal PR/main contract checks pass. - The child README merged at
df763865ed0db3774dc1fbea685605006fc7f2a5. Its exact qualified tree, all 15 PR checks and all 14 main checks pass, including the published child/browser command. - Both completed remote branches are deleted. Only Markdown changed. Runtime code, tuples and image inputs stay as qualified by the existing implementation.
The next execution correction is Server #393, coordinated with #325's owner. It replaces the Node invocation labeled Python with the installed SDK, exercises four client/service admission pairs and prevents API reflection or independent handler probes from counting as durable workflow execution. Actual published qualification is running. Full Nexus workflow/service outcomes remain unfinished in this audit.
- The inventory merged at
Delivered at
8694aa5679f4402027d3224d25253558bda19071, with the exact reviewed tree. All seven PR checks and six main checks pass, with the prepared-local qualification correctly skipped outside this change's scope.The independent main published run executes all four PHP/Python client and service admission pairs using installed SDKs. Its official artifact independently verifies at 3318203 bytes and SHA-256
8bc66d5b171b64679e4e22824d840a42b4cf4859aafc4709ce27daa01ca6c8f8. Observed calls are accepted with real process IDs, versions, HTTP exchanges, call IDs and caller-indexed rows. Twelve existing checks pass and exactly two full workflow cases remainnot_covered.The inventory is updated in .github #179. PHP SDK #116 records the missing durable PHP workflow authoring path. The next audit work is actual Python caller-worker execution and terminal service results, followed by recovery, failure and cancellation coverage. #122 stays open. No runtime release is needed for this runner correction. The completed remote branch is deleted and verified absent.
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
startedwith 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.
- Python #111: the cross namespace workflow sends its caller namespace to the target catalog and gets
Python SDK PR #113 merged at
aeded98bc64a3537f973a475cd524c4302b564e0, with the exact source tree qualified at4fd246840f6d34dab76333b0697b041f3e5d1f18. All PR and main CI, package, corpus, docs, boundary and integration checks pass. Nexus arguments now use Avro. Oversized arguments use runtime payload upload while the recorded request and existing idempotency input stay unchanged. The merged branch is deleted.Publication and actual installed PHP service verification remain outstanding, so #112 stays open. Target routing is separate PR #114, whose focused request/worker/payload/replay tests pass and full source integration is running. Server #396 passes its source gates and six HTTP transport regressions but is currently closed without merging. Its disposition must be resolved before the dependent Server fix is published.
Next complete routing qualification and the published payload delivery checks. Linked terminal service/caller convergence remains Workflow #753, with the real workflow fixture Server #394 still draft and failing its new completion gate. HTTP admissions do not close that work.
Request
The owner requested an audit of the existing experiments so portable behavior is not tested in just PHP, Python, or Rust by accident. Scheduled after the current Cloud pricing/contact rollout.
Acceptance
GitHub remains the source of truth. Reuse ordinary repository commands and GitHub Actions for public happy paths; maintainers handle exceptions directly.