Skip to content

Parallel child query replay must wait for the parent resolution commit #644

Description

@rmcdaniel

Problem

Parallel child query replay can advance past a child wait using the child's terminal database row before the parent has committed a child resolution event. Single-child replay already honors that parent history boundary. A query can therefore show a completed group or caught child failure that the parent has not durably observed.

Found while extending #426. Eight regression cases fail on unchanged Workflow 2.5.1, covering completed, failed, cancelled and terminated children after scheduling and starting.

Acceptance

  • Parallel queries remain suspended while the parent has scheduling or starting history without a resolution event.
  • Committed parent outcomes restore authored result order and the earliest recorded failure, with the existing authored-order tie break.
  • Fresh repeated queries preserve runtime records and execute no child work.
  • Normal repository checks, a published patch and affected consumers pass.

The fix should align the parallel path with the existing single-child history fence.

Delivery

PR #645 merged at 8b7519d330e517b95d824afa28286e4529fbf0cd. The merged tree matches the fully qualified source tree. Full source checks pass every database and Laravel 9–13 cell. Coverage increases to 63,133 / 70,377 lines (89.70%) with the complete unchanged inventory. The merged remote branch is deleted.

Main checks pass and confirm the same coverage. Workflow 2.5.2 is published at the merged commit. An independent registry-installed project passes all 11 cases with 158 assertions. Published verification passes the package contract and all 16 Laravel 9–13 upgrade cells.

Server #310 merged and ships 2.5.8 at fac053399ee5c1cdc6a150714293019e79053718. The published manifest is sha256:54090ee28b7744361b99561290a55611d2a7e09d6ea1a8851da0f0ed6befa3b5. Both architectures, first-run readiness, source-free Compose, protocol catalog and Helm chart 0.1.145 pass. Installed source HTTP tests pass 5 cases / 129 assertions. Actual HTTP on the untouched published image passes all four terminal-child outcomes, reversed parent resolutions and repeated-query database immutability. The untouched 2.5.7 image reproduces premature completed-child advancement.

Waterline #147 is merged and all main database, Laravel 9–13, frontend, service-image and live-tuple checks pass. Its change is a development qualification pin. Sample App #148 updates both PHP applications and the polyglot image tuple. All PR/main application, Compose and PHP/Python/Rust example checks pass. Published development images pass both architectures, and both main registry channels expose the qualified manifest sha256:816c1213b557e98a87e39a998174f8f063bf1a9f19b2df73b74522c1274da0c0.

Website #171 is deployed. Live release data and rendered installation commands recommend Workflow 2.5.2 and Server 2.5.8. Completed remote branches and test resources are removed.

Published conformance

The published Server supplies the runner at fac053399ee5c1cdc6a150714293019e79053718. From 12:49:50 to 12:55:33 UTC on October 7, all 31 required replay scenarios pass, executing PHP, Python and Rust workers.

Exact tuple: Workflow 2.5.2, Server 2.5.8 at the digest above, CLI 2.1.3, Waterline 2.2.0, PHP SDK 2.2.3, Python SDK 2.4.2 and Rust SDK 3.2.0. Run scripts/conformance/replay-published-artifacts.sh --keep-run-root=1 from that image as UID/GID 1000:1000 with Docker access and the corresponding exact-version environment overrides, then remove the retained scratch directory from the host.

The companion PHP update wait times out once during that run. Its isolated published repeat at 13:05:53–13:06:19 passes all 30 normal SDK assertions with no findings, including update delivery. The timeout remains an intermittent observation. The published child-boundary regressions and every required replay scenario pass.

Activity

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions