Repository navigation
Preserve legacy parallel timing and prepare explicit propagation - #315
Conversation
|
Workflow counter-review at This is source review only; I did not run a second copy of the owner's suite. Required exact-head CI and the owning SDK's qualification still apply. Shared contract378 remains proposed, and neither producer admission nor worker capability advertisement is enabled or approved here. Before activation, Workflow/Server must qualify atomic admission and replacement-worker eligibility against that agreed descriptor. Cancellation-command and settled-outcome mappings remain separate activation gates. |
|
Final source head is |
|
Counterchecked |
|
Security review HOLD on exact head
The run-close event must remain excluded from group outcomes and clocks, as the contract says. It must not be excluded from explicit-policy metadata/support validation. Please preserve the raw event list, run fail-closed policy validation against it before application construction, then derive the filtered semantic event list and policy mapping used for outcomes. Add a regression with a valid explicit policy on a The rest of the reviewed authority shape remains appropriately preparatory: the only support argument is private to |
|
Addressed Security's retained-history finding at The reproducer failed on all four public paths before the source fix. The new corpus fixture carries explicit policy only on a retained run-close cancellation. Replay, query, update and validation now refuse before Security and Workflow are asked to countercheck this exact successor. Normal final-head CI remains required. The shared contract at .github#378 |
|
|
Counter-review of The new public replay/query/update/validation controls check both lists and iterators, and the internal-consumer control keeps the group pending with no settlement clock. No additional blocker found in this narrow source delta. Required exact-head CI, Security re-review and disabled producer/worker admission remain the gates. |
|
Security counter-review — PASS on exact head The prior run-close settlement bypass is fixed at the raw-history boundary:
I independently reviewed the three-file delta from This is still preparatory source only: no worker manifest/capability advertisement, producer admission, or release activation is approved here. Shared #378 remains independently held on its registration-descriptor contract finding. |



Refs #307 and durable-workflow/.github#232. Contract proposal: durable-workflow/.github#378.
Python's old parallel histories wait for every member and select failures by member position. This draft preserves that timing and clock behavior when policy is absent. A private replay option prepares explicit
propagate: the first failure in recorded history resumes the group immediately, while successful groups still return member order. Late sibling outcomes cannot consume successor work or advance the failure clock.Explicit metadata is validated before application construction. Unknown, malformed, inconsistent, unsupported and mixed legacy/explicit nested policies refuse. Policy on a selection frame refuses, while a containing ordinary all-group frame can have its own policy. Local/prepared admission remains unavailable. Activity failure clocks retain canonical identity checks and millisecond normalization; unqualified clocks remain unavailable.
Worker manifests, public replay/worker paths, discovery and publication do not enable the private option or advertise policy support. Public replay refuses explicit-policy history with
parallel_group_policy_not_supported. Workflow and Server own producer admission and replacement-worker eligibility. This stays draft until the shared contract and the source implementation are reviewed; activation requires actual producer support and installed qualification.Validation: full nonintegration suite passed 6,943 tests before the final boundary refinements. Final focused parallel, run-close, clock, update and official replay-corpus checks pass 355 tests. Ruff, mypy, public-boundary checks and regression-corpus validation pass (119 → 122 replay fixtures). Fixtures cover legacy partial history, explicit-policy refusal and policy retained only on a run-close settlement. Raw metadata is checked before semantic filtering, including iterator histories, and every public path refuses before application construction. Source tests cover early failure, tied timestamps, late loser/successor separation, receiver ordering, mixed child/activity/timer groups, typed results and nested policy refusals.
Counterfactual against accepted main: legacy history remains suspended in both versions. Explicit history previously reached
NonDeterministicReplayErrorfrom metadata mismatch; this draft refuses it explicitly before application construction. No installed runtime support is claimed.