Skip to content

fix: expose consumed parallel activity replay time - #223

Merged
rmcdaniel merged 1 commit into
mainfrom
feat/215-parallel-activity-replay-clock
Nov 6, 2026
Merged

rmcdaniel merged 1 commit into
mainfrom
feat/215-parallel-activity-replay-clock

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

After a persisted parallel Activity all resumed Rust workflow code, replay_now() remained unavailable. This source change returns Core's consumed-group time after complete identity validation, preserving existing results and failure selection.

Success folds the actual authored descriptors with Core's rounded-millisecond comparator, keeps the first descriptor on a tie, and returns that member's full recorded precision. Failure keeps Rust's existing selected exception and reconstructs Core milliseconds only when both selectors agree. Conflicting multifailure order stays unavailable under the existing OPEN compatibility proposal. Missing/duplicate lifecycle, execution/type/counter/path ambiguity, unknown time, mixed groups and unsupported precision stay unavailable. A query-specific execution guard preserves Core's lack of successful group-send time, including reconstructed workflow code; later supported scalar boundaries retain their existing rules. No cancellation, history, UUID or wire semantics change.

Offline Rust 1.86 passes 56 focused clock tests and 53 corpus tests, including flat/nested success, actual caught failures, cold replay, millisecond ties/rounding, backward time, future/reuse isolation, ambiguity, pending/empty/mixed groups and real snapshot/reconstructed-query controls. The exact new module guard has 23 passing classification controls with omission/addition proof. A retained PHP 8.4.27 / Carbon 3.15.1 reference measured 17 timestamp vectors; checked-in reference bytes bind the comparator and reconstruction. This is a source reference, not a current native/Core installed-runtime claim. Formatting and the normal warning-free all-target/all-feature build pass. An extra strict Clippy comparison is NONPASS on both unchanged base and candidate with the same 46 existing lint findings; this change introduces none. Original CI 42173938199/a1 passes on exact 3bc747c: 771 unit tests, 53 corpus tests and 85 Python policy tests. The unchanged official consumer proves 72→73 fixtures, related_change=true and one real behavioral negative against immutable base 795cc3e1; codec remains 48→48. Both required checks (Target branch qualification and SonarCloud) are green, with direct Sonar issue inventory zero. All 20 current-head checks are terminal: 18 success/two intended manual worker skips, including all four CodeQL analyses.

Refs durable-workflow/.github#215, accepted group mapping, OPEN failure-order proposal, and immutable Core ce24207ef86856e64f97b939c9aeef9d1fb387c8. Broader producer/query/family/guide/published acceptance remains open. Normal actual-main 3c4f10c6 and all 20 checks are terminal (18 success/two intended skips). The sole automatic Pages run 42174689532/a1, deployment 7593978344 and artifact 13482129156 are accepted, with all 495 files reconciled and 16/16 raw HTTPS matches. Stable API/source remains published 4.12.0. Terminal delivery and cleanup receipt. No package release, new wire or #191/#192 private/operating authority follows.

@sonarqubecloud

sonarqubecloud Bot commented Nov 6, 2026

Copy link
Copy Markdown

@rmcdaniel
rmcdaniel marked this pull request as ready for review November 6, 2026 06:27
@rmcdaniel
rmcdaniel merged commit 3c4f10c into main Nov 6, 2026
20 checks passed
@rmcdaniel
rmcdaniel deleted the feat/215-parallel-activity-replay-clock branch November 6, 2026 06:36
@rmcdaniel

Copy link
Copy Markdown
Member Author

The persisted parallel Activity all SOURCE checkpoint is complete on actual main. Normal merge 3c4f10c68609da57ca7162c109fd59c5496d0cbf has reviewed tree ec38ab7027ef2fe590d89151800e19fd8d8e270a and ordered parents [795cc3e11c4636dcf3f9a12451bf4ce265644765, 3bc747cd05cecbc47c3841193805f1a9490a4a61], independently read back from Git/GitHub.

All 20 actual-main checks are terminal: 18 success/two intended manual worker skips. Original CI 42174689259/a1 and all four CodeQL analyses 42174689197/a1 succeed. Rust 1.86/stable qualification includes 771 unit tests, 53 corpus tests and 85 Python policy tests. The same official consumer proves 72→73 replay fixtures, related_change=true and one genuine behavioral negative against accepted 795cc3e1; codec stays 48→48. Local source controls pass 56 clock tests and 23 exact-module guard omission/addition controls. Current-source Sonar has zero unresolved issues. The optional strict Clippy comparison remains NONPASS on base and candidate with the same 46 existing lint findings; the normal warning-free all-target/all-feature build passes and no suppression was added.

The 17 measured public PHP/Carbon reference vectors bind actual nearest-ms/half-away-from-zero behavior, including negative epochs and same-ms ties. I independently matched retained Timestamp.php bytes to official Carbon source ce0e5636, SHA-256 57b2a235656f8edad7c333087a64e45491adaaf1b01ac9c40e53185b73db356d. This is bounded source evidence, not an installed Core/native result. Legacy failure ordering, cancellation, APIs, UUID/history and unknown-authority behavior remain intact. Conflicting Core/Rust multifailure selection retains the OPEN compatibility proposal, while grouped query execution stays unavailable under its separate Core authority.

The sole automatic stable-docs follower is complete:

Subject Original accepted identity
Protected Pages run 42174689532/a1, success
Deployment 7593978344, github-pages, success at 2026-11-06T06:30:35Z
Artifact 13482129156, 4,199,710 bytes, SHA-256 dcbb347f561b1c12e3c0d7ea91503c68d4e405c6c0fe9db6b7b73495a27f2c49
Published SDK 4.12.0, approved crate SHA-256 620a8287af73c363dac61f0a91f20971a39f3b8cdc9513fbea85cdbd95a74ba4
Source / tooling Published source 4b2440a5618ccc1c98960ea2e1e62127042c3590; tooling/current main 3c4f10c68609da57ca7162c109fd59c5496d0cbf

All 495 regular-file paths match #222. Only __build.json tooling and Help/Settings' data-current-crate attribute differ (continue_as_new→local_activities); normalization of only those fields proves every remaining byte unchanged. 16/16 anonymous raw HTTPS files match at 06:31:48.527499Z. Published API/examples, presentation/logo/fonts, analytics and canonical status consumer keep their exact prior identities. The unreleased replay_now method remains absent from both published context API pages. No duplicate browser, consumer runtime or SDK release was needed. #216's prior actual-origin/CORS result retains its separate point-in-time scope.

The merged branch is deleted locally/remotely, with remote absence verified. Checkout is clean at actual main; all owned source containers/controllers/stoppers are absent, with borrowed public caches preserved. Bounded sanitized diagnostics are retained for seven days. The next remaining supported source mapping is the already-identified native fired-only condition timeout, following the actual consumed branch and immutable producer fields before implementation. Broader #215 producer/query/family/guide/published acceptance remains open. No wire/producer change, release or #191/#192 private/operating authority follows from this source delivery.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent:sdk-rust Owned by the sdk-rust repository agent

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant