Conversation
|
Connected Python/Server source qualification now passes eleven SQLite cases at Python The current default remains protocol 1.19. Explicit source candidate protocol 1.20 now discovers the capability through the same policy used for request admission. Python's normal suite passes 1,618 local tests, Ruff and strict mypy. Server's affected filter passes 145 tests and 5,165 assertions, with Pint passing. Normal Python CI, Server CI and an explicit exact-pair MySQL qualification are running. The candidate run's three supported Python, package, corpus and lint jobs pass. It retains connected JUnit evidence and removes its stack. Next: finish those source gates, then PHP/Rust equivalents, coordinated protocol/specification activation and the exact published service tuple. These source drafts do not authorize a published cooperative capability claim. Completed local task resources are being removed. |
Connected Python qualification completeAt Python Full scenario evidence covers original identity/deadline/one marker, a discarded successful delivery response, real SIGKILL and cold process replacement, local async/synchronous and remote fencing, shutdown grace/expiry, waiting timer, deadline and termination. Local SQLite passes all eleven cases. All local task containers, worktrees, dependencies, proofs and images are removed. Downloaded CI reports and transport files are removed after this handoff. Server's source/corpus CI passes 2,279 tests and 47,800 assertions. MySQL replay/query topology passes. Polling bounded-growth smoke remains running. Both PRs remain drafts and default protocol remains 1.19. Next: PHP/Rust request, delivery, canonical replay and shielded cleanup parity, remaining backend concurrency, coordinated specification/capability activation and the exact published Server/SDK tuple. No published cooperative capability is authorized by these source-only results. |
Remote activity observation qualified at
|
|
The cooperative Server candidate now consumes published Workflow 2.3.1 at Workflow's complete source matrix and all 16 published Laravel/PHP upgrade combinations pass. Server #292 is separately qualifying stable image 2.4.35. A focused ordinary-protocol signal drill reproduces the expired-workflow/older-active-activity defect on published Server 2.4.34 and PHP SDK 2.1.6, so this repair also affects existing service callers. The entire Python candidate CI is dispatched at unchanged Python |
Heartbeat ownership interleaving reproduced and fixed at sourceThe ordinary protocol 1.19 regression fails against unchanged main Observed baseline: {"heartbeat":{"workflow_task_attempt":1,"lease_owner":"original","renewed":true},"replacement_claim":{"workflow_task_attempt":2,"lease_owner":"replacement"}}The same Native task ID was present in both responses. The positive heartbeat therefore identified a claim that no longer owned the task. The fix in #294 head Cooperative cancellation draft #291 carries the same locked renewal, plus the pending observation read inside that transaction, at Normal CI is running for both heads. This source result does not claim a published image or Cloud deployment. Next finish exact-head CI/review, publish Server 2.4.36/Helm 0.1.132 independently of cooperative cancellation and verify the affected published worker cells. Rust coordinator qualification then uses the requalified #291 head. Default protocol 1.19 and ordinary capabilities remain unchanged. |
Published Server 2.4.35 reproduces the ownership defectThe same committed regression ran inside the unchanged published Server image The two actual HTTP kernels reproduce: {"heartbeat_status":200,"heartbeat":{"workflow_task_attempt":1,"lease_owner":"original","renewed":true,"reason":null},"replacement_claim":{"workflow_task_attempt":2,"lease_owner":"replacement"}}Both responses identify the same actual Native task. The unchanged published image therefore fails the ownership assertion, with 16 assertions reached. SQLite clocks and an IPC barrier control the interleaving; the harness does not edit any lease, owner or attempt row. The original full CI result exposed an overly strict test assertion, not a valid positive acknowledgment. PHP 8.3 uses deferred SQLite transactions even when Next complete revised-head CI and review, publish Server 2.4.36, repeat this exact-image regression and verify the published PHP/Python/Rust lifecycle tuple before closing #293. |
…ellation-service # Conflicts: # app/Http/Controllers/Api/WorkerController.php
|
The ordinary-protocol heartbeat ownership fix has shipped independently as Server 2.4.36, and #293 now has exact published before/after regression and published PHP/Python/Rust lifecycle evidence. This draft incorporates merged main at Local formatting and the focused ownership/cancellation cases pass 25 cases and 565 assertions. Exact-head feature CI passes 2,302 cases and 48,041 assertions. Boundary and replay/query checks pass. Polling smoke is still running at this handoff, so no completed all-checks claim is made yet. Next product action remains Rust #55's real claim/heartbeat cancellation carrier, canonical delivery refresh and replay coordinator, including callback ownership, replacement and physical lifetime checks. Candidate Server/Native and per-language connected gates must use the updated exact source tuple before the final published tuple is released. This stable heartbeat patch does not qualify or activate cooperative cancellation. |
|
The updated Server cancellation draft head Rust #55 has advanced to Next action remains connecting that carrier to the Rust delivery/canonical-refresh/replay coordinator, preserving earlier command prefixes and proving committed delivery before application cancellation. The connected language and physical callback lifetime/ownership/replacement gates remain required before cooperative release or activation. Published Native remains Workflow 2.3.1. |
Pending cancellation remains runnable after a command prefixThe real Rust Worker qualification found a missing Server successor. At Server Fixed in Two regression cases cover request before and after claim, two prefix side effects, repeated completion rejection, a different successor owner, delivery at sequence 3, and no leftover runnable task after terminal cancellation. Raw counterfactual on the preceding Server head: Focused protocol suite after the fix: Local feature/Nexus/corpus/OpenAPI run: The local run omits nine external-service cases. Full Server CI supplies those services and is running. Exact-candidate connected qualification is also running for Rust, PHP, and Python. Next: inspect those results, address any remaining actual Worker/recovery failures, then qualify the complete published tuple before activating the capability. This PR remains a draft. Default Worker protocol remains 1.19. |
Current source qualificationServer All current normal gates passed:
Connected source checks use this exact Server commit and published Workflow 2.3.1:
Shared recovery and replay gates and complete published-tuple qualification remain open. This remains a draft. Published artifacts and ordinary Worker defaults remain unchanged. |
Unchanged performance canary rerun passedAttempt 2 of Server Perf run 37105710710 passed all jobs on the same candidate head The first failure and original raw artifact remain retained. Attempt 1 recorded one HTTP 503 Attempt 2 accepted 1,000 synthetic workflow starts and separately verified 20 actual PHP SDK standard workflows, all 20 completed with zero errors, using SDK 2.1.5 on PHP 8.3.35. The synthetic start-admission ratio is not a completed-workflow count. SDK start-to-result latency was p50 2.905571 s, p95 5.802609 s and p99 6.747475 s. All 24 periodic samples were collected, none was unhealthy, peak Server memory was 141.8 MiB, final polling and Server cache keys were zero, and 43 ready tasks remained. The scheduler was deliberately stopped for cache drain. These are canary observations, not a capacity improvement or a complete workflow drain. One unchanged rerun was requested and completed. Keep both observations when evaluating availability variation. A repeat lock-pressure failure warrants investigation against the corresponding stable baseline. This passing canary does not qualify candidate cancellation, the full published mixed-language scenario, or Cloud plans. PR #291 and shared #136 remain open with their customer gates unchanged. Original attempt-2 artifact 11267973502: 22840 bytes, SHA-256 |
Authenticated canonical scope openingServer candidate Default/published protocol remains 1.19. Candidate 1.20 is unfrozen. Scope execution is unadvertised, pending SDK delivery, supervision and replay qualification. With readonly Native Full current Source database qualification and ordinary PR checks are running. Separately, preceding Server Raw evidence: |
Exact Server source and three-database scope qualification passServer The cancellation/prepared-local/source lane passes 210 tests/6772 assertions on each of SQLite/MySQL/PostgreSQL, including all 67 scope admission/opening/prefix cases. The affected regression lane passes 311 tests/3384 assertions. Every lane has zero errors/failures/skips. Original provenance, commands, logs and JUnit are retained below. The separate local prefix proof is retained here. Native's original full Source run detects eight PostgreSQL refusal-test comparisons between an in-memory just-saved model and the database's zero-fraction timestamp representation. Candidate PHP Decode the original Source archive below and verify its SHA-256. 2a882c308f853d70d456fca38c2b658321f983b6605d8a2f924e49394dcf9099 .tmp/cancellation-scope-prefix-20261003T1008/server-ci-proof.tar.xz |
Source scope cursor and PHP replay admission evidenceServer head f92d0a7. Native overlay edb2f4038a4a72d66a393b60699357c8d1aeb979. Exact Source CI37117662396 completed successfully. sqlite/mysql/pgsql.xml each211tests6818assertions, zero errors/failures/skips. affected-regression.xml311/3384, zero errors/failures/skips. All68scope admission/opening cases pass on each database. Server local baseline cursor red is one test/six assertions failing missing lease_owner in the opening receipt. Final local cursor/scope/OpenAPI regression passes89/941. Pint passes. OpenAPI evolution37→38 passes. The first green run expected WorkflowStarted as history event zero, but a legitimate earlier StartAccepted event is first. Its corrected check preserves both start events. The initial OpenAPI CLI attempt omitted the read-only Native overlay mount and failed autoload before validation. It was corrected and the gate passes. Those fixture/runner errors are not product defects or qualified successes. PHP head0c014590aac171f1342b0774c8f6f80f0d69f84d. Replayer rejects current unfrozen canonical scope events and non-root operation membership before constructing/starting the workflow Fiber, through WorkflowClaimAborted and explicit cancellation_scope_execution_not_supported diagnostic naming the PHP worker. Root/historical absence and application payload data remain compatible. It does not implement or advertise scope execution. New17case admission file plus affected replay/cooperative history passes129/340. Complete local SDK suite passes1381/6953, zero errors/failures,30 explicit environment/integration skips. Full PHPStan passes. Current-head connected Source run37118054571 remains pending at retention time. Corrected baseline red has17tests/10assertions,12 errors and3 failures, with the two root/application compatibility cases passing. Existing replay errors occurred only after workflow code was entered, instead of the required pre-execution capability refusal. The first red additionally used an invalid constant workflow fixture for completed Activity history, corrected to replay its actual Activity. The first PHPStan attempt found a misplaced return-shape docblock while adding the guard, corrected before final qualification. No failed run is reported as a pass. All local tools run in ephemeral UID1000:1000 PHP8.4.26 containers using the existing tracked dependency locks, not live Cloud state or a published SDK tuple. Published/default protocol1.19 remains unchanged, candidate1.20 remains unfrozen. Scope authoring, canonical consumer replay, delivery and selective callback supervision remain required. Shared136 and all draft candidate PRs remain open. The separately complete PHP503c409 connected Source CI37116755720 raw archive is permanently retained in SDKPHP91 comments5968474074/4225/4416 with original exact provenance and byte-verified decoded parts. That successful root cascade must not be attributed to the newer0c014590 replay refusal head before its own connected run completes. Raw archive scope-cursor-replay-proof.tar.xz: 53236 bytes. SHA256 5eb1e1bbeb23a31feabc85bf007368955833cfcb39e011184977d047868d2f18. Part 00 of 00–01. Decode parts separately, concatenate and verify. |
Source scope cursor and PHP replay admission evidenceServer head f92d0a7. Native overlay edb2f4038a4a72d66a393b60699357c8d1aeb979. Exact Source CI37117662396 completed successfully. sqlite/mysql/pgsql.xml each211tests6818assertions, zero errors/failures/skips. affected-regression.xml311/3384, zero errors/failures/skips. All68scope admission/opening cases pass on each database. Server local baseline cursor red is one test/six assertions failing missing lease_owner in the opening receipt. Final local cursor/scope/OpenAPI regression passes89/941. Pint passes. OpenAPI evolution37→38 passes. The first green run expected WorkflowStarted as history event zero, but a legitimate earlier StartAccepted event is first. Its corrected check preserves both start events. The initial OpenAPI CLI attempt omitted the read-only Native overlay mount and failed autoload before validation. It was corrected and the gate passes. Those fixture/runner errors are not product defects or qualified successes. PHP head0c014590aac171f1342b0774c8f6f80f0d69f84d. Replayer rejects current unfrozen canonical scope events and non-root operation membership before constructing/starting the workflow Fiber, through WorkflowClaimAborted and explicit cancellation_scope_execution_not_supported diagnostic naming the PHP worker. Root/historical absence and application payload data remain compatible. It does not implement or advertise scope execution. New17case admission file plus affected replay/cooperative history passes129/340. Complete local SDK suite passes1381/6953, zero errors/failures,30 explicit environment/integration skips. Full PHPStan passes. Current-head connected Source run37118054571 remains pending at retention time. Corrected baseline red has17tests/10assertions,12 errors and3 failures, with the two root/application compatibility cases passing. Existing replay errors occurred only after workflow code was entered, instead of the required pre-execution capability refusal. The first red additionally used an invalid constant workflow fixture for completed Activity history, corrected to replay its actual Activity. The first PHPStan attempt found a misplaced return-shape docblock while adding the guard, corrected before final qualification. No failed run is reported as a pass. All local tools run in ephemeral UID1000:1000 PHP8.4.26 containers using the existing tracked dependency locks, not live Cloud state or a published SDK tuple. Published/default protocol1.19 remains unchanged, candidate1.20 remains unfrozen. Scope authoring, canonical consumer replay, delivery and selective callback supervision remain required. Shared136 and all draft candidate PRs remain open. The separately complete PHP503c409 connected Source CI37116755720 raw archive is permanently retained in SDKPHP91 comments5968474074/4225/4416 with original exact provenance and byte-verified decoded parts. That successful root cascade must not be attributed to the newer0c014590 replay refusal head before its own connected run completes. Raw archive scope-cursor-replay-proof.tar.xz: 53236 bytes. SHA256 5eb1e1bbeb23a31feabc85bf007368955833cfcb39e011184977d047868d2f18. Part 01 of 00–01. Decode parts separately, concatenate and verify. |
|
Retained original Source receipt qualification evidence, Server b995b30 and Native 5d66347d3858d43ddb6a4294a43fa5396353fffe. Local SQLite tests 261/7687, focused receipts 50/869, Pint pass. Six regressions fail with only the previous Server controller. This proves authenticated canonical receipt behavior, not physical callback stop or a published scope capability. Archive: local-evidence.tar.xz, 33424 bytes, SHA-256 e0429b02bcaa8632513f80be54cc8ada619bd323714fa53b0b7e9c314473d937. Decode the Base64 block to recover commands, final source, logs and JUnit. |
|
Retained original complete Source CI evidence, part 00 of 00/01. Server b995b30 / Native 5d66347d3858d43ddb6a4294a43fa5396353fffe. Run 37129762804 is successful. Each SQLite/MySQL/PostgreSQL selection passes 261/7687 with zero errors/failures/skips. Affected selection 311/3384. Source qualification only, not released scopes or physical callback exit. Concatenate Base64 blocks in part order and decode ci-evidence.tar.xz, 80680 bytes, SHA-256 eb47178aada9816d5df511a462369419458d1d57ffdd1449e13ead7b47b23ddd. Contains original complete job logs, database JUnit/logs, provenance and final run/job metadata. |
|
Retained original complete Source CI evidence, part 01 of 00/01. Server b995b30 / Native 5d66347d3858d43ddb6a4294a43fa5396353fffe. Run 37129762804 is successful. Each SQLite/MySQL/PostgreSQL selection passes 261/7687 with zero errors/failures/skips. Affected selection 311/3384. Source qualification only, not released scopes or physical callback exit. Concatenate Base64 blocks in part order and decode ci-evidence.tar.xz, 80680 bytes, SHA-256 eb47178aada9816d5df511a462369419458d1d57ffdd1449e13ead7b47b23ddd. Contains original complete job logs, database JUnit/logs, provenance and final run/job metadata. |
Authenticated scoped preparation/recording qualified locallyServer f8749ca, exact Native overlay 5f8b0fb0dfac366b1bdcbeb72b866395348f8f7d, adds authenticated HTTP preparation and delivery-recording routes. They preserve namespace binding, issued cooperative capability and fresh registration checks without holding an outer transaction across the independently committed preparation. Native rechecks the live claim under its own locks.
Complete exact-tuple Source qualification and ordinary locked-package CI are running. Actual callback stops and the published mixed-SDK SIGKILL/cascade proof remain shared #136's gates. Raw XZ tar archive 50824 bytes, SHA256 51b5e5025ac11f22a18ed0f006b3e31092a5633fd23dd163771261f8f421b77f, two ordered base64 parts. It retains exact source patch/commit, unchanged dependency lock/package metadata, tool image identity, reproduction commands and every local log/JUnit, including corrected test expectations and the first empty Pint selection. Join, decode and verify the digest. Part1/2 |
Server scoped preparation/recording local raw evidence, part2/2Server f8749ca, Native5f8b0fb0dfac366b1bdcbeb72b866395348f8f7d. Archive SHA25651b5e5025ac11f22a18ed0f006b3e31092a5633fd23dd163771261f8f421b77f. Part2/2 |
Complete Server scoped preparation/recording source qualificationExact Server f8749ca, Native overlay 5f8b0fb0dfac366b1bdcbeb72b866395348f8f7d, passes complete Source qualification.
The routes authenticate namespace, issued capability and fresh registration without a caller transaction across preparation. Native rechecks live owner/attempt before committing. Pending original-owner stop proof retains the first context, members, boundary and deadline. Canonical acknowledgement permits delivery, while siblings and the hosting claim remain unchanged. Missing actors return explicit diagnostics. The fixtures use real database claims and authenticated HTTP receipts, not physical callback execution or process SIGKILL. Actor dispatch, scoped propagation, SDK authoring/resumption and selective supervision remain unfinished. Default protocol1.19 is unchanged, candidate1.20 remains unfrozen, scope execution stays unadvertised, this PR stays draft and shared #136 remains open for its complete published customer and competitive gates. Raw XZ tar archive 185276 bytes, SHA256 a119e2c71fe6f4bd86f5cf969e5c90fab9eb7a4587269a591d12cd70ac743d72, six ordered base64 parts. It retains complete Source/ordinary/concurrent HTTP/canary logs and metadata, exact source provenance, check results, four original JUnit reports, all database logs, verified case counts/counting script and reproduction commands. Join the blocks, decode and verify the digest. Part1/6 |
Complete Server Source raw evidence, part2/6Server f8749ca, Native5f8b0fb0dfac366b1bdcbeb72b866395348f8f7d. Archive SHA256a119e2c71fe6f4bd86f5cf969e5c90fab9eb7a4587269a591d12cd70ac743d72. Part2/6 |
Complete Server Source raw evidence, part3/6Server f8749ca, Native5f8b0fb0dfac366b1bdcbeb72b866395348f8f7d. Archive SHA256a119e2c71fe6f4bd86f5cf969e5c90fab9eb7a4587269a591d12cd70ac743d72. Part3/6 |
Complete Server Source raw evidence, part4/6Server f8749ca, Native5f8b0fb0dfac366b1bdcbeb72b866395348f8f7d. Archive SHA256a119e2c71fe6f4bd86f5cf969e5c90fab9eb7a4587269a591d12cd70ac743d72. Part4/6 |
Complete Server Source raw evidence, part5/6Server f8749ca, Native5f8b0fb0dfac366b1bdcbeb72b866395348f8f7d. Archive SHA256a119e2c71fe6f4bd86f5cf969e5c90fab9eb7a4587269a591d12cd70ac743d72. Part5/6 |
Complete Server Source raw evidence, part6/6Server f8749ca, Native5f8b0fb0dfac366b1bdcbeb72b866395348f8f7d. Archive SHA256a119e2c71fe6f4bd86f5cf969e5c90fab9eb7a4587269a591d12cd70ac743d72. Part6/6 |
|
Authenticated scoped Activity dispatch is implemented in Native Delivery now revalidates the exact original preparation before effects, dispatches every original direct-scope Activity through its existing policy actor, and records the unchanged policy barrier. Each actor commits independently and rechecks the live claim. Partial progress exposes its committed receipts and retries preserve the original members, request and deadline. WAIT still requires original-owner stop proof. TRY fencing does not assert physical callback exit. Bounded remote ABANDON and natural completion keep their existing semantics. Local focused Server HTTP/schema checks pass: 50 tests / 2,006 assertions. Native local Activity/natural-completion/policy checks pass: 4 tests / 44 assertions. The complete Native pair rerun and full source CI are still running. Restoring only the previous adapter fails the outside-selected-call dispatch regression with one assertion failure and zero errors. Full Native source qualification: https://github.com/durable-workflow/workflow/actions/runs/37145293560 The Server exact-tuple dispatch has been started against the Native commit above. These are candidate-source results, not published-artifact conformance. Protocol 1.20 remains unfrozen and scope execution unadvertised. Timer, child, wait and unshielded-descendant actors still return explicit unavailable diagnostics before Activity effects. The next integration includes those actors and SDK scope resumption/supervision. Shared #136 and both PRs remain open/draft until the complete published cascade and comparative gate pass. |
|
The first ordinary Native MySQL run found two strict retry-receipt comparisons failing because stored database JSON reorders nested scope metadata. Candidate 5a2f7f9c985e0f298412d76e9f88522cb264f8d7 now reconstructs fixed metadata fields and the typed cancellation context from the original receipt. It preserves the stored identity and deadline. Both reproducing MySQL cases pass locally: 2 tests / 43 assertions, zero errors/failures/skips. Source-only result. The first SQLite pair (129/862) and Server HTTP check (50/2006) remain evidence for the preceding 0df3c574 tuple. Full Native source qualification is now https://github.com/durable-workflow/workflow/actions/runs/37145826522. Ordinary PR CI is https://github.com/durable-workflow/workflow/actions/runs/37145820774. Server's exact-tuple qualification has been dispatched again with this Native commit and unchanged Server a9aeb06. The preceding full source attempts were cancelled as superseded by the corrected tuple, and are not full passes. Their completed results and the original failure are retained. Protocol 1.20 remains unfrozen, scope execution unadvertised, shared #136 open, and both PRs draft. |
Scoped child preparation componentNative The delivery barrier also refuses child membership without committed child Focused source checks passed with freshly installed locked dependencies:
The next implementation is the cooperative child actor and original-context |
Implement Server's portion of shared #136. Keep this PR draft through the stronger model, fair competitive qualification and complete published mixed-language cancellation cascade.
Default protocol stays 1.19, candidate 1.20 remains unfrozen, and scope execution is unadvertised. The locked published package baseline is unchanged.
Current paired source
Server 785093f pairs with Native 1cebe1c90bf6d647e61f1c0f09401193cab73040.
Worker OpenAPI document 44 declares the strict seven-field child receipt with original call/run, request-history identity, optional terminal-resolution identity, optional child request identity, recorded policy and readiness. Responses retain partial receipts while a policy barrier is pending. Request acceptance and physical callback exit remain distinct.
HTTP cases cover TRY_CANCEL, WAIT_CANCELLATION_COMPLETED and ABANDON. They verify preparation without child mutation, genuine cooperative delivery, original context/deadline, duplicate identities, canonical terminal resolution for WAIT and the preserved hosting claim.
Native preparation v5 freezes inherited requests and the original unshielded descendant inventory, accepted/conflict identities, root lineage and authority ceilings. Internal activity, timer, wait and child actors now consume immutable references to that original history event. Portable dispatch reconciles direct and inherited receipts without an extra authored position. Timed waits retain atomic timeout fencing. Activity WAIT requires the original owner's stop receipt before parent delivery. Replacement claims preserve receipts and deadlines while denying the old attempt authority.
Cold retry cannot resample preparation, and new shields cannot escape it. An unfinished delivery reserves its authored position. Reuse validates live shape before effects, while recorded replay and existing sibling work continue. A history read after expiry grants no new effect authority.
Context v2 retains scope origin and original root budget separately from narrowed child authority. Cascade inspection bounds metadata and reports unavailable ancestry. Original-context parsing is qualified in PHP, Python and Rust source. Authored SDK scope execution and the response contract remain unfinished gates.
Qualification
Paired source and separate locked-package checks, full Native checks and ordinary Native PR checks pass. Server source is unchanged from its earlier ordinary PR checks.
Normal Actions artifacts retain hosted reports. Useful local raw evidence is retained separately. Local experiment resources are removed. This component makes no published image, SDK conformance or managed rollout claim.
Remaining delivery gates
Qualify already-delivered descendants under independently accepted roots, ancestor requests at authored descendant awaits, mixed membership, SDK authoring/replay/resumption, selective callback supervision, shielding, cleanup-clock helpers and the response contract. Preserve one root identity and original global budget across the tree.
Freeze the specification after consumer qualification. Qualify migration/release paths and the exact PHP/Python/Rust/CLI/Waterline tuple, publish, then demonstrate the cleanup-worker SIGKILL/replay cascade, coherent operator view and fair competitive comparison before closing #136.