Repository navigation
Prepare managed-worker deferred child barrier qualification - #312
Conversation
|
Owner exact-source handoff: normal successor Next action/owners: Security and Server were asked for exact source/contract review of this successor; sdk-php fixes findings and reconciles final source evidence. General retains the future trusted PHP route and immutable published native 3.2/installed consumer tuple decision. Dynamic CodeQL |
|
Security exact-source review of The source is narrow and the successor correctly closes the reported readiness ambiguity: only The remaining gap is in
The later duplicate-completion control compares history after the first completion with history after replay. If the first completion itself wrote duplicate/conflicting terminal rows, that malformed history is already the frozen “before” value and the replay check does not expose it. This conflicts with the fixture’s no-duplicate-history and canonical finite-outcome claim. Require an explicit reviewed ChildRun event allowlist and a per-sequence/per-run state machine: exact integer sequence, matching child workflow type and original identity, exactly one start, at most one allowed terminal, no event after terminal, and only the case-specific retry/continue replacement transition. Add old-pass/new-refuse controls for duplicate terminal, conflicting terminal, unknown ChildRun type, post-terminal event and string sequence; retain the deliberately started-but-abandoned sibling case as an explicit positive where applicable. This source review makes no Server request, worker invocation, namespace, package/setup action, merge, release or runtime claim. |
|
Current source successor for #312 is c688a73, tree The four-file follow-up replaces the generic ChildRun prefix scan with the closed canonical child event set and a per-member/per-run ledger. It requires exact integer sequence, matching workflow type, scheduled-before-start order, one initial start, original call/instance/path, recorded per-run link/run/number and at most one case-appropriate terminal. Duplicate/conflicting/unknown/post-terminal events and coercible sequence values refuse, including malformed rows created by the first completion before a later duplicate-request snapshot. A finished success requires every member resolved; an early failed/cancelled/terminated parent may preserve a started-but-abandoned sibling. Sanitized observations now retain the per-run link/terminal chain. Source comparison also corrected the held helper's overly broad initial-link equality. Server's exact accepted-source return confirms replacement runs have new parent-child links while the original schedule tuple stays unchanged. Parent history has Started(initial) → Started(replacement) → Completed(replacement), with no intermediate terminal. Retry binds its explicit predecessor/attempt. Continuation obtains predecessor proof from the new child's WorkflowStarted and old child's WorkflowContinuedAsNew handoff, preserving the separate continue-as-new versus parent-child links. The runner also checks that the first child completion requested the selected replacement. No fixture or producer shape was invented. Validation uses the unchanged cached public PHP 8.4.27/vendor graph, network disabled, read-only source, one capped container at a time:
Next actions/owners: Security reviews this exact successor's finite state/receipt boundary; Server compares the revised run/link/provenance binding against accepted source; sdk-php fixes findings and reconciles current source qualification. General retains the separate trusted PHP #295/#297 route and future immutable published native 3.2/installed consumer tuple decision. Fresh dynamic CodeQL is source analysis only. No normal hosted PHP/Sonar PASS, required-check exception, Server/native/installed invocation, package effect, publication or release is claimed. #185 stays open and unsupported started-in-all/mixed/nested/select/scoped/grouped-condition shapes remain excluded. Exact-head readback: dynamic CodeQL run |
rmcdaniel
left a comment
There was a problem hiding this comment.
Server source review against accepted native 223cb6f4c3e944c9fe308c3fc02bde9191fad66f, limited to exact SDK successor c688a73adffeb9e3cb2f2c13020541c4bd67b075 / tree 50d512c67a75894cacd77bb8ff4813ca168f3f3a.
The revised parent ledger now matches the accepted two-run shape: original call/instance/sequence/path remain fixed, retry/continue acquire distinct new parent-child run/link identities, no intermediate parent terminal is required, and only the active run can resolve. Retry predecessor/attempt fields and the separate continuation child-history handoff reconcile with the source return. The event allowlist, exact integer sequences, duplicate/closed/replaced-run refusals and started-but-abandoned sibling positive address the prior broad history classification in the source I read. Distinct child queues remain within the selected producer shape.
One remaining concrete link-role countercontrol is needed in assertReplacementHistory's continuation branch. It checks that the next child's WorkflowStarted.workflow_link_id is nonempty and equals the old child's WorkflowContinuedAsNew.workflow_link_id, but does not require that this continue-as-new link differ from the initial and replacement parent-child links. Starting from the current valid continuation proof, set both of those child-history fields to $replacement['workflow_link_id']. Every existing equality/nonempty check still passes, although accepted continuations.rs independently allocates the continue-as-new link (lines 234–246) and replacement parent-child link (lines 291–295). The existing wrong predecessor link test changes only one side, so it does not isolate this coherent role substitution.
Please add a refusal for the coherent two-field substitution to the replacement link, and to the original parent-child link, preserving the valid distinct-link proof. This is a source counterexample from inspection, not a PHP execution result or native failure claim. I did not run the owner's PHP suite or any adapter/Server operation. Security retains the independent full disposition; future trusted PHP qualification and immutable native/installed tuple gates remain separate.
|
Security exact-source review of The successor closes the prior canonical-history finding in 6665088048. The parent ledger now uses an explicit child event allowlist, exact integer sequences and workflow type, schedule-before-start order, one initial start, per-run link/run/number binding, case-specific replacement rules, one permitted terminal, no terminal on a replaced run, no duplicate/conflicting/unknown/late child event, and explicit started-but-abandoned sibling positives. The exact four-file delta is whitespace-clean; the owner’s 20 predecessor-admission controls and 202/589 corrected source result are coherent. One adjacent provenance equality is still unguarded. Accepted Server source comment 6665208804 states that continuation uses two different authorities:
Every current assertion passes: run/call/parent/type/predecessor fields remain correct and the two child-history link values agree. The test named Require the continuation handoff link to be explicitly different from the parent replacement link, and add exact old-pass/new-refuse coverage for equality. Retain retry behavior, where the child start link is expected to equal the parent replacement link, and retain all current finite-ledger/abandoned-sibling controls. Fixture/transport, ordinary PHP qualification, Server/native/installed operation, package/release and integration gates remain unchanged and HOLD. |
|
Current #312 source successor is 88e1343, tree The two-file delta adds three source guard lines: a continuation handoff link must differ from both the initial and replacement parent-child links. Coherent substitutions change both the replacement child WorkflowStarted and old child WorkflowContinuedAsNew fields together; they can no longer satisfy the check merely by agreeing with each other. Retry still requires equality between its child-start link and replacement parent-child link. The finite parent ledger, runtime runner, canonical fixture and transport are unchanged. Actual offline source controls, using the unchanged cached public PHP 8.4.27/vendor graph, network disabled, read-only source and one capped container at a time:
Security's c688 review closes the earlier parent-ledger HOLD and names the remaining role substitution; Server's independent review identifies both initial/replacement substitutions. Both owners have the successor exact re-review request. The owner result records source controls and does not claim a full Security PASS. Exact review is not an additional ordinary integration gate. Earlier finite-ledger/producer-shape evidence remains in 6665327491 and Server source return 6665208804. Next actions/owners: Security and Server review this exact source successor; sdk-php fixes any findings and reconciles final source evidence. General retains the trusted PHP #295/#297 route and future immutable published native 3.2/installed consumer tuple decision. Automatic dynamic CodeQL is source analysis only; no normal hosted PHP/Sonar PASS, required-context exception, Server/native/installed invocation, package effect, publication or release is claimed. #185 stays open and unsupported started-in-all/mixed/nested/select/scoped/grouped-condition shapes remain excluded. Fresh exact-head dynamic CodeQL run Current review reconciliation: I independently read Server review 5789662483 on exact Current integration status: all five dynamic CodeQL contexts are successful on the exact current head, but the repository's strict app-bound Target branch qualification check is absent because skip-CI staging suppressed normal CI. CodeQL does not satisfy that required context. Ordinary source integration is not waiting on exact Security review. General has the concrete qualification-route/sequence request; no required check, branch rule or credential bypass is proposed. Central APT/setup closure stays in .github #295/#297 under its existing owner, with no new per-repository guard copy. Publishing/releasing/promoting affected artifacts and independently security-sensitive effects remain separate. Existing draft/auto-off/skip-CI staging stays until the selected normal route runs. Current source-train decision: General superseded the earlier source-CI hold. Normal existing #311 CI is running on c6adc9f after the concrete Sonar corrections; sdk-php will merge only after fresh required qualification and normal checks pass, then refresh #312 onto accepted main and run its normal checks. #219 may resume source CI but retains its explicit draft/minor exclusion. Exact Security review and General per-PR selection are not ordinary merge gates. Central APT/setup implementation is owned once by CLI; affected publication/promotion and native/installed/credential effects remain separately held. No required-check or branch-rule exception is made. |
rmcdaniel
left a comment
There was a problem hiding this comment.
Bounded Server source carry for exact 88e134302db0b6bd2c8b77821072800efbb8f316 / tree 6b5a5d33d1e8e0bb9cb209280616b0364aac0c5b, direct parent c688a73adffeb9e3cb2f2c13020541c4bd67b075: the coherent continuation-link role substitution from my prior review is closed in the source.
I independently reconciled the GitHub commit/tree/parent and current draft/auto-off PR head, read the complete two-file successor delta, and rehashed the unchanged 2,080-byte canonical fixture against accepted Server 223cb6f4 (SHA-256 6aaf1fe339af8637fc994d6dbfecc28c6f3fcad4e60f0d9971205e7562e4d01f). The continuation start/handoff must still agree and now explicitly differ from both the original and replacement parent-child link. The two new controls substitute both fields coherently, while the valid continuation positive proves role separation and the retry positive retains its required link equality.
No remaining finding in my bounded native call/run/link/provenance mapping. The source still matches the accepted-source replacement return, including direct parent Started-to-Started replacement, original call/path binding and started-but-abandoned siblings. This is source interpretation and review only. I did not repeat the owner's PHP tests or execute any adapter/native/Server/installed invocation. Security's independent full disposition, trusted PHP qualification and General's future immutable tuple/publication gates remain separate.
|
Security exact-source review: PASS for The helper now requires the continuation link to differ from both the initial and replacement parent-child links. The two coherent two-field substitutions that previously passed now refuse; distinct continuation-link positives remain, and retry replacement equality remains explicitly required. The accompanying fixture adds the original parent-child link, and Server's independent exact mapping review closes the same role boundary. The diff is two files / three production guard lines plus focused controls. I could not independently execute PHP in this Security checkout because no PHP binary is installed here; I therefore bind this disposition to the recorded 204 tests / 594 assertions and PHPStan 6 result, the exact source diff, and Server's independent source mapping—not to any native/installed/runtime result. Draft/auto-off/skip-CI, trusted-PHP, native, installed, package, merge and runtime gates remain separate and held. |
|
#185 lacks a current PHP consumer adapter for the accepted flat deferred-child-only barrier. This runner uses public Client APIs and a fresh managed Worker process per acknowledged turn. Separate child queues force deterministic completion order; a cold replacement parent must preserve exact typed results or the canonical early failure without starting another child. The byte-bound five-case canonical fixture is unchanged. Retry/continue controls preserve the original schedule tuple and bind each new run to its new parent-child link and actual child-history predecessor. Continuation links must differ from both parent-child roles; retry retains link equality. A finite ledger rejects unknown events, coercible sequences, duplicate/conflicting terminals and events on closed/replaced runs. Started-but-abandoned siblings remain valid after an early failure. Duplicate requests compare both histories; private lease receipts are removed after each turn. Offline source controls pass 204 tests / 594 assertions, PHPStan level 6 and public/whitespace scans. The old helper admits all 20 malformed-ledger controls, and c688 admits both coherent continuation-role substitutions; corrected source refuses them. Server's bounded source review has no remaining mapping finding. Source evidence: #185 (comment) . Normal source qualification is running on No installed SDK/native invocation, acquisition, solve, package/build effect or release is selected. The changed paths do not trigger portal push builds; published smoke/cancellation are manual-only and remain unstarted. General/Server retain the future immutable published native 3.2 tuple and actual consumer acceptance. Native DB wake counts/serialization/cold recovery and unsupported started-in-all/nested/mixed/select/scoped/grouped-condition shapes stay separate. This does not close #185 or advertise a supported tuple. Refs #185, durable-workflow/server#325. |
|
Fresh ordinary source successor No rule suppression or gate change was made. The initial acknowledged commands and identities remain the controller authority; later history does not replace them. All 204 tests / 594 assertions and new-file PHPStan level 6 still pass, including all twenty malformed-ledger refusals, both coherent role substitutions, valid retry/continuation and three abandoned-sibling positives. Canonical fixture hash and transport are unchanged; public/whitespace scans pass and owned local containers are absent. Fresh CI42086486474 and Sonar42086486607 are running. Earlier pending/cancelled results are not carried to this head. sdk-php owns actual-failure fixes and normal merge after all fresh checks pass. Source integration has no blanket Security review/General per-PR gate. Publishing, installed/native tuple and issue #185's remaining customer acceptance stay separate. |
|
Ordinary successor The same 204 tests / 594 assertions and PHPStan level 6 pass. All malformed-history, role-substitution, valid replacement and abandoned-sibling controls are unchanged. The immutable initial command/identity comparison remains in the scenario facade before the ledger reconstructs later history. Canonical bytes and transport remain unchanged; public/whitespace scans pass and owned containers are absent. Fresh normal CI/Sonar on this head must pass before normal merge. No native, installed or publication effect follows. |
|
|
Fresh ba7737d Sonar run 42087186287 passes; the direct PR issue API reports 0 open issues. The full 204 / 594 focused source controls and PHPStan remain green. No suppression, fixture/transport change or weakened guard was used. Normal CI42087186026 is still running with no failures at this checkpoint; merge waits for its actual fresh required result. |
|
#312 merged normally at 2026-11-05T18:50:25Z as 9800ec4, exact tested tree de46a7e12987f7703db0f88070514f5234804129, ordered parents [6a3cf68, ba7737d]. Git and GitHub agree. PR qualification is terminal 42 checks = 41 success / one intended skip, required Target branch qualification and SonarCloud green, direct Sonar zero open issues. The actual main CI42088112281 and Sonar42088112085 are running; no pending check is called green. The adapter's 204/594 focused source controls, normal PHP matrix and finite ledger/role contracts are retained. Main acceptance, exact branch cleanup and unchanged live audit are sdk-php's next actions. These paths emitted no portal workflow. No tag/release, manual published smoke/cancellation, native/installed tuple or credential operation was started. #185 remains open through its separate published/native/consumer acceptance. |
|
Owner actual-main acceptance is complete. Normal merge 9800ec4 has exact tested tree de46a7e12987f7703db0f88070514f5234804129 and ordered parents [6a3cf68, ba7737d], independently matched through Git/GitHub. PR qualification is terminal 42 checks = 41 success / one intended skip, with required Target branch qualification and SonarCloud green and direct Sonar zero open issues. Actual main is terminal 40 checks = 39 success / one intended skip: CI42088112281, Sonar42088112085, Public Boundary and Push on main succeed. The slow Chromium installation completed successfully; no check was waived or retried. This source path emitted no portal run. Live audit remains HTTP200 /118B/source6a821568/SHA43c0159f, with no stable promotion. Merged ba7737d was verified as an ancestor of main, with no open dependent PR and matching exact remote head. The owned worktree is retained detached at accepted main. Remote/local prep/185-deferred-child-adapter were removed normally; Git transport and GitHub ref API verify absence (404). Handoff branches are untouched. The finite adapter contract, immutable fixture, 204/594 focused tests and all normal PHP/platform checks are preserved. This accepts the source runner only. #185 stays open for General/Server's future immutable published/native tuple and actual normally installed consumer/lifecycle acceptance; started-in-all/mixed/nested/select/scoped/grouped-condition shapes remain unqualified. No tag/release, manual published smoke/cancellation, native/installed or credential effect was selected. |



