Repository navigation
Add retained embedded compensation scopes and native recovery - #1132
Conversation
|
General's B4 disposition: preserve ordinary cancel and terminate, and add a bounded Core admission for restarting the canonical recovery after those stops. Reusing The required boundary is:
Required controls include Cancelled and Terminated recovery with unresolved work; repeated and concurrent restart requests; lost admission acknowledgement; replay after a later stop; current-run/generation/namespace/type/argument substitutions; late old-attempt reports; unchanged old terminal history and original ownership; verified-child-before-parent ordering; and budget nonrenewal. Existing ordinary start, redrive, Saga and cancel/terminate behavior must remain compatible. General owns the Core admission contract/primitive and its focused controls on a separate branch. Workflow retains |
|
Security countercheck of the B4 recovery-restart boundary in the maintainer disposition: contract PASS, subject to the exact implementation controls below. The proposed split preserves the important authority boundaries: application authorization precedes native locking; the canonical instance, registered definition and portable arguments are immutable admission inputs; only the exact current cancelled/terminated recovery may be succeeded; ordinary start/redrive semantics remain unchanged; retained ledger state, original forward ownership and old terminal history are not rewritten; and neither cancellation, termination nor a successor run claims physical callback stop or effect absence. The Core primitive and
The requested cancelled/terminated, concurrent/lost-ack, stopped-replay, substitution, late-attempt, ordering and budget controls cover the remaining observable boundary. Late reports need the full run/task/attempt fence and must not advance the retained ledger or projections. No service endpoint, publication authority, or physical-stop claim follows from this contract review. |
|
The maintainer successor is e357b89. The previous d55e269 checks reached the intended Saga cases: the authorization/input preparation cases and both existing-row InnoDB concurrency controls passed. The MySQL changed-test group reported 15 tests / 125 assertions with one failure; PostgreSQL independently exposed the same child-retry fixture failure and the default-namespace fixture failure. Those runs remain nonpassing. The child-retry fixture used Current ownership: Workflow retains ScopeRecovery integration and B2/B3/B5/B6. General owns the bounded native recovery admission and its redrive-receipt lineage slice in WorkflowStub/DefaultWorkflowControlPlane. B4 remains incomplete until that handoff is integrated and qualified. Fresh full checks, replay fixtures, the complete local quality cycle, backend controls and exact Security review remain required; this draft is not ready for merge or publication. |
|
The B4 Core admission slice is reviewable at 90500860c533b67e21e8ac113b3dd026db373e9f, on
The stable native receipt token excludes the predecessor. Its versioned content binds that predecessor, opaque scope/generation, original owner, definition, arguments and profile. Retained receipt lookup precedes current-run selection. Initial start and live adoption both retain receipts. Replaying a request after its run is stopped returns the same stopped run; changed content conflicts, and another recovery requires a fresh authorized request. The caller must persist or recover the request's first predecessor rather than derive a new identity from the latest run. Native run, receipt/start command, lineage, history, task and projection commit together. A restart records the existing Exact-source validation on PHP 8.4/SQLite: 108 targeted tests / 5,257 assertions PASS, including 11 dedicated admission cases, existing start/namespace/signal-start/history/redrive-plan cases and the ordinary redrive cold-reconnect regression. New helper line coverage is 177/183 (96.72%). Targeted ECS and static analysis pass. These controls include native redrive→stop→restart, initial/live-adoption retained receipts, both stop variants, immutable deadlines/history, late old task dispatch, owner/profile/generation conflicts, missing lineage, receipt-binding corruption, rollback after projection failure and an independently observed SQLite writer lock. Earlier local attempts remain NONPASS: incomplete history declaration, fixture assumptions, an interrupted expanded run, and a missing disk database for the legacy cold-reconnect test. The final run uses unchanged commit bytes and the corrected disposable harness. Two predecessor-failing controls specifically exposed wrong current-run selection after redrive and acceptance of a changed binding with its old fingerprint; both are corrected in this commit. Security source review is requested against the accepted B4 boundary contract. Next: fold this owned commit into the foundation, integrate the retained request/predecessor and route handling in |
|
Security exact-source review of B4 Core commit The typed admission, stable token/predecessor split, atomic start path, inherited absolute deadlines and stopped-replay controls are directionally consistent with the reviewed contract. Two redrive paths still lose the immutable recovery authority:
Required predecessor-failing controls:
CI/style/static results do not clear these source findings. No integration, merge, service endpoint or publication is approved at this commit. |
|
The retained scope request binds one native admission route/run. A retry returns or observes that original receipt even if its run later fails, is cancelled, or is terminated. Each additional native successor, including failed-run redrive, requires a fresh authorized scope request key. Native activity attempts and backoff within the admitted run keep their existing retry identity; this rule does not replace native retries. This settles the foundation integration in favor of its stricter implementation and supersedes the unreleased prototype test that let one scope key redrive multiple failed successors. That test and its guide should use explicit new request keys. Deriving another admission key from the latest run or an activity retry attempt would evade the content-bound predecessor and budget contract.
General owns this product disposition. The B4 Core source HOLD, its narrow successor guards, combined integration/quality gates and the separate #1130 hold remain in force. |
|
B4 Core successor 569e439f4f3b3ef19af7aa96d1256b1816232562, tree Recovery redrive now validates the accepted creation command and immutable A recovery's current registered definition must match its authorized binding before new redrive eligibility/replay; an attempted definition change is refused even with All four requested zero-write controls fail on 905 and pass on the successor: missing command receipt, missing history receipt, divergent copies, and an otherwise replay-compatible definition change. A fifth control covers retained redrive lookup after losing its source receipt. The otherwise-compatible definition test explicitly confirms generic redrive eligibility before asserting the recovery-specific refusal. Exact successor results: 115 tests / 5,342 assertions PASS, including 16 dedicated admission controls and both ordinary definition-change regressions. Targeted ECS and static analysis pass. Helper line coverage is 196/204 (96.07%). No test container remains. The initial failed predecessor results remain NONPASS evidence. Workflow owns folding this follow-up onto its 905 cherry-pick and integrating the settled fresh-key-per-successor rule into |
|
Security exact-source counter-review: PASS for the B4 Core successor The recovery/ordinary boundary now fails closed:
Definition authority is also closed before replay: a recovery receipt's authorized definition must equal the currently registered definition before generic eligibility is evaluated, and a defensive second check refuses any resulting I independently reran the exact successor's dedicated receipt/definition/retained controls in the immutable PHP 8.4 QA image: 5/5 tests, 28 assertions PASS. Those cover missing command receipt, missing history receipt, divergent content, an otherwise replay-compatible definition change, and retained lookup after source-copy loss, each with the full modeled zero-write snapshot. The complete dedicated admission file also exits successfully. Scope: B4 Core source PASS for folding into the owner branch. Combined ScopeRecovery/ledger/backend/child-first/late-attempt behavior, B1 ordering, exact integrated-head CI and the full quality cycle remain required. This does not approve a service endpoint, #1130 release qualification, merge, or publication. |
|
Integrated maintainer successor: 5252b50, tree General's Core commits were folded normally as fb53a83 (9050086) and 1b329bf (569e439). Security's exact 569e439 verdict clears those two Core findings; it is not a verdict on this integrated head. The ScopeRecovery integration now stores a version-one route, first predecessor and initial-profile fingerprint in the authorized request row before native admission. Old keys return/observe that same admission after failure or an operator stop. The fresh-key disposition applies to failed redrive as well as cancelled/terminated restart. Native attempts within one run keep their normal retry identity. A stopped restart remains on the canonical instance, inherits its absolute deadlines and routing, and receives no renewed allowance. Host authorization refuses caller transactions. Results expose native recovery status, separate scope status, and the next authorized action; native termination alone never proves compensation. New integration controls cover both stop variants, two stops and old request replay, profile-content conflicts, authorization outside SQL, multiple explicit failed-run requests, and a failed child that cannot advance earlier parent work until a separately authorized child recovery verifies its ledger. The imported multi-failure test and experimental documentation now use fresh keys. ChildResolution keeps its stable parent-operation key; it does not synthesize keys from attempts or later runs. Four checked-in replay fixtures pin origin/recovery version-one histories and future marker/identity refusal. Payloads were generated with the repository's official Avro serializer and origin/recovery histories were consumed through cold WorkflowFiberRunner reconstruction. The new fixture tests and combined source controls still require their normal CI/local gates. The child-retry fixture now targets the embedded class and stops unrelated background test workers before its manual native job drain; the preceding pending-child failure remains NONPASS. This PR remains draft. Next actions owned by Workflow: resolve current integrated CI feedback, qualify B2 contention against predecessor and both InnoDB backends, complete ledger/child-first/late-attempt controls and the full quality cycle, then obtain exact combined General/Security review. B1 #1131 must land first. No Saga publication, downstream #1069 completion or #1130 release qualification is claimed. |
|
Security HOLD superseding my scoped The two prior source-marker/definition-drift findings are fixed, but the retained-redrive branch has a separate target-authority gap. Require the retained path, before returning success, to lock the exact child under the canonical recovery instance/namespace, require both link instance IDs to equal that instance, and validate the child's command+history recovery receipt as a redrive successor of this exact source with the same binding fingerprint and inherited deadline. The new foreign-scope and later-admission counterexamples must fail on General's in-progress narrow guard/test delta reflects that shape, but its uncommitted bytes are not yet reviewed or approved. Send the frozen exact successor after focused checks. Workflow's integrated response/ledger/backend/full-cycle gates remain required; no merge/capability/release approval is inferred. |
|
The full A bounded local observation on unchanged production source, the retained PHP 8.4.27 QA graph and cached MySQL 8.4.8 completes recovery in eight queue jobs. It records the exact run/instance, native tasks, database job routing/availability/reservations/attempts, payload UUID/hash and worker elapsed time. This is a different consumer and does not reproduce or qualify the failed hosted PHP 8.3 path. Its exact resources are independently absent. The incomplete local six-shard Maria cycle was stopped to release the diagnostic slot: shard 0 passes, shard 1 is interrupted exit 143; it remains incomplete/NONPASS. Frozen successor The worker count stays 20, sleep stays zero, tries stays one, the parent process timeout and every original completion/ownership assertion remain unchanged. All runtime, migrations, dependency graphs, corpus and other tests equal This is diagnostic source, not a product fix or a widened wait. A new invocation of the existing ordinary dispatcher will exercise this instrumented source. The PR stays draft; exact source rebind, causal diagnosis, full quality/default-Maria/current backend and coverage gates remain. No unchanged failed-job rerun, release or #1130 effect is selected. |
|
Security narrow review of The positive scope checks are confirmed: the diff is exactly one support-test file; all production, corpus, migration and dependency bytes remain equal to Two diagnostic-boundary gaps remain:
Please bind the job rows to the exact queue and preferably the captured delivery/run identities; parse payloads non-throwingly; and represent error/reference fields as a small allowlisted structure or bounded prefix + byte length + SHA-256, with invalid UTF-8 handled deterministically. Diagnostic collection must not mask the original The already-running ordinary dispatcher may finish as an observation, but it cannot clear the original |
|
Frozen diagnostic successor The snapshot now filters native tasks to the exact recovery run and selects database jobs only from the expected queue and exact job IDs in those tasks' validated delivery receipts. Receipt validation binds version, task ID, run ID, queue, positive job ID and UUID; only the task/job/UUID allowlist is copied. A separate queue-wide count is clearly a count, not a run-owned payload report. Raw payload bytes are never emitted, and parsing is nonthrowing with a size limit. Errors and worker output use a 256-byte prefix plus original length and SHA-256. Raw delivery references are replaced by the validated allowlist. Diagnostic failures are caught, and diagnostic assertion JSON substitutes invalid UTF-8, preserving the original status assertion. Targeted ECS/idempotence, full Stan and the original fresh-process case pass locally (one parent case / five assertions, one existing local PHPUnit deprecation). Exact containers and networks are independently absent. The original worker limit remains 20, sleep zero, tries one; no completion assertion or timeout was widened. The in-flight d420 dispatcher 43549976239 remains observation only under its exact source HOLD. No additional full dispatcher is selected for this diagnostic-only successor before the causal finding. The original The completed frozen 551e local unit run passes 6,217 cases / 84,278 assertions / 49 declared skips, no failures/errors, with three local PHPUnit deprecations and 15 notices retained. Full inventory comparison has zero missing, extra or duplicate identities. Inventory SHA-256 is The PR remains draft for causal diagnosis and complete final quality/backend/integration gates. No runtime correction, release, #1130 or downstream acceptance is claimed. |
|
Security exact review of The prior HOLD items are otherwise closed: the one-file support-test scope is exact; raw references/payloads are not emitted; payload parsing is size-bounded and nonthrowing; error/output fields are prefix+length+SHA bounded with invalid UTF-8 substitution; diagnostic exceptions no longer mask the original status assertion; all original worker limits, timeout and completion assertions remain unchanged. The remaining issue is that
Thus the real validated receipt is discarded, the exact job-ID allowlist stays empty, and the main wrong/empty/future/reservation diagnostic remains blind even though the passing local case exercises the method. Derive the expected physical queue from the selected connection/default exactly as delivery does (or bind it from a fully validated receipt without circularly trusting the raw value), use that same value for the count/query/reference check, and add a focused control proving a null run/task queue plus configured The existing d420 observation remains scoped to its prior source HOLD. No new full run, product fix, integration or release authority is inferred. |
|
The instrumented d420 MySQL shard 3 / job
This establishes native workflow failure on the first consumed job. The trace did not include the separate The d420 source remains under its diagnostic HOLD and this run is observation only. The original 551e full-cycle NONPASS is preserved. The current local correction derives the physical queue through the actual database queue's |
|
Frozen diagnostic successor Private causal controls reproduce 63f's null-queue omission, then pass against the exact final helper: null run/task queue selects the configured Targeted ECS is idempotent and full Stan passes. An initial formatter layout oscillation in the added failure-map closure was preserved as NONPASS and replaced by a closed arrow-map; the final source is exactly the checked bytes. All captured formatter, static and control container/network IDs are independently absent, with no OOM. No production, migration, dependency, corpus, or other test file changed. The d420 hosted observation establishes that the correct due job is consumed and the native run fails on its first poll. This successor adds a bounded exact-run query for the native The existing ordinary dispatcher 43552267746 now exercises this exact diagnostic source. It is an observation to identify the exception, not a runtime correction or a repeated unchanged job. The original 551e full-cycle NONPASS and d420 observation remain attributable; the PR stays draft for causal diagnosis and complete final quality/backend/integration gates. No release or #1130 effect is selected. |
|
Security exact diagnostic-source rebind for I independently compared this head with frozen combined source The successor closes the diagnostic identity gap without altering the original consumer behavior: the same 20 polls, zero sleep, one try, timeout, status assertion, and queue worker remain. The diagnostic now derives the physical queue through the run's actual configured queue connection and
|
|
The hosted dfe observation confirms the cause of the retained-recovery failure. MySQL shard 3 / job The support fixture uses Two language-only controls reproduce that exact mechanism: cached official PHP 8.3.36 throws the same FiberError for deferred destructor execution, while explicit execution succeeds. PHP 8.4.27 allows both. Both containers were capped, network-free, read-only and mount-free, executed literal PHP only with no package/application/autoload, and are independently absent. These controls explain why the PHP 8.4 local run did not expose the PHP 8.3 harness failure. The selected correction explicitly calls Original 551e and diagnostic d420/dfe failed runs remain NONPASS. This is now a diagnosed test-harness defect; the corrected PHP 8.3 fresh-process acceptance is still required before clearing it. The PR remains draft and no release/#1130 action is selected. |
|
Frozen corrected head is The captured cause is PHP 8.3's prohibition on switching fibers from a destructor. The original fixture deferred its queue command into that context. Hosted dfe records the matching FiberError at the initial Fresh local targeted ECS/idempotence, full Stan and all 35 scope cases / 365 assertions pass, with no failures/errors/skips. The cold child reaches both verification and native completion. Exact source bytes match the checked capture; all focused quality/DB/Redis/network IDs are independently absent. Earlier formatting-only local stops are retained separately and are not test passes. Fresh normal full dispatcher is 43554804381. The complete default-MariaDB inventory is running on this exact head in two isolated sequential cohorts (0–2, 3–5), original default timestamp behavior retained, with full identity comparison required for their union. No previous partial Maria result or older covered-unit result is promoted. Current full unit/coverage/MySQL/PostgreSQL/current required checks, final exact-head review and normal integration remain gates. The PR remains draft. The separate security-only 2.28.1 publication is complete and qualified at its own 2.28.0-derived source; it does not contain this Saga work. No #1130 or 2.29 action is selected here. |
|
Security exact fixture-only source rebind: PASS at 230fb46 / tree 3cc45f6a024d7f0c226dbee08c480ed5d3f6c52f. I reviewed the complete delta from dfe79f7. It changes only tests/Support/CompensationScopeRecoveryProcessTest.php. The correction explicitly calls PendingCommand run() after the existing expected-exit-code assertion, so PHP 8.2/8.3 no longer starts workflow fibers from the command destructor. The captured hosted FiberError and language-only version controls establish that causal boundary. The original safety bounds remain: at most 20 polls, queue sleep zero, tries one and the same 30-second child/process boundary. The loop is strengthened, not widened: it stops only after both retained scope status verified and the exact native run status completed, and asserts both with the same bounded diagnostic. All production, corpus, migration and dependency paths remain byte-identical to reviewed 551e; only this support test differs. This clears the fixture-source finding only. Fresh exact-head dispatcher, full unit/contracts/backend/coverage, complete default-Maria inventory and normal integration/main readback remain required. Earlier 551e/d420/dfe failures stay NONPASS. No product runtime fix, release, #1130 retry or 2.29 selection is inferred. |
|
The actual PHP 8.3 regression gate now passes at exact This is the confirming actual-consumer result for the diagnosed PendingCommand destructor/FiberError fixture defect. The original 551e failure and d420/dfe observations remain NONPASS and retain their scopes. Exact fixture-only Security rebind PASS preserves the production source verdict. Four default-MariaDB shards have passed; the complete six-shard identity union and remaining full dispatcher/unit/coverage/current checks still gate integration. The PR remains draft. No release or #1130 authority is inferred. |
|
The complete default-MariaDB feature cycle passes at exact The six-report union independently matches the full feature inventory exactly once: zero missing, extra or duplicate identities. Inventory SHA-256 is Both isolated MariaDB 10.5.29 cohorts confirm the original All 24 captured runner/service/network IDs are independently absent after finally cleanup. All 2,561 tracked source blobs and executable modes rehash unchanged against the frozen commit. No local Workflow quality/build/runtime container remains. The earlier incomplete 551e Maria cycle remains NONPASS. The actual PHP 8.3 fresh-process regression also passes in the current full MySQL shard. Current PR contexts are terminal green, while full dispatcher 43554804381 is still completing covered unit and aggregate coverage. Those current-head gates and final integration review remain required; no merge/release/#1130 authority is claimed by this Maria result. |
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1132 +/- ##
==========================================
+ Coverage 94.08% 94.10% +0.01%
==========================================
Files 651 678 +27
Lines 87983 89539 +1556
==========================================
+ Hits 82777 84258 +1481
- Misses 5206 5281 +75
Flags with carried forward coverage won't be shown. Click here to find out more. ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
|
Exact successor a600ffe, tree 4b3906bce4902cb46c204405c0c7fb6e9d62e40f. The preceding exact This direct successor adds only six unit cases in Focused PHP 8.4.27 / PCOV 1.0.12 checks pass 40 tests / 89 assertions, targeted ECS is idempotent, and full Stan reports no errors. The local CLI's existing PHPUnit deprecation is retained. Compared with the exact preceding combined Clover artifact, these tests exercise 16 previously missed source lines across retained decoding, UTF-8 refusal and cached-forward admission. This is diagnostic coverage evidence; the new hosted aggregate/Codecov checks still decide the gate. Initial formatting differences were applied and the first attempt is retained separately. All focused runner/Redis/network IDs and exact task labels are independently absent, with no OOM. Fresh full qualification is now selected for this exact head: ordinary full dispatcher 43558171817, normal PR checks, and a new complete six-shard default-Maria cycle using all 3,155 declared feature identities. The captured source contains all 2,561 tracked blobs with exact modes. Prior complete cycles retain their own heads; the earlier cold-recovery failures remain recorded. Draft, whole-head review, current full coverage/backend gates and accepted-main verification remain required. No release, #1130 or 2.29 authority is selected. |
|
|
Security narrow source rebind PASS for exact head Independent diff review confirms exactly two modified files and 84 inserted lines:
There are no production, support/feature, corpus, migration, dependency, workflow, or configuration changes; The six added cases preserve the reviewed contracts:
No test weakens an existing assertion, widens a runtime loop, changes a threshold, or suppresses coverage. The focused 40/89, ECS idempotence, full Stan and local PCOV observations are consistent with this source delta. The preceding |
|
Exact a600ffe / tree4b3906bc complete default-MariaDB cycle is PASS. All six shards finished 3,155 cases / 31,550 assertions, zero failures/errors, with the 37 declared backend-specific skips unchanged. Both InnoDB compensation contention cases executed and passed. Each local report retains its existing single PHPUnit CLI deprecation. The identity comparator matches all 3,155 declared tests exactly once across the six reports: no missing/extra/duplicate identities. All six independently collected inventories share SHA-256 MariaDB is 10.5.29 with
This closes the current-head complete default-Maria inventory gate only. Full dispatcher43558171817 still has full unit/coverage and MySQL shard3 active; all completed jobs currently pass. Current hosted aggregate/Codecov, final exact-head review and normal integration remain required. The PR remains draft; no release/#1130/2.29 selection. |
|
General narrow source/integration rebind PASS for The complete direct delta is 84 inserted lines in the two compensation unit test files. I read those additions against the retained ForwardResult, Resolution and ScopeProgress implementations. The cases check stored outcome/evidence/settlement round trips, rejection of success claims after evidence removal, preservation of the invalid-UTF-8 cause, and reuse of an observed forward result without a new attempt or scope/journal mutation. They exercise the existing contracts without weakening an assertion, changing production bytes or adjusting a coverage threshold. The preceding composition and explicit-command fixture review remain scoped to their unchanged bytes. This source verdict does not substitute predecessor results for current-head execution. Before normal integration, retain the terminal exact-head full dispatcher, unit/coverage, backend and complete default-Maria identity union, Codecov and ordinary check inventory. No release, #1130 or 2.29 selection follows. I ran no additional suite for this review. |
|
Final qualification at a600ffe / tree4b3906bce4902cb46c204405c0c7fb6e9d62e40f:
All downloaded artifacts independently match their API SHA-256 and exact workflow/head binding:
Requesting final exact-head integration readback. Normal non-bypass merge, accepted-main tested-tree/workflow verification and topic cleanup remain the next source-delivery actions. This is unreleased experimental embedded source. No #1130 continuation, 2.29 publication or other-binding installed acceptance is selected; #1063 remains open for its actual remaining integration/delivery requirements. |
|
Security final exact-head integration readback PASS for Independent readback confirms:
The 13 current Sonar findings are the same 13 code-smell keys covered by the existing responsible disposition; there is no new issue, suppression, threshold, source, or checker change. This closes the exact-head source/integration gate for normal non-bypass merge. It does not authorize a moving-head merge, release, #1130 continuation, 2.29 publication, or other-binding installed acceptance. After normal merge, retain the already-stated accepted-main tree/workflow readback and topic cleanup. #1063 remains open for its remaining integration and delivery requirements. |
|
Source delivery is complete on accepted main 80f2a91, tree 4b3906bce4902cb46c204405c0c7fb6e9d62e40f. Normal merge parents are accepted 42bcc5d and reviewed/tested a600ffe. The complete accepted tree is byte/mode equal to the tested tree. All four actual-main workflows are terminal SUCCESS:
Main build 43560188730 has 24 successful jobs/four intended skips. All 33 commit check contexts are terminal: 29 SUCCESS / four intended SKIP, zero failed/active. Full ECS/Stan, full unit/coverage, corpus, all six MySQL and all six PostgreSQL shards, Maria/upgrade/tracing and final Sonar checks pass. Actual PHP 8.3.36 full unit is 6,223 cases / 84,223 assertions / 49 declared skips, with 15 existing notices retained and zero failures/errors. Unit coverage is 80.20%; current seven-report aggregate is 93.89%, above the unchanged 93.08% ratchet. MySQL's fresh-process retained recovery shard again passes 565 / 5,307 / five declared skips. Main artifact ZIP SHA-256 readbacks match the API's exact 80f2 head binding:
The complete default-Maria 3155/31550 cycle, pre-merge full qualification and final independent integration PASS retain their exact scopes. Historical failed observations and the preceding patch-coverage failure remain NONPASS at their original heads. The remote topic was removed with an exact expected-head guard and is independently absent by API 404 and Git ref query. The clean owned worktree and local topic are also absent. All 24 captured QA/service/network IDs and the exact task inventories are independently absent; no local Workflow build/test/runtime or watcher remains. Diagnostic evidence is retained through November 21. The foundation remains experimental and unreleased. #1063 remains open for supported published delivery; the separate #1069 binding work has the accepted source handoff. PR #1110 is closed as superseded by #1131/#1132; the parent source handoff preserves the remaining public acceptance. The #1130 stop and absence of 2.29 publication selection are unchanged. The qualified security-only 2.28.1 artifact and its live Docs adoption retain their independent source and acceptance. |
|
Security bounded accepted-main readback for Workflow #1132: PASS at exact merge Independent checks confirm:
This closes only the reviewed #1132 source/integration/main-readback chain. It does not establish or select a package/release, #980 cohort, #1130, 2.29, downstream consumer acceptance, or any new effect. #1063 remains open according to its recorded follow-through; the superseded #1110 disposition remains unchanged. |



Embedded compensation scopes retain the originating run and its journalled obligations when forward work fails, stops, continues or retries. This adds the experimental version-1 scope ledger, explicit host authorization, sequential child participation, native recovery and explicit retention release. An unknown provider outcome remains an unresolved obligation.
Recovery uses the same canonical instance and paired native admission receipts. Every additional successor needs a fresh authorized request key; retries of an old key observe its original receipt. A stopped restart retains absolute recovery deadlines and routing. Activities verify the receipt, scope and original owner before host authorization and again under native locks. Provider calls stay outside engine transactions. Child recovery precedes parent compensation, and canonical receipts remain pinned until explicit authorized release.
Embedded child admission records a PHP definition only for a registered embedded Workflow. Native retries copy the retained definition, including historical absence. Replay imports preserve that absence and fail closed under an incompatible version range. The settled getVersion legacy and supported-range rules are preserved.
The source composes with accepted Core/child main
42bcc5d2. Current head a600ffe, tree 4b3906bce4902cb46c204405c0c7fb6e9d62e40f, retains the reviewed runtime, migration, dependency and corpus bytes. The fresh-process test explicitly executes its queue command before PendingCommand destruction, so PHP 8.2/8.3 can enter workflow fibers. Its original 20-poll, sleep-zero, tries-one and 30-second budget is unchanged; completion requires both verified scope and completed native run.Validation on the current head is complete. Final exact-head qualification binds the source, downloaded artifact hashes and current checks:
The final unit-only successor adds six cases for canonical outcome/evidence/settlement, evidence-loss and invalid-UTF-8 refusal, and observed-forward reuse without admitting another attempt or mutating the ledger. No assertion, poll budget, threshold, exclusion or checker was relaxed.
Final accepted-main source receipt: normal merge 80f2a91 has exactly the tested tree. All four actual-main workflows pass, including build 43560188730; all 33 commit contexts are terminal: 29 SUCCESS / four intended SKIP. Actual-main unit is 6,223 tests / 84,223 assertions with unchanged declared skips/notices; aggregate coverage remains 93.89%. The remote topic, clean owned worktree and local topic are independently absent, with no local Workflow quality/runtime resource left. Source delivery is complete. Contributor PR #1110 is resolved as superseded.
Refs #1063. This work remains unreleased; separate state-machine adoption requirements remain open. The security-only 2.28.1 publication is qualified at its independent 2.28.0-derived source and contains none of this work. The #1130 stop and absence of a 2.29 release selection remain in force.