Skip to content

Expose replay time after validated condition groups - #336

Merged
rmcdaniel merged 1 commit into
mainfrom
fix/215-condition-group-replay-clock
Nov 6, 2026
Merged

rmcdaniel merged 1 commit into
mainfrom
fix/215-condition-group-replay-clock

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

A persisted condition wait inside an all group currently preserves its result but leaves replayNow() unavailable. Extend the existing group clock fold to consumed condition members, using the same validated physical wait lifecycle as scalar conditions.

Condition openings and terminals must match the authored group path. Maintained Core's timeout writers carry wait identity without parallel metadata, so their complete timer pair remains scalar and must correlate with that proved wait. Definition, occurrence, sequence, resource, duplicate, scope and local-execution checks remain intact. Successful groups retain the existing canonical-millisecond authored-order fold and return the selected member's original precision. This does not qualify physical reopens, selections, reused-prefix groups, unpersisted predicates or an absent ordinary-entry carrier.

PHP8.4.27 currently passes 113 focused condition/child/group clock tests (152 assertions), PHPStan and the new official worker fixture. The unchanged corpus policy passes with 74 to 75 replay fixtures and a real immutable-base worker failure/candidate pass on 588d680. Normal exact-head source checks are running. Existing legacy results, cancellation clocks, group selection and all corpus guards remain unchanged.

Refs durable-workflow/.github#215. No version, published capability, installed/native tuple or release is selected; the separate 3.9 maintenance source and combined-minor gates remain unchanged.

@rmcdaniel rmcdaniel added the agent:sdk-php Work done by the sdk-php repo agent label Nov 6, 2026
@sonarqubecloud

sonarqubecloud Bot commented Nov 6, 2026

Copy link
Copy Markdown

@rmcdaniel

Copy link
Copy Markdown
Member Author

Reviewed exact source head 8b43de2b6ca10997fcacfa8fa2ff95ea7684024b, tree 5866d289cf27566d40cff29a3c7f1544bc398f30, over accepted main 588d680548851dcc998cbeb7e16626bc601dc473.

The six-file change adds condition members to the existing consumed-group clock, reuses the scalar physical wait/resource lifecycle, and binds openings/terminals to the authored path. Timeout rows retain the actual maintained-Core scalar representation and must correlate through sequence, physical wait, definition and timer identities. No authored result/error, legacy replayer selection, cancellation clock, timestamp precedence, numeric fold or existing corpus guard changes. The official worker fixture exercises the existing replayer at both immutable revisions and proves the old unavailable clock against the new precise condition-group time.

All 42 current-head PR contexts are terminal: 41 successes / one intended connected-test skip, including Target branch qualification, the full supported PHP/framework/docs compatibility matrix and Sonar. The provider's PR336 metadata binds both base and target to main and commit 8b43de2; direct quality gate is OK with zero unresolved issues. The unrelated #335 non-main provider restriction is not carried into this result. Local focused113/152 and PHPStan pass; unchanged corpus policy proves74→75 with one actual base-worker fail/candidate pass.

Ordinary integration and actual-main verification/preview/live preservation follow. The initial two malformed path/scope test expectations were corrected to preserve the existing strict exceptions; no production refusal was weakened. Physical grouped reopens, selections, unpersisted predicates, reused-prefix groups, ordinary-entry/context authority and published cross-SDK qualification remain open under central215. No release, installed/native tuple or publisher invocation is selected.

@rmcdaniel
rmcdaniel marked this pull request as ready for review November 6, 2026 20:59
@rmcdaniel
rmcdaniel merged commit 9e7d892 into main Nov 6, 2026
42 checks passed
@rmcdaniel

Copy link
Copy Markdown
Member Author

Source acceptance is complete at merged main 9e7d89201fcdd2eddf11291bd74ba8c7e8727874, with the exact reviewed tree 5866d289cf27566d40cff29a3c7f1544bc398f30 from PR head 8b43de2b6ca10997fcacfa8fa2ff95ea7684024b.

Actual main qualification is terminal: 40 successful checks and two intended skips. CI, Sonar, CodeQL, boundary, and portal preview all succeeded. The source suite passed 8,286 tests / 85,485 assertions; the unchanged corpus grew 74→75 and rejected the actual base worker before accepting the candidate.

Preview artifact 13541190150 has SHA-256 c211260e8943e63ba954ffb71fe3b57b48f5109f83c62d263b1194681ff178fa; its bounded archive contains 455 regular files and all four deployment audit revisions bind the merged SHA. Live docs remain at source 6a821568db5c72983bd3990fe27c7990f092db12 (audit SHA-256 43c0159fc3ee9317a32e644e20d61d47d2fbf64d23194efe7b8e1f2b86514cd1). No docs deployment, release or installed-Server acceptance is claimed. The merged topic branch is no longer needed and is being removed. Remaining #215 tuple/publication gates stay open; SDK P0 #326–#332 retain priority.

@rmcdaniel
rmcdaniel deleted the fix/215-condition-group-replay-clock branch November 6, 2026 21:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

agent:sdk-php Work done by the sdk-php repo agent

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant