Conversation
|
The required closure scenario is now part of docs/architecture/cooperative-cancellation-model.md: PHP parent, Python child, Rust remote activity and PHP local activity, one root identity and original 30 second deadline, real callback stops without application heartbeats, stale-attempt rejection, workflow-worker SIGKILL, replay and resumed cleanup, stable duplicate requests, all runs Cancelled before the deadline, and one cascade inspection view. This remains an acceptance gate to implement and qualify using published artifacts. Workflow 2.3.3 deadline recovery is merged into this branch as a prerequisite. Shared issue 136 remains open. |
|
Exact source head 50e67c9 passed its PR quality, unit, MySQL feature, replay/counterfactual corpus and build gates. Local focused tests passed 140 cases with 1,726 assertions, and full PHPStan passed without errors. The immutable request context and deterministic original-budget replay foundation are implemented in this draft. Genuine child propagation, operation policies, portable exposure and the required published mixed-language cascade remain open. This is not a shipped model. |
|
Candidate context/propagation foundation is pushed at
Local affected regression checks passed 131 tests / 1,833 assertions, with a fresh SQLite file and zero failures/errors/warnings. ECS and full The PR remains draft. This primitive is not yet wired to automatic delivery/parent-close propagation or per-operation policies. Simultaneous-request database qualification, continuation semantics, portable SDK context, and the cascade API/UI view remain required before publication. The full published mixed-language 30-second SIGKILL/cleanup recovery gate still controls shared issue 136 closure. |
|
Exact-head CI at aa78415 passed: MySQL execution, unit contracts, static/style checks, replay/counterfactual corpus and repository/public-boundary checks. https://github.com/durable-workflow/workflow/actions/runs/36924880935. The PR stays draft for the automatic propagation/policy/SDK/inspection work and required published mixed-language recovery gate. |
|
Implemented candidate child cancellation policies at
Source verification completed:
The portable bridge now reports |
|
Child policy source verification is green at
The temporary Redis dependency and its isolated network were removed after qualification. First-party SDK handling of pending child acknowledgement is now being implemented. This remains candidate source evidence. Full published mixed-language cascade, stronger-model qualification and shared issue 136 closure are still outstanding. |
Parent claims park while child cleanup finishesHolding a parent's workflow claim while awaiting child cancellation could occupy Local source checks:
Native source is |
Next: durable local callback identity and physical stopThe existing remote stop receipt deliberately refuses local activities because Use the existing activity execution/attempt model for the stronger optional The local stop receipt must bind to that original attempt and accepted Expose this through an optional backend interface and explicit source capability. Deterministic budget helpers also need an explicit recorded clock boundary. Next source work is the shared Native preparation/receipt primitive and its |
Local callback stop receipt bound to the original workflow claimSource head: Added The original owner can report after another worker takes over the workflow task. A replacement claim cannot impersonate the original claim. The receipt preserves the original task snapshot, root identity and deadline. It neither changes nor renews the replacement task, activity attempt or cleanup authority. Duplicate reports return the first event. Late reports remain explicitly late. Missing, malformed or post-cancellation preparation is refused. The remote receipt path still refuses local callbacks. The timeline now describes a local receipt's original workflow claim correctly. It does not describe that workflow claim as a cancelled ordinary activity task. Local qualification: PHP 8.3.35, isolated SQLite file and Redis, container UID/GID 1000:1000. The affected portable cancellation, child policy, ordinary local activity, timeline and payload-contract suites pass 144 tests / 865 assertions, zero failures, errors or skips, in 69.432 seconds. ECS and affected PHPStan pass. JUnit SHA256:
The new cases check the saved claim from inside the actual embedded executor's mock callback before requesting cancellation. Its returned result cannot publish. These tests qualify backend authority and evidence. They do not prove that an SDK callback process physically stopped. Commands: Exact-head CI passes quality, unit contracts, regression corpus and MySQL features. The explicit local receipt step passes 14 cases / 190 assertions, with zero skips, in 8.521 seconds. The bounded changed-feature suite passes 77 / 800, plus MySQL smoke 4 / 56. Unit contracts pass 196 / 1,256, and the timeline step passes 71 / 158. Retained MySQL raw JUnit and selection evidence was downloaded and verified. Local-receipt JUnit SHA256 is Next: portable local preparation must acknowledge durable identity before application execution, preserve the authored command prefix and reuse prepared rows at completion. Then expose the optional Server/backend route and qualify actual local supervisors. The required published PHP parent, Python child, Rust remote activity and PHP local activity cascade, actual SIGKILL during cleanup and convergence before the original 30-second deadline remain outstanding. No publication or closure is claimed. Raw local affected-suite JUnit<?xml version="1.0" encoding="UTF-8"?>
<testsuites>
<testsuite name="/evidence/affected.xml" tests="144" assertions="865" errors="0" failures="0" skipped="0" time="69.387166">
<testsuite name="unit" tests="144" assertions="865" errors="0" failures="0" skipped="0" time="69.387166">
<testsuite name="Tests\Feature\V2\V2PortableCancellationDeliveryTest" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" tests="60" assertions="553" errors="0" failures="0" skipped="0" time="50.987076">
<testcase name="testOptionalCooperativeBridgeUsesTheExistingBinding" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="56" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="1" time="12.600108"/>
<testcase name="testPortableChildWaitReleasesItsClaimUntilCanonicalChildCancellationCompletes" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="61" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="22" time="1.395666"/>
<testcase name="testPortableWaitDoesNotTreatATerminalProjectionAsCanonicalAcknowledgement" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="118" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="6" time="0.948876"/>
<testcase name="testPortableChildPolicyRejectsInvalidValuesBeforeCreatingAnyChild" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="147" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="16" time="0.418551"/>
<testcase name="testExistingCustomBridgeDoesNotAcquireCooperativeCapability" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="164" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="2" time="0.113363"/>
<testcase name="testDeliveryWithoutAScheduledCallReservesItsPositionAndPreservesCleanupAuthority" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="173" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="12" time="0.357011"/>
<testcase name="testDeliveryRetryAfterCleanupSubmissionDoesNotCancelCleanupOrChangeIdentity" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="199" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="8" time="0.676056"/>
<testcase name="testParallelDeliveryBeforeSchedulingReservesTheEntireAuthoredRange" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="225" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.554619"/>
<testcase name="testDeliveryRevokesAnOpenActivityAttemptAndRefusesLateCompletion" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="243" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="10" time="0.749914"/>
<testcase name="testDeliveryCancelsTheOriginalTimerAndItsQueuedTask" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="273" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="6" time="0.739202"/>
<testsuite name="Tests\Feature\V2\V2PortableCancellationDeliveryTest::testWorkflowLeaseRecoveryPreservesAnOlderRunningActivity" tests="2" assertions="33" errors="0" failures="0" skipped="0" time="1.786153">
<testcase name="testWorkflowLeaseRecoveryPreservesAnOlderRunningActivity with data set "expired workflow lease"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="294" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="19" time="0.951201"/>
<testcase name="testWorkflowLeaseRecoveryPreservesAnOlderRunningActivity with data set "fresh workflow lease"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="294" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="14" time="0.834953"/>
</testsuite>
<testcase name="testRemoteCallbackStopReceiptIsSeparateFromFencingAndKeepsTheOriginalBudget" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="378" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="28" time="0.956495"/>
<testsuite name="Tests\Feature\V2\V2PortableCancellationDeliveryTest::testRemoteStopReceiptRejectsAnotherOwnerAttemptOrRequest" tests="3" assertions="24" errors="0" failures="0" skipped="0" time="2.310876">
<testcase name="testRemoteStopReceiptRejectsAnotherOwnerAttemptOrRequest with data set "attempt"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="433" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="8" time="0.789709"/>
<testcase name="testRemoteStopReceiptRejectsAnotherOwnerAttemptOrRequest with data set "owner"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="433" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="8" time="0.760586"/>
<testcase name="testRemoteStopReceiptRejectsAnotherOwnerAttemptOrRequest with data set "request"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="433" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="8" time="0.760580"/>
</testsuite>
<testcase name="testMutableCancelledRowsCannotSubstituteForCanonicalCancellationHistory" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="453" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="6" time="0.700265"/>
<testsuite name="Tests\Feature\V2\V2PortableCancellationDeliveryTest::testLegacyOrMalformedCancellationSnapshotCannotAuthorizeAWorkerStopReceipt" tests="2" assertions="14" errors="0" failures="0" skipped="0" time="1.595382">
<testcase name="testLegacyOrMalformedCancellationSnapshotCannotAuthorizeAWorkerStopReceipt with data set "attempt snapshot without identity"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="478" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="7" time="0.809038"/>
<testcase name="testLegacyOrMalformedCancellationSnapshotCannotAuthorizeAWorkerStopReceipt with data set "malformed attempt snapshot"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="478" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="7" time="0.786344"/>
</testsuite>
<testcase name="testLateStopReportRemainsLateAndCannotGrantAnotherCleanupBudget" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="507" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="11" time="0.771423"/>
<testcase name="testRemoteStopReceiptCannotAuthorizeALocalActivityCallback" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="532" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="7" time="0.764814"/>
<testcase name="testLocalStopReceiptKeepsTheOriginalWorkflowClaimAndDoesNotRenewCleanupAuthority" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="550" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="23" time="0.751122"/>
<testcase name="testLocalOriginalOwnerCanReportAfterWorkflowTakeoverButTheReplacementCannotImpersonateIt" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="585" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="27" time="0.819992"/>
<testsuite name="Tests\Feature\V2\V2PortableCancellationDeliveryTest::testLocalStopReceiptRequiresTheClaimSavedBeforeItsCallback" tests="8" assertions="88" errors="0" failures="0" skipped="0" time="5.196257">
<testcase name="testLocalStopReceiptRequiresTheClaimSavedBeforeItsCallback with data set "legacy start without claim"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="651" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="11" time="0.657769"/>
<testcase name="testLocalStopReceiptRequiresTheClaimSavedBeforeItsCallback with data set "malformed claim"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="651" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="11" time="0.651474"/>
<testcase name="testLocalStopReceiptRequiresTheClaimSavedBeforeItsCallback with data set "another task"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="651" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="11" time="0.655920"/>
<testcase name="testLocalStopReceiptRequiresTheClaimSavedBeforeItsCallback with data set "ordinary activity task"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="651" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="11" time="0.658021"/>
<testcase name="testLocalStopReceiptRequiresTheClaimSavedBeforeItsCallback with data set "unclaimed task"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="651" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="11" time="0.646093"/>
<testcase name="testLocalStopReceiptRequiresTheClaimSavedBeforeItsCallback with data set "another original owner"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="651" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="11" time="0.650300"/>
<testcase name="testLocalStopReceiptRequiresTheClaimSavedBeforeItsCallback with data set "missing original attempt"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="651" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="11" time="0.646218"/>
<testcase name="testLocalStopReceiptRequiresTheClaimSavedBeforeItsCallback with data set "nonpositive original attempt"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="651" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="11" time="0.630463"/>
</testsuite>
<testcase name="testLocalStopReceiptCannotBorrowARemoteAttemptOrAnotherCancellationRequest" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="688" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="17" time="1.083465"/>
<testsuite name="Tests\Feature\V2\V2PortableCancellationDeliveryTest::testLocalStopReceiptRejectsAnAbsentOrPostCancellationStart" tests="2" assertions="22" errors="0" failures="0" skipped="0" time="1.283522">
<testcase name="testLocalStopReceiptRejectsAnAbsentOrPostCancellationStart with data set "callback without durable preparation"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="712" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="11" time="0.657499"/>
<testcase name="testLocalStopReceiptRejectsAnAbsentOrPostCancellationStart with data set "post hoc callback start"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="712" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="11" time="0.626023"/>
</testsuite>
<testcase name="testLateLocalReceiptDoesNotRenewTheOriginalDeadlineOrReplacementLease" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="741" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="13" time="0.682531"/>
<testcase name="testARecordedCallCannotBeRelabelledAsADifferentOperation" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="770" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="6" time="0.602392"/>
<testsuite name="Tests\Feature\V2\V2PortableCancellationDeliveryTest::testOpenWaitsCanBeInterruptedWithoutRevokingCleanupAuthority" tests="4" assertions="30" errors="0" failures="0" skipped="0" time="3.001159">
<testcase name="testOpenWaitsCanBeInterruptedWithoutRevokingCleanupAuthority with data set "condition timeout unbounded"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="789" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="7" time="0.733894"/>
<testcase name="testOpenWaitsCanBeInterruptedWithoutRevokingCleanupAuthority with data set "signal timeout unbounded"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="789" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="7" time="0.752840"/>
<testcase name="testOpenWaitsCanBeInterruptedWithoutRevokingCleanupAuthority with data set "condition timeout 300"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="789" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="8" time="0.755899"/>
<testcase name="testOpenWaitsCanBeInterruptedWithoutRevokingCleanupAuthority with data set "signal timeout 300"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="789" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="8" time="0.758526"/>
</testsuite>
<testsuite name="Tests\Feature\V2\V2PortableCancellationDeliveryTest::testRecordedResultsBeforeTheRequestReplayNormally" tests="2" assertions="10" errors="0" failures="0" skipped="0" time="1.385638">
<testcase name="testRecordedResultsBeforeTheRequestReplayNormally with data set "result precedes request"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="830" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.679470"/>
<testcase name="testRecordedResultsBeforeTheRequestReplayNormally with data set "request precedes result"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="830" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.706168"/>
</testsuite>
<testsuite name="Tests\Feature\V2\V2PortableCancellationDeliveryTest::testInvalidDeliveryClaimsDoNotPartiallyApply" tests="9" assertions="45" errors="0" failures="0" skipped="0" time="3.511079">
<testcase name="testInvalidDeliveryClaimsDoNotPartiallyApply with data set "another request"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="869" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.457423"/>
<testcase name="testInvalidDeliveryClaimsDoNotPartiallyApply with data set "future call"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="869" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.379129"/>
<testcase name="testInvalidDeliveryClaimsDoNotPartiallyApply with data set "zero call"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="869" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.379671"/>
<testcase name="testInvalidDeliveryClaimsDoNotPartiallyApply with data set "unknown kind"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="869" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.374346"/>
<testcase name="testInvalidDeliveryClaimsDoNotPartiallyApply with data set "zero range"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="869" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.385176"/>
<testcase name="testInvalidDeliveryClaimsDoNotPartiallyApply with data set "scalar range"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="869" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.388402"/>
<testcase name="testInvalidDeliveryClaimsDoNotPartiallyApply with data set "overflowing range"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="869" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.377773"/>
<testcase name="testInvalidDeliveryClaimsDoNotPartiallyApply with data set "absent selection member"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="869" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.391712"/>
<testcase name="testInvalidDeliveryClaimsDoNotPartiallyApply with data set "selection metadata on scalar"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="869" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.377446"/>
</testsuite>
<testcase name="testDeliveryCannotUseAnExpiredWorkflowLease" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="905" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.403811"/>
<testcase name="testDeadlineExpiryClosesTheOriginalRequestWithoutDeliveringLate" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="920" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="6" time="0.460159"/>
<testsuite name="Tests\Feature\V2\V2PortableCancellationDeliveryTest::testCleanupEndsWithTheOriginalCancellationOutcome" tests="3" assertions="21" errors="0" failures="0" skipped="0" time="1.569867">
<testcase name="testCleanupEndsWithTheOriginalCancellationOutcome with data set "return"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="941" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="7" time="0.516898"/>
<testcase name="testCleanupEndsWithTheOriginalCancellationOutcome with data set "throw"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="941" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="7" time="0.533060"/>
<testcase name="testCleanupEndsWithTheOriginalCancellationOutcome with data set "continue"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="941" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="7" time="0.519909"/>
</testsuite>
<testcase name="testTerminationRevokesCleanupAndCannotBeReplacedByCancellation" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="974" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="8" time="0.535415"/>
<testcase name="testSelectionHandleDeliveryOnlyCancelsTheNamedOpenOperation" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="993" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="5" time="0.652635"/>
<testsuite name="Tests\Feature\V2\V2PortableCancellationDeliveryTest::testRecordedParallelRangeIsCancelledAsOneAuthoredCall" tests="2" assertions="16" errors="0" failures="0" skipped="0" time="1.609256">
<testcase name="testRecordedParallelRangeIsCancelledAsOneAuthoredCall with data set "parallel barrier"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="1016" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="8" time="0.798940"/>
<testcase name="testRecordedParallelRangeIsCancelledAsOneAuthoredCall with data set "selection member range"" file="/work/tests/Feature/V2/V2PortableCancellationDeliveryTest.php" line="1016" class="Tests\Feature\V2\V2PortableCancellationDeliveryTest" classname="Tests.Feature.V2.V2PortableCancellationDeliveryTest" assertions="8" time="0.810317"/>
</testsuite>
</testsuite>
<testsuite name="Tests\Feature\V2\V2ChildCancellationPolicyTest" file="/work/tests/Feature/V2/V2ChildCancellationPolicyTest.php" tests="8" assertions="118" errors="0" failures="0" skipped="0" time="16.337631">
<testcase name="testWaitDefersParentDeliveryUntilChildCleanupHasCanonicalTerminalHistory" file="/work/tests/Feature/V2/V2ChildCancellationPolicyTest.php" line="46" class="Tests\Feature\V2\V2ChildCancellationPolicyTest" classname="Tests.Feature.V2.V2ChildCancellationPolicyTest" assertions="37" time="2.394106"/>
<testcase name="testTryCancelRequestsCooperationButDoesNotWaitForChildCleanup" file="/work/tests/Feature/V2/V2ChildCancellationPolicyTest.php" line="107" class="Tests\Feature\V2\V2ChildCancellationPolicyTest" classname="Tests.Feature.V2.V2ChildCancellationPolicyTest" assertions="13" time="2.150710"/>
<testcase name="testAbandonLeavesChildUntouched" file="/work/tests/Feature/V2/V2ChildCancellationPolicyTest.php" line="128" class="Tests\Feature\V2\V2ChildCancellationPolicyTest" classname="Tests.Feature.V2.V2ChildCancellationPolicyTest" assertions="7" time="1.319716"/>
<testcase name="testMixedParallelWaitFencesActivityButStillWaitsForChildCleanup" file="/work/tests/Feature/V2/V2ChildCancellationPolicyTest.php" line="140" class="Tests\Feature\V2\V2ChildCancellationPolicyTest" classname="Tests.Feature.V2.V2ChildCancellationPolicyTest" assertions="14" time="2.513942"/>
<testcase name="testHistoricalMissingPolicyRemainsAbandonOnColdExecution" file="/work/tests/Feature/V2/V2ChildCancellationPolicyTest.php" line="158" class="Tests\Feature\V2\V2ChildCancellationPolicyTest" classname="Tests.Feature.V2.V2ChildCancellationPolicyTest" assertions="5" time="1.358904"/>
<testcase name="testSelectedChildHandleWaitsAtItsOriginalOperationRange" file="/work/tests/Feature/V2/V2ChildCancellationPolicyTest.php" line="176" class="Tests\Feature\V2\V2ChildCancellationPolicyTest" classname="Tests.Feature.V2.V2ChildCancellationPolicyTest" assertions="15" time="2.498814"/>
<testcase name="testIndependentChildRequestKeepsItsRootAndReportsPropagationConflict" file="/work/tests/Feature/V2/V2ChildCancellationPolicyTest.php" line="198" class="Tests\Feature\V2\V2ChildCancellationPolicyTest" classname="Tests.Feature.V2.V2ChildCancellationPolicyTest" assertions="17" time="2.400740"/>
<testcase name="testWaitingCannotExtendTheOriginalDeadlineWhenChildCleanupDoesNotFinish" file="/work/tests/Feature/V2/V2ChildCancellationPolicyTest.php" line="232" class="Tests\Feature\V2\V2ChildCancellationPolicyTest" classname="Tests.Feature.V2.V2ChildCancellationPolicyTest" assertions="10" time="1.700698"/>
</testsuite>
<testsuite name="Tests\Feature\V2\V2LocalActivityTest" file="/work/tests/Feature/V2/V2LocalActivityTest.php" tests="2" assertions="32" errors="0" failures="0" skipped="0" time="1.517829">
<testcase name="testLocalActivityExecutesInWorkflowTaskAndRecordsMarkedHistory" file="/work/tests/Feature/V2/V2LocalActivityTest.php" line="30" class="Tests\Feature\V2\V2LocalActivityTest" classname="Tests.Feature.V2.V2LocalActivityTest" assertions="27" time="0.878552"/>
<testcase name="testLocalActivityHeartbeatRenewsWorkflowTaskAndRecordsLocalMarker" file="/work/tests/Feature/V2/V2LocalActivityTest.php" line="108" class="Tests\Feature\V2\V2LocalActivityTest" classname="Tests.Feature.V2.V2LocalActivityTest" assertions="5" time="0.639278"/>
</testsuite>
<testsuite name="Tests\Unit\V2\CancellationHistoryTimelineTest" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" tests="71" assertions="158" errors="0" failures="0" skipped="0" time="0.543688">
<testsuite name="Tests\Unit\V2\CancellationHistoryTimelineTest::testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata" tests="68" assertions="136" errors="0" failures="0" skipped="0" time="0.520450">
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "StartAccepted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007885"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "StartRejected"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007598"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "WorkflowStarted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007748"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "WorkflowContinuedAsNew"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007867"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ChildWorkflowScheduled"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007299"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ChildCancellationRequested"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007384"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ChildCancellationResolved"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007085"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ChildRunStarted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.008117"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ChildRunCompleted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007281"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ChildRunFailed"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007103"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ChildRunCancelled"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007178"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ChildRunTerminated"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.008452"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ServiceCallStarted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007399"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ServiceCallCompleted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007145"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ServiceCallFailed"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007006"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ServiceCallCancelled"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007095"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ConditionWaitOpened"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007657"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ConditionWaitSatisfied"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007390"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ConditionWaitTimedOut"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007939"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "SignalWaitOpened"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007246"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "SignalReceived"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007602"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "SignalApplied"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007376"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "UpdateAccepted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007017"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "UpdateRejected"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007071"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "UpdateApplied"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007914"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "UpdateCompleted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.008304"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "RepairRequested"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007326"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "CancelRequested"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007184"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "CooperativeCancellationRequested"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007093"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "CooperativeCancellationDelivered"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007512"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "WorkflowCancelled"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007448"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "TerminateRequested"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007791"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "WorkflowTerminated"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007519"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ArchiveRequested"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007589"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "WorkflowArchived"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007458"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ActivityScheduled"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007254"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ActivityStarted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007086"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ActivityHeartbeatRecorded"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007132"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ActivityRetryScheduled"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.008122"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ActivityCompleted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.008157"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ActivityFailed"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007557"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ActivityCancelled"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007164"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ActivityCancellationAcknowledged"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007532"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ActivityTimedOut"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007386"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "FailureHandled"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007199"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "SideEffectRecorded"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007063"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "VersionMarkerRecorded"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007490"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "TimerScheduled"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.008281"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "TimerFired"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007368"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "TimerCancelled"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007130"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "SelectionResolved"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007101"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "SelectionOperationCancelled"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007446"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "SearchAttributesUpserted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.016458"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "MemoUpserted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.008718"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "WorkflowTimedOut"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.008207"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "WorkflowCompleted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007857"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "WorkflowFailed"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007414"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ParentClosePolicyApplied"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007446"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ParentClosePolicyFailed"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007157"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ParentCloseCancellationRequested"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.008129"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "MessageCursorAdvanced"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.008225"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ScheduleCreated"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007712"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "SchedulePaused"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007294"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ScheduleResumed"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007504"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ScheduleUpdated"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007478"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ScheduleTriggered"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007095"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ScheduleDeleted"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.007118"/>
<testcase name="testEverySupportedHistoryEventCanBeInspectedWithSparseMetadata with data set "ScheduleTriggerSkipped"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="18" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="2" time="0.008093"/>
</testsuite>
<testsuite name="Tests\Unit\V2\CancellationHistoryTimelineTest::testStopReceiptExplainsTheOriginalAttemptAndBudgetWithoutGrantingAuthority" tests="2" assertions="18" errors="0" failures="0" skipped="0" time="0.015598">
<testcase name="testStopReceiptExplainsTheOriginalAttemptAndBudgetWithoutGrantingAuthority with data set "before original deadline"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="37" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="9" time="0.008215"/>
<testcase name="testStopReceiptExplainsTheOriginalAttemptAndBudgetWithoutGrantingAuthority with data set "after original deadline"" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="37" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="9" time="0.007383"/>
</testsuite>
<testcase name="testLocalStopReceiptDoesNotDescribeItsWorkflowClaimAsACancelledActivityTask" file="/work/tests/Unit/V2/CancellationHistoryTimelineTest.php" line="80" class="Tests\Unit\V2\CancellationHistoryTimelineTest" classname="Tests.Unit.V2.CancellationHistoryTimelineTest" assertions="4" time="0.007640"/>
</testsuite>
<testsuite name="Tests\Unit\V2\HistoryEventPayloadContractTest" file="/work/tests/Unit/V2/HistoryEventPayloadContractTest.php" tests="3" assertions="4" errors="0" failures="0" skipped="0" time="0.000942">
<testcase name="testEveryHistoryEventTypeHasAPayloadContractEntry" file="/work/tests/Unit/V2/HistoryEventPayloadContractTest.php" line="14" class="Tests\Unit\V2\HistoryEventPayloadContractTest" classname="Tests.Unit.V2.HistoryEventPayloadContractTest" assertions="1" time="0.000324"/>
<testcase name="testPayloadContractRejectsUnknownProducerKeys" file="/work/tests/Unit/V2/HistoryEventPayloadContractTest.php" line="28" class="Tests\Unit\V2\HistoryEventPayloadContractTest" classname="Tests.Unit.V2.HistoryEventPayloadContractTest" assertions="2" time="0.000309"/>
<testcase name="testSelectionResolutionAcceptsDurableWinnerMetadata" file="/work/tests/Unit/V2/HistoryEventPayloadContractTest.php" line="39" class="Tests\Unit\V2\HistoryEventPayloadContractTest" classname="Tests.Unit.V2.HistoryEventPayloadContractTest" assertions="1" time="0.000308"/>
</testsuite>
</testsuite>
</testsuite>
</testsuites> |
Portable local preparation kernel qualifiedSource Local history now identifies the original workflow claim for local activity events, including its leased status when the activity terminates. The canonical stop receipt remains bound to its saved original start snapshot. Verification: isolated PHP 8.3.35, SQLite/Redis affected suite 171 tests / 997 assertions, no failures/errors/skips. Affected PHPStan and ECS pass. Exact-head CI passes quality, regression corpus, MySQL and unit gates. Explicit preparation 18 / 114, original-claim receipts 14 / 190, changed features 95 / 914 plus smoke 4 / 56, unit contracts 196 / 1,256, timeline 80 / 176. Raw MySQL JUnit artifact, preparation XML SHA-256 Commands: This kernel is not connected to an endpoint or SDK callback path. Next: retained-claim prefix checkpoint and prepared outcome/retry/replay, followed by Server admission and physical local supervisors. Published protocol 1.19 remains unchanged. This PR remains draft and the shared published 30-second cascade remains required. |
|
Full current-head Native Source qualification at 5d66347 passes: build37128130339, ordinary PR build37128125984. Complete126-file MySQL/PostgreSQL feature inventories run1908 cases each. MariaDB, Laravel9–13, corpus, quality and coverage pass. Unit2352/17236 with5 existing skips/15 notices. Combined coverage89.13%(59604/66870), floor87.85% passes,100% target remains unmet. Six ordered base64 parts reconstruct an xz tar archive233368 bytes, SHA25696982cb8b4f4c99d20cb522fd0143dc154fe1cd1c08ab3e4a004bd6fb061b836. Includes complete CI job output, run/job identities and coverageJSON. Candidate1.20 remains unfrozen, scopes unadvertised, this PR draft and shared136 open. This is Source kernel qualification, not the required exact published SDK cascade. Part source-xz-part-002 |
|
Full current-head Native Source qualification at 5d66347 passes: build37128130339, ordinary PR build37128125984. Complete126-file MySQL/PostgreSQL feature inventories run1908 cases each. MariaDB, Laravel9–13, corpus, quality and coverage pass. Unit2352/17236 with5 existing skips/15 notices. Combined coverage89.13%(59604/66870), floor87.85% passes,100% target remains unmet. Six ordered base64 parts reconstruct an xz tar archive233368 bytes, SHA25696982cb8b4f4c99d20cb522fd0143dc154fe1cd1c08ab3e4a004bd6fb061b836. Includes complete CI job output, run/job identities and coverageJSON. Candidate1.20 remains unfrozen, scopes unadvertised, this PR draft and shared136 open. This is Source kernel qualification, not the required exact published SDK cascade. Part source-xz-part-003 |
|
Full current-head Native Source qualification at 5d66347 passes: build37128130339, ordinary PR build37128125984. Complete126-file MySQL/PostgreSQL feature inventories run1908 cases each. MariaDB, Laravel9–13, corpus, quality and coverage pass. Unit2352/17236 with5 existing skips/15 notices. Combined coverage89.13%(59604/66870), floor87.85% passes,100% target remains unmet. Six ordered base64 parts reconstruct an xz tar archive233368 bytes, SHA25696982cb8b4f4c99d20cb522fd0143dc154fe1cd1c08ab3e4a004bd6fb061b836. Includes complete CI job output, run/job identities and coverageJSON. Candidate1.20 remains unfrozen, scopes unadvertised, this PR draft and shared136 open. This is Source kernel qualification, not the required exact published SDK cascade. Part source-xz-part-004 |
|
Full current-head Native Source qualification at 5d66347 passes: build37128130339, ordinary PR build37128125984. Complete126-file MySQL/PostgreSQL feature inventories run1908 cases each. MariaDB, Laravel9–13, corpus, quality and coverage pass. Unit2352/17236 with5 existing skips/15 notices. Combined coverage89.13%(59604/66870), floor87.85% passes,100% target remains unmet. Six ordered base64 parts reconstruct an xz tar archive233368 bytes, SHA25696982cb8b4f4c99d20cb522fd0143dc154fe1cd1c08ab3e4a004bd6fb061b836. Includes complete CI job output, run/job identities and coverageJSON. Candidate1.20 remains unfrozen, scopes unadvertised, this PR draft and shared136 open. This is Source kernel qualification, not the required exact published SDK cascade. Part source-xz-part-005 |
Scoped Activity delivery policy source evidenceCandidate b95babd, base 5d66347. Final SQLite: 78 tests / 453 assertions, no errors, failures or skips. Corrected duplicate-history fixture on MySQL: 1 test / 4 assertions. Full ECS and full PHPStan pass. Counterfactual retaining the candidate tests but restoring only the base delivery recorder: 6 tests / 18 assertions, 6 expected failures. Original invocations and corrections remain in the archive. This is the internal unfrozen 1.20 kernel. SDK supervision, scoped child propagation and the exact published cascade remain pending. Local archive: 97265 bytes, SHA256 9e7bc5767da729d211f26a7bdfb6d1c65f76353791afa7a43bbe7eeffc580e3e. Concatenate the three base64 blocks in numeric part order and decode into a gzip tar archive. It contains exact commands, source diff/head, dependency lock, image identities, raw logs and JUnit. Complete exact-head Source qualification is running. Its final results will be reported separately. Part 1 of 3 |
Scoped Activity delivery policy source evidenceCandidate b95babd, base 5d66347. Final SQLite: 78 tests / 453 assertions, no errors, failures or skips. Corrected duplicate-history fixture on MySQL: 1 test / 4 assertions. Full ECS and full PHPStan pass. Counterfactual retaining the candidate tests but restoring only the base delivery recorder: 6 tests / 18 assertions, 6 expected failures. Original invocations and corrections remain in the archive. This is the internal unfrozen 1.20 kernel. SDK supervision, scoped child propagation and the exact published cascade remain pending. Local archive: 97265 bytes, SHA256 9e7bc5767da729d211f26a7bdfb6d1c65f76353791afa7a43bbe7eeffc580e3e. Concatenate the three base64 blocks in numeric part order and decode into a gzip tar archive. It contains exact commands, source diff/head, dependency lock, image identities, raw logs and JUnit. Complete exact-head Source qualification is running. Its final results will be reported separately. Part 2 of 3 |
Scoped Activity delivery policy source evidenceCandidate b95babd, base 5d66347. Final SQLite: 78 tests / 453 assertions, no errors, failures or skips. Corrected duplicate-history fixture on MySQL: 1 test / 4 assertions. Full ECS and full PHPStan pass. Counterfactual retaining the candidate tests but restoring only the base delivery recorder: 6 tests / 18 assertions, 6 expected failures. Original invocations and corrections remain in the archive. This is the internal unfrozen 1.20 kernel. SDK supervision, scoped child propagation and the exact published cascade remain pending. Local archive: 97265 bytes, SHA256 9e7bc5767da729d211f26a7bdfb6d1c65f76353791afa7a43bbe7eeffc580e3e. Concatenate the three base64 blocks in numeric part order and decode into a gzip tar archive. It contains exact commands, source diff/head, dependency lock, image identities, raw logs and JUnit. Complete exact-head Source qualification is running. Its final results will be reported separately. Part 3 of 3 |
Complete scoped Activity delivery Source qualification evidenceCandidate b95babd. Full Source run and ordinary PR CI pass at this exact head. Full feature inventory: 126 files, 1921 cases each on MySQL and PostgreSQL. Full unit coverage: 2352 tests / 17241 assertions, five existing skips and fifteen PHPUnit notices. Combined coverage 89.14% (59673 / 66939), above the 87.85% floor. The 100% target remains unmet. MariaDB, Laravel 9–13 upgrades, corpus, policy, contracts and style/type gates pass. Archive: 244680 bytes, SHA256 9ae556f548f55726a783c16a0365b5c42925278e9f99edeec25f23840a3332b3. Concatenate seven base64 blocks in numeric part order and decode to an XZ tar archive. Complete run/job metadata, raw successful Source job logs, affected ordinary test logs, PR checks and downloaded coverage JSON are retained. The coverage summary branch label is main, but its commit and run metadata identify this exact candidate. These are source gates. Protocol 1.20 remains unfrozen, scopes unadvertised, PR draft and shared #136 open for the complete published customer cascade. Part 1 of 7 |
Complete scoped Activity delivery Source qualification evidenceCandidate b95babd. Full Source run and ordinary PR CI pass at this exact head. Full feature inventory: 126 files, 1921 cases each on MySQL and PostgreSQL. Full unit coverage: 2352 tests / 17241 assertions, five existing skips and fifteen PHPUnit notices. Combined coverage 89.14% (59673 / 66939), above the 87.85% floor. The 100% target remains unmet. MariaDB, Laravel 9–13 upgrades, corpus, policy, contracts and style/type gates pass. Archive: 244680 bytes, SHA256 9ae556f548f55726a783c16a0365b5c42925278e9f99edeec25f23840a3332b3. Concatenate seven base64 blocks in numeric part order and decode to an XZ tar archive. Complete run/job metadata, raw successful Source job logs, affected ordinary test logs, PR checks and downloaded coverage JSON are retained. The coverage summary branch label is main, but its commit and run metadata identify this exact candidate. These are source gates. Protocol 1.20 remains unfrozen, scopes unadvertised, PR draft and shared #136 open for the complete published customer cascade. Part 2 of 7 |
Complete scoped Activity delivery Source qualification evidenceCandidate b95babd. Full Source run and ordinary PR CI pass at this exact head. Full feature inventory: 126 files, 1921 cases each on MySQL and PostgreSQL. Full unit coverage: 2352 tests / 17241 assertions, five existing skips and fifteen PHPUnit notices. Combined coverage 89.14% (59673 / 66939), above the 87.85% floor. The 100% target remains unmet. MariaDB, Laravel 9–13 upgrades, corpus, policy, contracts and style/type gates pass. Archive: 244680 bytes, SHA256 9ae556f548f55726a783c16a0365b5c42925278e9f99edeec25f23840a3332b3. Concatenate seven base64 blocks in numeric part order and decode to an XZ tar archive. Complete run/job metadata, raw successful Source job logs, affected ordinary test logs, PR checks and downloaded coverage JSON are retained. The coverage summary branch label is main, but its commit and run metadata identify this exact candidate. These are source gates. Protocol 1.20 remains unfrozen, scopes unadvertised, PR draft and shared #136 open for the complete published customer cascade. Part 3 of 7 |
Complete scoped Activity delivery Source qualification evidenceCandidate b95babd. Full Source run and ordinary PR CI pass at this exact head. Full feature inventory: 126 files, 1921 cases each on MySQL and PostgreSQL. Full unit coverage: 2352 tests / 17241 assertions, five existing skips and fifteen PHPUnit notices. Combined coverage 89.14% (59673 / 66939), above the 87.85% floor. The 100% target remains unmet. MariaDB, Laravel 9–13 upgrades, corpus, policy, contracts and style/type gates pass. Archive: 244680 bytes, SHA256 9ae556f548f55726a783c16a0365b5c42925278e9f99edeec25f23840a3332b3. Concatenate seven base64 blocks in numeric part order and decode to an XZ tar archive. Complete run/job metadata, raw successful Source job logs, affected ordinary test logs, PR checks and downloaded coverage JSON are retained. The coverage summary branch label is main, but its commit and run metadata identify this exact candidate. These are source gates. Protocol 1.20 remains unfrozen, scopes unadvertised, PR draft and shared #136 open for the complete published customer cascade. Part 4 of 7 |
Complete scoped Activity delivery Source qualification evidenceCandidate b95babd. Full Source run and ordinary PR CI pass at this exact head. Full feature inventory: 126 files, 1921 cases each on MySQL and PostgreSQL. Full unit coverage: 2352 tests / 17241 assertions, five existing skips and fifteen PHPUnit notices. Combined coverage 89.14% (59673 / 66939), above the 87.85% floor. The 100% target remains unmet. MariaDB, Laravel 9–13 upgrades, corpus, policy, contracts and style/type gates pass. Archive: 244680 bytes, SHA256 9ae556f548f55726a783c16a0365b5c42925278e9f99edeec25f23840a3332b3. Concatenate seven base64 blocks in numeric part order and decode to an XZ tar archive. Complete run/job metadata, raw successful Source job logs, affected ordinary test logs, PR checks and downloaded coverage JSON are retained. The coverage summary branch label is main, but its commit and run metadata identify this exact candidate. These are source gates. Protocol 1.20 remains unfrozen, scopes unadvertised, PR draft and shared #136 open for the complete published customer cascade. Part 5 of 7 |
Complete scoped Activity delivery Source qualification evidenceCandidate b95babd. Full Source run and ordinary PR CI pass at this exact head. Full feature inventory: 126 files, 1921 cases each on MySQL and PostgreSQL. Full unit coverage: 2352 tests / 17241 assertions, five existing skips and fifteen PHPUnit notices. Combined coverage 89.14% (59673 / 66939), above the 87.85% floor. The 100% target remains unmet. MariaDB, Laravel 9–13 upgrades, corpus, policy, contracts and style/type gates pass. Archive: 244680 bytes, SHA256 9ae556f548f55726a783c16a0365b5c42925278e9f99edeec25f23840a3332b3. Concatenate seven base64 blocks in numeric part order and decode to an XZ tar archive. Complete run/job metadata, raw successful Source job logs, affected ordinary test logs, PR checks and downloaded coverage JSON are retained. The coverage summary branch label is main, but its commit and run metadata identify this exact candidate. These are source gates. Protocol 1.20 remains unfrozen, scopes unadvertised, PR draft and shared #136 open for the complete published customer cascade. Part 6 of 7 |
Complete scoped Activity delivery Source qualification evidenceCandidate b95babd. Full Source run and ordinary PR CI pass at this exact head. Full feature inventory: 126 files, 1921 cases each on MySQL and PostgreSQL. Full unit coverage: 2352 tests / 17241 assertions, five existing skips and fifteen PHPUnit notices. Combined coverage 89.14% (59673 / 66939), above the 87.85% floor. The 100% target remains unmet. MariaDB, Laravel 9–13 upgrades, corpus, policy, contracts and style/type gates pass. Archive: 244680 bytes, SHA256 9ae556f548f55726a783c16a0365b5c42925278e9f99edeec25f23840a3332b3. Concatenate seven base64 blocks in numeric part order and decode to an XZ tar archive. Complete run/job metadata, raw successful Source job logs, affected ordinary test logs, PR checks and downloaded coverage JSON are retained. The coverage summary branch label is main, but its commit and run metadata identify this exact candidate. These are source gates. Protocol 1.20 remains unfrozen, scopes unadvertised, PR draft and shared #136 open for the complete published customer cascade. Part 7 of 7 |
Scoped cancellation: next delivery boundaryThe full source qualification at Inspection of Use a retained preparation boundary containing the original request/context, scope membership, call kind, call sequence/span, operation sequence/span and immutable effective deadline. The final delivered boundary must match that preparation and still require the existing per-policy fence/stop proof. Preparation alone must not inject cancellation, stop callbacks, release a workflow claim or cancel a run. Locking decision: commit authenticated preparation under run then workflow-task locks and release that transaction before invoking any Activity fence. The existing fence actor must retain its attempt → execution → run → task order. Calling it from inside the preparation transaction would reverse that order. Replacement must read the same preparation and retain the original deadline, while authority and current task ownership are rechecked before each effect. Required cases include lost preparation response, replacement after only some parallel members are fenced, changed call or selected range, wrong/stale task claimant, duplicate preparation, operation outside the original selection, scope/shield mismatch, expired original authority, and late stop receipts. Preserve the current Try/Wait/Abandon distinctions and unrelated siblings. This is an inspected implementation direction, not a newly implemented or qualified actor. Protocol 1.20 remains unfrozen and scopes unadvertised. The shared #136 published cross-language SIGKILL/recovery/cascade demonstration remains required before closure. |
Immutable scoped preparation qualified locallyHead d89bcd3 retains the first scoped call/range, deadline and whole direct-scope Activity member set before fencing. Replacement after partial fencing reuses that preparation. Final delivery needs every original member's policy proof, including members outside a selected handle. New admissions are denied, while recorded prefix replay, siblings and shielding are preserved.
Complete current-head Source qualification and ordinary PR CI are still running. This is source qualification. Claim replacement here is a database fixture, not an actual cleanup-worker SIGKILL. Protocol 1.20 remains unfrozen, scope capability remains unadvertised, and this PR remains draft. The following archive retains reproducible commands, exact source patch and commit, image identities, dependency lock/package versions, counterfactual actor, all local invocation logs and JUnit, including early corrections and the first MySQL replay-membership failure. XZ tar archive: 67164 bytes, SHA256 c619eaf5946cf0157202f23191ae7e0b2a142b59097ba1069b219987ad711f0b, two ordered base64 parts. Join the base64 blocks, decode, then verify the digest. |
Scoped preparation local raw evidence, part 2 of 2Head d89bcd3. XZ tar 67164 bytes, SHA256 c619eaf5946cf0157202f23191ae7e0b2a142b59097ba1069b219987ad711f0b. Join ordered base64 blocks before decoding. |
Complete current-head Source qualification passesHead d89bcd3 passes complete Source qualification and ordinary PR CI.
The following raw archive retains complete Source and ordinary CI logs, run/job/check metadata, all eight shard JUnit/command inventories and timing reports, the verified complete feature inventory, counting command and full coverage JSON. XZ tar archive: 370436 bytes, SHA256 3c9f77bd14651db9bd5b8ae166be66e2035c7ee4655a6b4726fb54a9214f8f13, eleven ordered base64 parts. Join the blocks, decode and verify the digest. This PR remains draft. Default/published protocol remains 1.19, candidate 1.20 remains unfrozen, and scope execution remains unadvertised. The next concrete step is an optional authenticated Native preparation/poll/delivery bridge that retains the exact workflow owner/attempt, first preparation, pending original members and deadline. Then connect the Server worker route and SDK scope resumption without broadening advertised capabilities before the whole consumer path passes. Scoped child, timer/wait and selective callback supervision remain delivery gates. Shared #136 stays open for the complete published mixed-SDK acceptance scenario and competitive qualification. |
Scoped preparation complete Source raw evidence, part 2 of 11Head d89bcd3. XZ tar 370436 bytes, SHA256 3c9f77bd14651db9bd5b8ae166be66e2035c7ee4655a6b4726fb54a9214f8f13. Join ordered base64 blocks before decoding. |
Scoped preparation complete Source raw evidence, part 3 of 11Head d89bcd3. XZ tar 370436 bytes, SHA256 3c9f77bd14651db9bd5b8ae166be66e2035c7ee4655a6b4726fb54a9214f8f13. Join ordered base64 blocks before decoding. |
Scoped preparation complete Source raw evidence, part 4 of 11Head d89bcd3. XZ tar 370436 bytes, SHA256 3c9f77bd14651db9bd5b8ae166be66e2035c7ee4655a6b4726fb54a9214f8f13. Join ordered base64 blocks before decoding. |
Scoped preparation complete Source raw evidence, part 5 of 11Head d89bcd3. XZ tar 370436 bytes, SHA256 3c9f77bd14651db9bd5b8ae166be66e2035c7ee4655a6b4726fb54a9214f8f13. Join ordered base64 blocks before decoding. |
Scoped preparation complete Source raw evidence, part 6 of 11Head d89bcd3. XZ tar 370436 bytes, SHA256 3c9f77bd14651db9bd5b8ae166be66e2035c7ee4655a6b4726fb54a9214f8f13. Join ordered base64 blocks before decoding. |
Scoped preparation complete Source raw evidence, part 7 of 11Head d89bcd3. XZ tar 370436 bytes, SHA256 3c9f77bd14651db9bd5b8ae166be66e2035c7ee4655a6b4726fb54a9214f8f13. Join ordered base64 blocks before decoding. |
Scoped preparation complete Source raw evidence, part 8 of 11Head d89bcd3. XZ tar 370436 bytes, SHA256 3c9f77bd14651db9bd5b8ae166be66e2035c7ee4655a6b4726fb54a9214f8f13. Join ordered base64 blocks before decoding. |
Scoped preparation complete Source raw evidence, part 9 of 11Head d89bcd3. XZ tar 370436 bytes, SHA256 3c9f77bd14651db9bd5b8ae166be66e2035c7ee4655a6b4726fb54a9214f8f13. Join ordered base64 blocks before decoding. |
Scoped preparation complete Source raw evidence, part 10 of 11Head d89bcd3. XZ tar 370436 bytes, SHA256 3c9f77bd14651db9bd5b8ae166be66e2035c7ee4655a6b4726fb54a9214f8f13. Join ordered base64 blocks before decoding. |
Scoped preparation complete Source raw evidence, part 11 of 11Head d89bcd3. XZ tar 370436 bytes, SHA256 3c9f77bd14651db9bd5b8ae166be66e2035c7ee4655a6b4726fb54a9214f8f13. Join ordered base64 blocks before decoding. |
Implement the stronger cancellation model owned by shared #136. Keep this PR draft until the exact published PHP parent → Python child → Rust remote Activity plus PHP local Activity cascade passes the original identity/+30-second budget, managed callback stop without application heartbeats, stale publication fencing, actively leased cleanup-worker SIGKILL/replay and coherent operator-view gate.
Default/published protocol remains 1.19. Candidate 1.20 is unfrozen. Scope execution remains unadvertised.
Current source
Head d89bcd3 commits an immutable scoped cancellation preparation before establishing Activity fences.
This internal kernel does not execute SDK scope bodies, selectively supervise callbacks, propagate scoped requests across child runs, cancel scoped timers/waits, or advertise an authenticated scoped delivery capability.
Current qualification
Complete Source and ordinary PR qualification pass at this exact head. The PR remains draft.
All 126 feature files, exactly once per database across four shards. MySQL: 1937 tests / 18101 assertions, three database-specific skips. PostgreSQL: 1937 tests / 18042 assertions, eight database-specific skips. No errors or failures.
MariaDB's configured regression selection, Laravel 9–13 embedded upgrades, corpus, central action policy and repository contracts pass.
Full unit coverage: 2353 tests / 17243 assertions, five existing skips and fifteen PHPUnit notices, no errors or failures.
Combined v2 line coverage: 89.14% (59869 / 67158), above the 87.85% floor. The 100% target remains unmet.
Ordinary affected MySQL: 563 tests / 4687 assertions, fourteen passing invocations. Affected unit contracts: 488 tests / 1912 assertions, three passing invocations.
Final local MySQL and SQLite selections: 94 tests / 533 assertions each, no errors, failures or skips.
Full local ECS and PHPStan pass. The protected Composer lock is unchanged.
Counterfactual restoring only the previous fencing actor: 4 tests / 9 assertions, all four expected failures, no runtime errors. Those regression cases pass with the candidate.
Current local raw evidence retains commands, the exact source patch, preserved dependency lock/package versions, image identities, all invocation logs and JUnit. XZ tar archive: 67164 bytes, SHA256 c619eaf5946cf0157202f23191ae7e0b2a142b59097ba1069b219987ad711f0b, two parts read back, decoded and byte verified.
Current complete Source raw evidence retains complete CI logs, run/job/check metadata, shard JUnit and verified command inventories, timing reports and full coverage JSON. XZ tar archive: 370436 bytes, SHA256 3c9f77bd14651db9bd5b8ae166be66e2035c7ee4655a6b4726fb54a9214f8f13, eleven parts read back, decoded and byte verified.
Previous-head qualification and its raw evidence are retained in the prior Source receipt and local receipt. Those results identify their original head and are not the current-head full qualification.
Remaining delivery gates
Add an optional authenticated Native preparation/poll/delivery bridge that binds the exact workflow owner/attempt and retains the first preparation, pending original members and deadline. Connect the Server worker route, scope-aware waiting/resumption, SDK authoring/replay, request observation and selective sibling supervision. Preserve unsupported-operation diagnostics until scoped child propagation and timer/wait cancellation are implemented. Complete shielding and deterministic cleanup-clock helpers.
Complete model and fair competitive qualification before freezing 1.20. Recheck the exact full source tuple, migration and release path, publish qualified artifacts, then run the required published cascade through API/CLI/Waterline.
The normal-runtime mixed Source proof passes 237 assertions under the ordinary 60-second Server workflow lease, ten-second repair cadence and original +30-second request, including an actual actively leased PHP cleanup-worker SIGKILL. It remains tied to its recorded older source tuple. It does not establish this current or a published tuple.
Rust 3.0.0 is approved in its owning decision. Shared #136 stays open until the complete published customer gate passes.