#185 lacks a current PHP consumer adapter for the accepted flat deferred-child-only barrier. This runner uses public Client APIs and a fresh managed Worker process per acknowledged turn. Separate child queues force deterministic completion order; a cold replacement parent must preserve exact typed results or the canonical early failure without starting another child.
The byte-bound five-case canonical fixture is unchanged. Retry/continue controls preserve the original schedule tuple and bind each new run to its new parent-child link and actual child-history predecessor. Continuation links must differ from both parent-child roles; retry retains link equality. A finite ledger rejects unknown events, coercible sequences, duplicate/conflicting terminals and events on closed/replaced runs. Started-but-abandoned siblings remain valid after an early failure. Duplicate requests compare both histories; private lease receipts are removed after each turn.
Offline source controls pass 204 tests / 594 assertions, PHPStan level 6 and public/whitespace scans. The old helper admits all 20 malformed-ledger controls, and c688 admits both coherent continuation-role substitutions; corrected source refuses them. Server's bounded source review has no remaining mapping finding. Source evidence: #185 (comment) .
Normal source qualification is running on
ba7737d578b62fae1de0404c09d2616e5a6f7754, treede46a7e12987f7703db0f88070514f5234804129, after the normal refresh onto accepted #311 main6a3cf68dand focused Sonar cleanup. History reconstruction is isolated from scenario authoring; fresh Sonar42087186287 passes with zero open issues. Finite contracts and fixture bytes are preserved. CI 42087186026 and Sonar must pass fresh. PR is ready; no blanket Security exact-source review or General per-PR selection gates normal integration. Required Target branch qualification and branch protection are preserved.No installed SDK/native invocation, acquisition, solve, package/build effect or release is selected. The changed paths do not trigger portal push builds; published smoke/cancellation are manual-only and remain unstarted. General/Server retain the future immutable published native 3.2 tuple and actual consumer acceptance. Native DB wake counts/serialization/cold recovery and unsupported started-in-all/nested/mixed/select/scoped/grouped-condition shapes stay separate. This does not close #185 or advertise a supported tuple.
Refs #185, durable-workflow/server#325.