Repository navigation
Advance the replay clock on consumed scalar child results - #321
Conversation
|
Current source checkpoint: Review reproduced three clock-proof failures on Source controls now pass 100 tests / 155 assertions and PHPStan reports zero errors. The earlier S1448 finding was corrected by separating pure history checks and child lifecycle evidence; both new modules are guarded. Fresh current-head CI and the immutable-base official worker comparison are still pending, owned by sdk-php. No installed/runtime/package/publication acceptance is claimed. |
|
The Successor |
|
|
Normal source integration completed at 2026-11-06T06:00:05Z as The exact PR had 42 terminal checks: 41 success and one intended connected-test skip. PHP 8.4.27 executed 8,134 tests / 85,169 assertions / 56 optional-dependency skips. The immutable-base official worker comparison passed 67→69 fixtures, two revision checks, base fail / candidate pass; direct unresolved PR Sonar issues were zero. sdk-php owns resulting-main CI42171701497, portal preview42171701834, actual-main/source/live preservation and exact merged-branch cleanup. These are still pending; no terminal-main or live deployment acceptance is claimed. The unchanged portal stable-channel gate excludes this unreleased source from deployment. No release/tag, connected/installed/native/runtime/authentication or publisher dispatch follows. |
|
Terminal actual-main/source/preview/live-preservation acceptance is complete for normal merge All 42 resulting-main checks are terminal: 40 success / two intended skips. Main CI42171701497, CodeQL, Public Boundary, Sonar and portal42171701834 passed. The exact PR qualification was 41 success / one intended skip; its official worker comparison proved 67→69 fixtures, two revision checks, base fail / candidate pass. PHP 8.4.27 executed 8,134 tests / 85,169 assertions / 56 optional-dependency skips. Direct unresolved PR Sonar issues were zero. The downloaded Pages preview artifact The clean merged branch was removed only after checking its exact |



Business replay time advances when a scalar child result is consumed. The selected parent ChildRunCompleted/Failed/Cancelled/Terminated event supplies its recorded time. Sequential childWorkflow() and an actually consumed ChildWorkflowHandle::await() terminal use the validated boundary; startChildWorkflow() cannot borrow a future terminal's time.
The clock requires one ChildWorkflowScheduled, an optional single ChildRunStarted, and a unique terminal with matching canonical call/instance/run/type identities and the executor's validated sequence/path. Missing or conflicting identities, duplicate/conflicting/out-of-order rows and changing-run replacement chains preserve legacy outcomes and yield ReplayClockUnavailable. Child closed_at, started-handle time and reused_recorded_at are not substitute authorities. Grouped/scoped/selection clocks and child redrive reuse remain outside this slice.
ReplayClockHistory contains the shared pure field/time checks, while ChildReplayClockEvidence validates the child lifecycle. Both modules are covered by the existing corpus guards. The history index includes every numeric sequence the legacy resolver can claim, then requires strict integer identity on every proof row. This prevents a numeric-string duplicate from disappearing from the clock proof without changing legacy replay resolution.
Validation on source 35d1670:
Maintained Core comparison: WorkflowExecutor 8fd6cb79 resumeChildResolution sends/throws at the parent resolution event.recorded_at; recordChildResolution and ChildRunHistory 006b2bc4 define canonical identities. Rust's accepted table is an independent source reference: durable-workflow/sdk-rust#219 (comment) . PHP uses its own callback/handle controls and actual worker corpus.
Refs durable-workflow/.github#215. No release/version, installed/native/runtime/authentication or publication is selected. Full #215, replacement chains, callback/ordinary-start authority and later signal/group coverage remain open. P0 matching setup/adoption preempts.
Current qualification: CI 42171170431, worker corpus, PHP 8.4. Main source updates build a documentation preview; the unchanged stable-channel gate skips Pages deployment for this unreleased 3.10 source. Published/connected workflows require manual selection and are not dispatched.