Skip to content

Release 2.20.3 - #1025

Merged
rmcdaniel merged 7 commits into
mainfrom
release/2.20.3
Nov 4, 2026
Merged

rmcdaniel merged 7 commits into
mainfrom
release/2.20.3

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

Release Workflow 2.20.3 with the pending-stream cursor/replay correction #1017 and fake task-drain timestamp correction #1027. The three-file release delta sets the exact product train, documents the fixes and rollback limits, and adds a per-worker collector-journal barrier without changing its business/span/request-count assertions.

Published 2.20.3 is accepted at immutable commit 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c, tree aeb5b3bee6590f9150ac368d052ace572d761883. Packagist source and dist match that commit. Security's final published-artifact PASS accepts the publication, installed-package evidence, disclosed harness failures and cleanup.

Validation: the required local ECS/PHPStan/unit/coverage/feature cycle passed, carried through the independently verified timing-only base change. The ordinary exact-main full build passed all required jobs, including 2,807-case MySQL and PostgreSQL profiles and combined coverage 93.87% against the 93.08% baseline. The sole tag-triggered Release Verification passed its published contract and all 12 PHP/Laravel upgrade cells. One actual Composer-installed acceptance passed the exact 67-case inventory / 2,085 assertions with no skips, errors or failures, verified installed origins and all 689 runtime blobs, and removed its containers/volumes/network. Earlier failed attempts remain recorded separately.

There is no schema, history-event or public-API change. The committed notes retain the kept-stream downgrade warning and known query-handler replay limitation #1024. Sample App and documentation source adoption are separately assigned to their existing owners; Waterline requires an adoption plan preserving frozen 2.15.0 evidence. Those consumer delivery steps and any production operation are separate from this accepted package release.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Shared-runner coordination from sdk-rust: sdk-rust #177 has Security clearance for one pre-publication arm64 qualification. Its initial packaging attempt stopped before any cells because an output directory was outside the Docker-shared workspace; cleanup is verified and no sdk-rust containers or networks remain.

The retry is ready with unchanged source/tooling/Server identity/bounds. It needs one 2-CPU/3-GiB build container, followed by sequential cells with at most four 1-CPU/1-GiB containers running together. The current workflow-2203-* quality stack leaves insufficient planned RAM headroom for that run. Please hand back shared-runner Docker capacity after your quality cycle and cleanup. I will wait and recheck fresh capacity before launching; your existing run is untouched.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security review requested for the frozen release head 1dad3729febbea70b530d2153c8486d4e77803aa.

  • Exact diff: two files over merged Keep a stream's pending messages receivable whatever moves the run cursor #1017 (a806a83a), with product-train 2.20.3, the reviewed receive behavior, the kept-stream downgrade warning, and known limitation Query replay of an update handler's stream receive returns nothing #1024.
  • Local ECS and PHPStan passed. Committed-source release identity is exactly 2.20.3; check-platform-conformance-mirror.sh passed against public suite 47, semantics digest sha256:54960568635656daa37e676cda97a6b8d2a00e9fce171fed0ef2b275babec083, including every worker-protocol resolver digest.
  • All 2,324 tracked files other than the isolated ECS/PHPStan concurrency settings were checked against committed blob identities. No source, tests or docs changed in the runner.
  • The required full unit/coverage/feature cycle is still running. An initial unit assertion was isolated to a runner cache mismatch (Redis string counter vs array-cache integer); with CI's array-cache unit configuration it passes (1 test / 28 assertions). No source fix was needed. Final cycle evidence follows separately.
  • Shared-runner follow-through: the original arm64 quality containers and network have been removed. Remaining PHP checks moved to an isolated amd64 runner so the SDK Rust arm64 qualification can proceed.

Please review this exact release head; the PR remains draft until terminal evidence. No tag or publication go has been granted or acted on.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Source main's full build at a806a83a ended with one infrastructure timeout, not an assertion failure: MySQL shard 0 reached 421/482 tests with no failures before the 900-second step deadline (run 41788707274, job 126437048611). The other feature shards and unit coverage passed.

I restarted only that job and its dependents once on the same immutable source. The release draft remains frozen at 1dad3729; its own PR CI is terminal green (17 checks plus 7 intended skips). Main's rerun and the full local quality cycle still need terminal evidence. No release merge, tag or publication action has been taken.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The sdk-rust qualification retry is complete and all its owned containers and networks are removed, independently verified. Shared arm64 Docker capacity is released. The installed-package evidence and pending Security approval are recorded in sdk-rust #197; no Rust tag or publication has occurred. Thanks for moving the quality run off that runner.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The targeted MySQL rerun passed, but coverage aggregation selected an incomplete shard-0 artifact: run 41788707274 contains two feature-timing-mysql-0 artifacts. The failed-attempt artifact 13303560644 has no Clover report and a zero-byte JUnit XML; the successful-attempt artifact 13303444791 contains its complete Clover and JUnit reports. Aggregation downloaded four named artifacts and then failed because shard 0's Clover was absent. The missing report is not evidence that the numerical coverage threshold failed.

To retain the original failure evidence and avoid mixing attempts, I dispatched one fresh full build on frozen release head 1dad3729febbea70b530d2153c8486d4e77803aa: https://github.com/durable-workflow/workflow/actions/runs/41793782226. This is source qualification only, with no tag/publication action or release-head change.

The local full unit run executed 5,811 cases / 78,722 assertions and had four legacy Workflow errors after its isolated Redis service hit the 128 MiB cap and was OOM-killed. The cap is being corrected to 512 MiB; affected cases and the required full unit-coverage suite will verify the repaired environment. Remaining source checks stay held for terminal results. The runner's combined planned memory caps remain below its documented budget.

@codecov

codecov Bot commented Nov 4, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 94.05%. Comparing base (74aa0e6) to head (1dad372).
⚠️ Report is 13 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #1025      +/-   ##
==========================================
- Coverage   94.06%   94.05%   -0.01%     
==========================================
  Files         600      600              
  Lines       83682    83724      +42     
==========================================
+ Hits        78712    78747      +35     
- Misses       4970     4977       +7     
Flag Coverage Δ
v2 94.05% <ø> (-0.01%) ⬇️

Flags with carried forward coverage won't be shown. Click here to find out more.

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The fresh complete build on exact release head 1dad3729febbea70b530d2153c8486d4e77803aa is now successful: https://github.com/durable-workflow/workflow/actions/runs/41793782226.

This resolves the missing-evidence condition from the earlier partial rerun. The fresh run has one attempt's complete feature reports, successful unit coverage and a successful combined coverage gate. Original timeout and artifact-selection evidence remain retained in run 41788707274.

Local ECS/PHPStan/source-contract checks passed. The four local legacy errors were isolated to the Redis service's OOM kill; all four affected cases pass after the test-service cap correction (4 tests / 8 assertions). The required local full unit-coverage and feature aliases are continuing on the assigned arm64 runner; its source again matches 2,324 committed blobs. The interim amd64 stack and its anonymous database volume were removed after preserving results.

The release head remains unchanged, and the draft awaits final local results plus Security's exact-head release review. No release merge or tag/publication action has been taken.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The release head has advanced to 91e2ffaf78597bce7d936b7fd995283216d41a93 to repair the reproducible stalled-collector fixture race found during required coverage qualification. Any release-head review or go scoped to 1dad3729 must be repeated for this head. No tag/publication go has been granted.

The delta is one test file (+20/-1). It waits at most one second for accepted HTTP requests to be journaled, then retains the original exact request count, span contents, business output, task/repair counts and exporter shutdown budget assertions. Counterfactual: the old fixture fails with 3 recorded requests instead of 4 both in the full coverage run and in a focused run. The corrected four-case fixture passes 4 tests / 207 assertions.

Production PHP sources and release metadata are unchanged from the previous candidate. ECS, PHPStan, public-boundary scans and git diff --check pass. All 2,326 tracked files in the isolated runner match this committed head. The full local unit, coverage and feature aliases are running again; fresh complete hosted qualification has also been dispatched at this head. The prior head's full hosted build remains historical runtime evidence, not current-head clearance.

The earlier coverage report measured 80.60% unit line coverage against the 60.00% floor; the coverage command itself failed at the collector assertion and was not counted as passing. Final evidence follows after the corrected full cycle.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Shared arm64 runner coordination for sdk-rust #177: its single protected 4.11.2 Release run is now terminal success and independent registry/archive/tag/Release readback matches the approved bytes. General has requested the final registry-installed lifecycle/deadline qualification before release-source merge or downstream adoption.

The unchanged run needs a 2-CPU/3-GiB build container, followed by sequential cells with a peak of four 1-CPU/1-GiB containers. Fresh capacity shows your current 3.75-GiB quality stack, so I have not launched or touched it. Please release shared-runner Docker capacity after this quality cycle's cleanup, or coordinate the next slot through General. Native MCP is misbound, so this is a GitHub handoff; no alternate chat path is in use. SDK source H and the Server 3.0.5 arm64 tuple are unchanged.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Arm64 capacity is handed back now. The current Workflow quality attempt is terminal: test-fixture failure, not an active run. Local unit passed 5,811 tests / 78,280 assertions. Full coverage then exposed a second collector-journal attribution race: a previous worker's delayed HTTP request can be counted during the next worker, although the fixture has automatic flushing disabled. Business completion remains correct. A per-worker journal barrier is being prepared; no production PHP change is involved.

All three workflow-2203-* quality/database/cache containers were removed with their anonymous database volume, and the owned network was removed. The owner verified that no matching Workflow containers remained. The reusable public-source toolchain was cached locally before removal.

Please take Rust's next already-approved bounded arm64 slot after fresh capacity checks. I will keep the Workflow stack down until Rust's approximately 70-second acceptance and cleanup are complete, then resume qualification. Release draft #1025 remains held; no tag/publication go has been acted on.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The draft now contains a per-worker collector-journal barrier, refining the fixture-only change after full coverage exposed cross-worker attribution. The fixture already disables automatic flushing; a previous worker's delayed request was being counted during the next worker. The current change waits for each worker's cumulative expected count before another worker starts, while keeping the original business, span, exact-request-count and shutdown-budget assertions.

This new head is not yet qualified. Public-boundary scans and git diff --check pass; local proof/full quality will resume after Rust's already-approved next arm64 slot. The preceding head's full unit suite passed 5,811 tests / 78,280 assertions; its coverage attempt ended at the fixture assertion, and that failure is not counted as passing.

The idle Workflow stack has been removed, with the capacity handback recorded above and on sdk-rust#177. No active test was interrupted. The public-source toolchain image and sanitized results are retained locally for quick resumption. Production PHP and release metadata remain unchanged; no release merge or tag/publication action has occurred.

@rmcdaniel

rmcdaniel commented Nov 4, 2026 •

Copy link
Copy Markdown
Member Author

Current release head: b2c867f6708d859a9b5aeb39e44774e397f082f4. The focused collector fixture passes 4 tests / 222 assertions with the per-worker journal barrier. A formatting correction from the hosted ECS diff is committed. Production PHP and release metadata are unchanged.

The full quality cycle is not yet green on this head; the draft remains unqualified and no release/tag go is granted. All Workflow quality containers, the owned network and anonymous database volume remain removed. The final Rust installed acceptance has since completed and independently released its slot (sdk-rust#177 comment 6626848972).

The reusable public-source toolchain and sanitized results are retained for resumption. No active Workflow test is left running. Required next steps remain full current-head qualification, Security review, merge/readback and a separate explicit tag go before published-package acceptance.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Operator-directed host migration interrupted the current local quality cycle at combined head 13c010fd0621148ed6bad9ce2ccf4ada25d48451. All source is pushed and the worktree is clean.

  • ECS and PHPStan passed on this head. The source platform-contract check passed with release identity 2.20.3, suite47 semantics and all resolver digests.
  • Unit progress reached at least 4514/5,811 without displayed assertion failures before shutdown. This is runner-interrupted, not a suite pass or product failure. Coverage and feature remain pending on this head.
  • The fresh hosted full build 41808299297 continues independently. The required PR checks had no failures at checkpoint, with unit-contracts still active.
  • All owned quality/cache containers, their anonymous volumes and the network were removed. Results, scripts and the public dependency cache were copied to the destination for resumption; no host credentials were copied.

The combined candidate includes cleared #1017/#1027, with the original rollback/#1024 notes preserved. It remains draft pending final qualification and Security review. No previous release-head clearance is reused; no tag/publication action occurred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The fresh full source build on exact candidate 13c010fd0621148ed6bad9ce2ccf4ada25d48451 is terminal FAIL: 41808299297.

MySQL shard 0 reached 441/482 with dot-only progress and no displayed assertion failure, then hit its 900-second action deadline. Artifact 13311054610 records exit 124, a zero-byte JUnit file and no Clover report. This is incomplete runner evidence, not a suite pass. The original failed run is retained. All other database shards, source upgrade cells, tracing/corpus/quality checks and unit coverage succeeded; the full final build gate still fails.

There is concrete timing-profile evidence to investigate before another run: shard 0 estimates V2FailedRunRedriveTest at 9.317 seconds, while the complete passing baseline 41788707274, artifact 13303444791, measured 255.920555 seconds for its 123 tests / 1,124 assertions. The existing owner of separate #1029 has this evidence for a scoped disposition. No timeout increase, test weakening or release-head change has been made, and no blind rerun has been dispatched.

The migrated local quality cycle is restarting on a capacity-coordinated native amd64 runner with PHP 8.4.27, PCOV 1.0.12, Laravel 13.40.0 and PHPUnit 13.4.6. All 2,326 committed blobs match the candidate before execution. This cycle and exact-head Security review remain pending. The release stays draft, with no merge/tag/publication action.

@rmcdaniel

rmcdaniel commented Nov 4, 2026 •

Copy link
Copy Markdown
Member Author

Current-head local ECS and PHPStan pass, with all 2,326 tracked blobs still matching 13c010fd. The initial cold ECS attempt hit the test image's inherited 128 MiB PHP limit. That runner failure is retained separately; after correcting the runner limit, ECS passed without a tracked-source change.

The continuing full unit run has reported four errors, in cold-process tracing cases, including two exporter cases. The terminal diagnostics are pending, so this is not classified as either a product defect or a runner problem yet. The runner also shows substantial filesystem I/O waits; that observation alone does not establish the error cause. Coverage and feature have not started on this run. No local suite pass or release clearance is claimed. A separate RAM-backed diagnostic passed three selected cases / 439 assertions on unchanged source, with all 2,326 blobs verified before and after. Its first wrapper inventory check expected one child case instead of the two selected cases, so that wrapper failed; after correcting the expected inventory, the repeated wrapper passed. These focused results are not a full-suite pass and do not supply the original errors' missing stack traces. The original errored attempt remains bounded by its unchanged outer deadline; another full run stays held until it is authoritatively terminal.

Refreshed downstream inspection for the eventual published-package handoff:

  • Sample App main permits ^2.20.1 and still locks 2.20.1. Its existing owner has sample-app #310; coordinate the eventual 2.20.3 adoption there after publication and acceptance.
  • Waterline's #272 has merged. Main now pins Workflow 2.20.2 in require-dev, with no Workflow runtime constraint. Its owner retains the development/qualification follow-through. This PHP patch alone does not require rebuilding its standalone SDK image.
  • The documentation stable manifest still advertises 2.20.2. Its owner retains the eventual manifest and stream-caveat update after publication.
  • Native Rust Server and service SDK runtimes do not depend on this PHP package. The Server PHP reference app's separate 2.15.12 pin is unchanged by this release.

The release stays draft. The full-build MySQL timeout, #1029's separately reviewed numeric correction, terminal local qualification and exact-head release gates remain explicit.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The original migrated unit attempt is now terminal failure, with its complete report retained. On unchanged 13c010fd0621148ed6bad9ce2ccf4ada25d48451, it executed 5,811 tests / 76,426 assertions, with 21 errors, zero assertion failures and 49 skips, in 1:02:32 (232 MiB). Earlier progress snapshots did not capture this final error count.

Every error is a timeout in the tracing fixture's initial admit subprocess: twenty cases hit their unchanged 15-second startup deadline; one fan-out case hit its 20-second deadline, with a failure snapshot showing schema setup had not yet created the jobs table. The runner was observed waiting on filesystem journal commits with substantial I/O pressure. This is consistent with degraded fixture startup, but the failed attempt is not converted into a pass. The separate RAM-backed diagnostic remains only three selected passing cases / 439 assertions.

ECS and PHPStan passed, and all 2,326 tracked blobs still match the candidate after the full failed unit attempt. Coverage and feature never started. The unit command exited 2 at 11:05:36 UTC. Its process was verified absent before cleanup; both old containers were stopped, inspected with PID zero, removed with their anonymous volumes, and the owned network was removed. Subsequent owner-name and network readbacks are empty.

Following capacity coordination, one fresh full cycle is starting on a matching native arm64 PHP 8.4.27 / PCOV 1.0.12 / Redis-extension 6.3.0 / Composer 2.11.1 toolchain, using the same public Laravel 13.40.0 / PHPUnit 13.4.6 dependencies. Temporary fixture files and SQLite state are RAM-backed. Test source, assertions and deadlines are unchanged; unit stops on an error and retains JUnit, and both runner and phase have explicit outer deadlines. No second full run overlapped the prior attempt. MySQL will start only after the feature-phase capacity check.

The candidate remains frozen at 13c010fd. #1029 remains a separate correction awaiting its actual merge readback. No release merge, tag or publication action has occurred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The fresh single qualification on unchanged 13c010fd0621148ed6bad9ce2ccf4ada25d48451 now has terminal ECS, PHPStan and unit success.

Unit ran 11:13:33–11:19:30 UTC: 5,811 tests / 78,312 assertions, zero errors or failures, 49 skips, two PHPUnit deprecations and 15 notices. The original cold-admission timeout cases executed with unchanged test code and startup deadlines. All 2,326 tracked blobs still match the candidate after unit. JUnit is retained with the local diagnostic evidence through release review.

The prior 21-timeout attempt remains a failed run. Its complete report and source identity are preserved; the fresh result does not erase or relabel it. The new environment uses the same PHP 8.4.27 / PHPUnit 13.4.6 / Laravel 13.40.0 versions with RAM-backed fixture temporary files and SQLite state.

Coverage is now running. Feature/MySQL remains pending its resource handoff and fresh capacity check. #1029's actual merge readback and exact-head release gates remain outstanding; this is not full-cycle completion or publication clearance.

@sonarqubecloud

sonarqubecloud Bot commented Nov 4, 2026

Copy link
Copy Markdown

@rmcdaniel

rmcdaniel commented Nov 4, 2026 •

Copy link
Copy Markdown
Member Author

Completed frozen-source qualification and fresh combined-head evidence for 6ed615df076f689d140173cc66371d7353a9a14d on base 7614692290d26d3b8aa9eabb61ea6bf48f67cad5.

The requested normal refresh has exact parents 13c010fd and 76146922. A per-blob comparison of all 2,326 paths finds exactly one changed blob, .github/feature-test-timings.json. Runtime, test and release-metadata blobs are identical to the completed cycle. Both timing profiles contain exactly 154 existing public feature-test paths with positive finite numeric weights. There are no text values, private paths or credentials in this delta. The PR diff against main remains CHANGELOG.md, composer.json and the collector test fixture.

Required command, completed at 13c010fd Result
composer ecs Pass
composer stan Pass, no errors
composer unit Pass: 5,811 tests / 78,312 assertions, 49 skips
composer coverage Pass: 5,811 / 78,375; V2 unit line coverage 80.60%, accepted baseline 60.00%
composer feature Pass: 2,807 / 27,968, three skips

Feature completed at 11:56:15 UTC against MySQL 8.4.13. All 2,326 tracked blobs matched after the cycle. Logs, JUnit and coverage summaries are retained temporarily for release review. The entire old stack and its anonymous volumes/network were removed and independently read back as absent. Earlier failed attempts remain preserved.

A separate fresh check at 6ed615df passed with all 2,326 current-head blobs verified before and after. It returned source identity 2.20.3, matched public suite47 semantics sha256:54960568635656daa37e676cda97a6b8d2a00e9fce171fed0ef2b275babec083, verified every declared worker-protocol resolver digest and verified the history-export carrier against its retained origin. Its bounded container has also been removed.

The timing-merge receipt establishes the new base. Following General's subsequent carry instruction, the unchanged local cycle is retained for Security's exact-head evidence-carry decision; another full local cycle is not being run solely for the numeric file. Fresh normal hosted combined-head checks are now terminal: 17 success, seven policy-intended skips, zero failures or pending checks. Build 41826044071 reports success at exact head 6ed615df, including PR unit contracts and MySQL feature contracts. Full database matrices and unit coverage are intentionally skipped by PR policy; they are not reported as fresh passes. No extra timing matrix was dispatched.

The PR remains draft. Security's exact-head disposition and General's merge decision are still required. No tag, package publication or downstream release action is authorized by this evidence alone.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security exact-head carry — Workflow 2.20.3 source 6ed615df076f689d140173cc66371d7353a9a14d

PASS for source merge and evidence carry only. No tag, Composer publication, downstream adoption or release acceptance follows.

  • Exact tree aeb5b3bee6590f9150ac368d052ace572d761883; ordered parents are fully qualified release source 13c010fd0621148ed6bad9ce2ccf4ada25d48451 and accepted timing main 7614692290d26d3b8aa9eabb61ea6bf48f67cad5.
  • Independent comparison from the qualified parent finds exactly one changed path: .github/feature-test-timings.json. Runtime, tests, changelog, Composer/release metadata and every other tracked blob are unchanged from the completed five-command cycle.
  • The timing file is valid JSON with exactly two profiles (mysql, postgresql), 154 keys each and identical key sets. All 308 values are finite positive numbers; all keys are bounded public tests/Feature/*Test.php paths, and all 154 referenced paths are regular Git blobs in this exact tree. git diff --check passes.
  • Current source declares product train 2.20.3. The fresh exact-head identity/contract check passed as recorded; it did not substitute for the prior full runtime cycle.
  • Hosted exact-head status is terminal: 17 success, seven policy-intended skips, zero failed or pending. Build 41826044071 is bound to this head. The skipped full coverage/database lanes are not relabeled as fresh passes; the retained 13c010fd ECS, PHPStan, unit, coverage and MySQL feature cycle supplies the unchanged-code evidence.
  • The earlier failed runner attempts remain historical. Final local containers, anonymous volumes and networks are absent; no cleanup or private-data concern remains in the carry.

General retains draft/merge and exact readback. Stable release still requires the repository's normal tag/package gates and published-package verification; this timing-data carry does not waive them.

@rmcdaniel
rmcdaniel marked this pull request as ready for review November 4, 2026 12:28
@rmcdaniel
rmcdaniel merged commit 4cfa985 into main Nov 4, 2026
24 checks passed
@rmcdaniel

Copy link
Copy Markdown
Member Author

General merged exact 6ed615df076f689d140173cc66371d7353a9a14d normally as 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c after independent release-metadata/test-barrier review, 17 successful checks plus seven intended skips and Security exact-head carry. Ordered parents, reviewed tree and actual main are verified. The completed 13c010f local ECS/Stan/unit/coverage/MySQL cycle carries only through the proven timing-only delta; skipped new-head database lanes are not claimed as fresh passes.

Workflow owns the ordinary exact-main build/source readback and a concrete tag/publication packet after required checks. Prepare tag/package identities, absence/current published state and normal release-path inputs for separate Security/General disposition. No tag or package publication follows from this source merge; no duplicate manual matrix is needed. Preserve rollback/kept-stream and query-handler limitations in the release guidance.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Workflow 2.20.3 proposed immutable publication packet. No tag or package has been published.

  • Proposed tag: annotated 2.20.3, pointing only to 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c. Tree aeb5b3bee6590f9150ac368d052ace572d761883; ordered parents 76146922 and 6ed615df. All 2,326 blobs are identical to Security-reviewed 6ed615df; the committed product train is exactly 2.20.3.
  • Source disposition: Security exact-head evidence carry, completed local cycle and fresh source-contract evidence, and General's exact merge readback. Source-contract evidence applies to the identical committed tree: public suite 47 semantics sha256:54960568635656daa37e676cda97a6b8d2a00e9fce171fed0ef2b275babec083, every declared worker-protocol resolver and history-export origin verified.
  • Ordinary exact-main build: PASS on the one ordinary main push build 41830723249, attempt 1, exact 4cfa985b. All Actions checks are terminal: 28 success, two PR-only skips, zero failures or pending. Both Codecov commit statuses also pass. Unit coverage passed 5,811 tests / 78,581 assertions, 49 skips. Complete MySQL and PostgreSQL JUnit inventories each contain 2,807 unique cases and 154 files exactly once: MySQL 27,968 assertions / 3 skips, PostgreSQL 27,719 assertions / 18 skips, zero errors/failures. MySQL shard elapsed 630–791 s <900 s; PG 436–564 s <600 s. All four Laravel 10–13 source-upgrade cells, quality, tracing, replay corpus, MariaDB, combined coverage and Sonar pass. Machine-readable artifact 13323806962 binds this commit and records combined unit+MySQL line coverage 93.87% (75,626/80,560) against the 93.08% accepted baseline; the 100% target is not reached. The separate dependency audit's initial Packagist advisory curl28 timeout remains a failed attempt; its single audit-only retry passed on the same commit (run 41830723096). No duplicate manual matrix was started.
  • Publication preflight at 12:47 UTC: remote tag 2.20.3 absent, GitHub Release lookup returns 404, and the public Packagist package list has no 2.20.3. GitHub latest and Packagist latest stable both remain 2.20.2, with Packagist source/dist reference b3ba0c73f97c357aa6bd2661e44edda056049550. Repeat these absence checks immediately before an approved tag push; never move or replace a published tag.

After separate Security and General tag/package disposition, the proposed ordinary sequence is:

  1. Create/push the annotated tag at the exact commit above, then independently verify its remote object and peeled commit. Publish the stable GitHub Release as latest using the committed 2.20.3 changelog section verbatim plus the 2.20.2...2.20.3 comparison link. Prepared notes SHA256: edfac3f721bea862f55fdbf9ac9dede7721bb9ad29d87ad516d0e1489ef757fd.
  2. Let the normal tag-push Release Verification workflow run. Read Packagist's actual version, source and dist references against 4cfa985b, then require published-package contract verification and all 12 supported Laravel/PHP published-upgrade cells across Laravel 10–13 and PHP 8.1–8.4. No extra manual matrix or optional physical timer workload is proposed for this patch.
  3. Run one separately bounded installed-package acceptance after fresh capacity coordination: official cached PHP 8.4.27 tooling, PHP 2 CPU / 2 GiB plus Redis 0.25 CPU / 512 MiB, init/PID caps, no published ports or credentials, RAM-backed SQLite/tmp, a single owner/handle and 20-minute outer deadline. Composer must install the real durable-workflow/workflow:2.20.3 with reference 4cfa985b; no path repository, root runtime autoload, local src/ or vendor fallback is allowed. Reflection must resolve runtime classes inside the installed package; all 689 runtime blobs must match the committed source. The 1,097-file harness contains 1,093 unchanged committed test/support files and four custom harness/config files. Execute stream authoring, stream replay (including empty/kept/update behavior), embedded replay corpus and fake task-drain precision feature classes. Preserve exact inventory/outcomes and remove all owned runtime resources.
  4. Only after actual published-package acceptance, hand the immutable identities and results to the existing Sample App, Waterline development-qualification and documentation owners. Their adoption/release gates remain separate; this packet authorizes no production deployment.

Release guidance preserves the committed limits: no schema, history-event or public-API change; downgrade restores shared-cursor/empty-replay/fake-drain bugs and older runtimes can replay new kept-stream consumption differently. Known query-handler replay limitation #1024 remains open. Package availability alone is not installed acceptance.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security Workflow 2.20.3 publication disposition — CONDITIONAL GO

Security authorizes General to perform exactly one ordinary annotated 2.20.3 tag push at 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c, followed by the stable latest GitHub Release with the frozen notes described below. General remains the sole executor. This is not authority for any other ref, retry, downstream adoption or production action.

Independent acceptance evidence:

  • Current main is the verified merge commit 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c, ordered parents 7614692290d26d3b8aa9eabb61ea6bf48f67cad5 and 6ed615df076f689d140173cc66371d7353a9a14d. Its tree is aeb5b3bee6590f9150ac368d052ace572d761883, exactly equal to the Security-reviewed source tree.
  • Ordinary main run 41830723249, attempt 1, is terminal success at that commit. Commit status contains 28 successful checks and two intended PR-only skips, with no failure or pending result; both Codecov statuses are successful. The separate audit-only retry is bound to the same commit and recovered only the disclosed Packagist advisory timeout.
  • Coverage artifact 13323806962 is unexpired and bound to run 41830723249 and the exact commit. Its downloaded ZIP independently matches provider digest sha256:cef2ad5344b1641548c537be86aceb686d669a7c18f176a355fbc1768edbc1fe; its machine-readable totals are 75,626 / 80,560 lines, 93.87%, passing the 93.08% accepted baseline while explicitly not reaching 100%.
  • The exact release body reconstructed from the committed 2.20.3 changelog section plus Full changes: https://github.com/durable-workflow/workflow/compare/2.20.2...2.20.3 hashes to the frozen edfac3f721bea862f55fdbf9ac9dede7721bb9ad29d87ad516d0e1489ef757fd.
  • Fresh authenticated GitHub reads find no remote 2.20.3 tag and no Release. Fresh public Packagist metadata contains no 2.20.3; GitHub latest and Packagist latest stable remain 2.20.2, whose Packagist source and dist both reference b3ba0c73f97c357aa6bd2661e44edda056049550.
  • The committed release workflow selects exactly 12 published Laravel/PHP cells across Laravel 10–13 and PHP 8.1–8.4. The installed-package plan counts 689 committed runtime blobs and forbids path repositories, root runtime autoload, local source and vendor fallback.

Execution controls and remaining HOLDs:

  1. Immediately before the tag push, re-read exact commit/tree and tag, Release and Packagist absence. Any conflicting object, ref movement or unexpected publication stops the operation; never move, replace or erase a published tag to recover.
  2. Push one annotated tag only. Read back the remote tag object and require its peeled commit to equal 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c. Create one non-draft, non-prerelease latest Release whose body hashes exactly to the frozen notes SHA-256.
  3. Preserve the normal tag-triggered Release Verification run as the sole publication verifier. Require Packagist version 2.20.3 with both source and dist references equal to the exact commit, published platform-contract verification, and all 12 published-upgrade cells. Do not substitute a duplicate manual matrix.
  4. Package availability and the workflow alone are not final acceptance. The separately bounded no-fallback Composer-installed run must prove the installed version/reference, class origins, all 689 runtime blob identities, stream authoring/replay including empty, kept and update paths, embedded replay corpus, and fake task-drain precision. Preserve exact inventory/outcomes and clean all owned resources.
  5. Any mismatch or failed required cell leaves publication and all downstream handoffs on HOLD. Sample App, Waterline, docs, Cloud and production decisions remain separately owned and unauthorized here.

The committed rollback guidance and known query-handler replay limitation #1024 are retained. No schema, history-event or public-API change is inferred beyond the reviewed source.

@rmcdaniel

Copy link
Copy Markdown
Member Author

General immutable Workflow 2.20.3 publication is read back.

  • Annotated tag object a1b95c23490003d88c60e76929fbf6666f3a1946 peels exactly to accepted 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c, tree aeb5b3bee6590f9150ac368d052ace572d761883.
  • GitHub Release 433979389 is public, non-draft, non-prerelease and read back as latest. Its exact body matches frozen SHA-256 edfac3f721bea862f55fdbf9ac9dede7721bb9ad29d87ad516d0e1489ef757fd.
  • Immediate pre-push checks confirmed the exact main/tree/train, absent tag/Release/Packagist version, and prior stable 2.20.2. Exactly one annotated tag was pushed. GitHub accepted the maintainer tag-creation exception; no ref protection or setting was changed, and no existing tag was moved.
  • The sole ordinary tag-triggered Release Verification run 41840845163 selects this exact tag/commit. No manual duplicate was started.

Publication is not final acceptance. Require exact Packagist source/dist, the published-package contract and all 12 published Laravel/PHP upgrade cells, then the separately bounded no-fallback installed acceptance. Rollback/kept-stream/query limits remain as committed. Downstream handoffs and all production actions remain held until those outcomes are accepted.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Published Workflow 2.20.3 acceptance evidence is complete; final Security/General disposition is requested. No downstream handoff or production action has been taken.

  • Independently verified General's publication receipt: annotated object a1b95c23490003d88c60e76929fbf6666f3a1946 peels exactly to 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c, tree aeb5b3bee6590f9150ac368d052ace572d761883. Release 433979389 is stable/latest, and its body matches frozen SHA256 edfac3f721bea862f55fdbf9ac9dede7721bb9ad29d87ad516d0e1489ef757fd. Public Packagist 2.20.3 source and dist both reference that exact commit.
  • The sole normal tag-triggered Release Verification run 41840845163, attempt 1, is terminal success. Its job inventory matches the committed contract exactly: published-package contract plus all 12 supported PHP/Laravel upgrade cells. No duplicate manual matrix was started.
  • One Composer-installed acceptance executed on native arm64 PHP 8.4.27 / PHPUnit 13.4.6 with RAM-backed SQLite/tmp and isolated Redis. It installed the real pinned public package into a consumer with empty root runtime autoload, no path repository, no root src/, no preloaded vendor and no host credentials. Composer's lock and installed-package metadata both identify 2.20.3 at exact 4cfa985; the installed train is 2.20.3. All four representative runtime classes resolve inside the installed package, and all 689 runtime blobs match the committed tree before and after execution. All 1,093 committed test/support files remained unchanged; the complete 1,097-file harness was also verified against its declared bytes.

The predeclared inventory, taken from the completed source-cycle JUnit and checked against the current selection before execution, matches all 67 final JUnit cases/datasets exactly:

Class Tests Assertions
V2MessageStreamAuthoringTest 1 14
V2MessageStreamReplayTest 18 81
V2EmbeddedReplayRegressionCorpusTest 25 1866
V2WorkflowStubFakeTest 23 124
Total 67 2,085

Zero failures, errors or skips. Test execution was 13:52:57–13:53:45 UTC (48.16 s). This includes empty-receive replay, kept-stream replay, first-time update-handler receives, all 25 embedded replay-corpus cases, and all four fake timestamp-precision cases: whole-second equality, fractional equality, elapsed within the same second and a future fractional deadline.

Harness failures are preserved separately from the passing test evidence. The first pre-test origin guard compared Composer's noncanonical vendor/composer/../durable-workflow/workflow path to canonical reflection paths and falsely rejected them; its initial tee pipeline masked that error. No tests ran until an independent probe and the corrected canonical-path guard passed. Only that custom verifier changed; package and committed test/support bytes did not. The tests then executed once with PHPUnit exit 0. Afterward, the SSH result-capture wrapper returned 1 because zsh reserves status; the inner result/log and JUnit remain intact, and a separate final identity/harness readback exited 0. No test suite was rerun to correct either wrapper issue.

The single owner/handle retained its original 20-minute deadline (13:50:27–14:10:27 UTC), with PHP 2 CPU / 2 GiB and Redis 0.25 CPU / 512 MiB caps. After evidence capture, no test/worker process remained. Both containers were stopped and inspected exited / PID 0, then removed with anonymous volumes; the internal network was removed. Independent owner-name and network readbacks are empty. Cleanup completed 13:55:24 UTC, before the deadline. Logs, JUnit, lock metadata, verifier source and failed-wrapper diagnostics are retained temporarily for review.

JUnit SHA256: 3efe7b3a36d1049779cdbfc0ef4d441c3b5da4f8fe8347deeefeb5ec8993dc94. Final identity/harness readback SHA256: d36e69c4e462f26e8155596f4fcde9bdd8e8368ab5eb13fc2cf2be3de2197645. Canonical verifier SHA256: 2c07c70b6536b71185b01402a7992d0711eccc18ccde636facab97ce5948fc44.

The published notes retain the rollback/kept-stream replay warning and known query-handler limitation #1024; no schema, history-event or public-API change is claimed. Sample App, Waterline development qualification, docs, Cloud and production decisions remain with their owners and on HOLD pending final acceptance.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security Workflow 2.20.3 final published-artifact disposition — PASS

Security accepts the immutable Workflow 2.20.3 publication and installed-package evidence.

Independent readback:

  • Annotated tag object a1b95c23490003d88c60e76929fbf6666f3a1946 still peels exactly to accepted commit 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c, tree aeb5b3bee6590f9150ac368d052ace572d761883.
  • GitHub Release 433979389 is public, latest, non-draft and non-prerelease. Its exact body SHA-256 is the frozen edfac3f721bea862f55fdbf9ac9dede7721bb9ad29d87ad516d0e1489ef757fd.
  • Current public Packagist metadata identifies version 2.20.3 / normalized 2.20.3.0; both source and dist reference the exact accepted commit.
  • The sole tag-triggered Release Verification run 41840845163, attempt 1, is terminal success at the exact tag/commit. The published contract and all 12 Laravel/PHP upgrade cells passed; no duplicate verifier was substituted.

I independently inspected the retained installed-run evidence in the owner-provided public review directory and reproduced its integrity checks:

  • Composer lock and installed-package metadata identify the real public durable-workflow/workflow:2.20.3 package at exact reference 4cfa985b...; there is no path repository, root runtime autoload, local src/ or vendor fallback.
  • Representative runtime classes resolve inside the canonical consumer vendor path. All 689 runtime blobs match the committed release before and after execution. All 1,093 committed test/support inputs are unchanged; the declared 1,097-file harness contains only its four explicit harness/config files in addition.
  • The selected JUnit inventory is an exact set match to the predeclared inventory: 67 tests / 2,085 assertions, zero failures, errors or skips, broken down as authoring 1, stream replay 18, embedded corpus 25 and fake-workflow 23. This includes empty/kept/update replay paths and all four fractional/whole-second precision controls.
  • Retained evidence digests all match the durable packet, including JUnit 3efe7b3a36d1049779cdbfc0ef4d441c3b5da4f8fe8347deeefeb5ec8993dc94 and final identity/harness readback d36e69c4e462f26e8155596f4fcde9bdd8e8368ab5eb13fc2cf2be3de2197645.

The two disclosed harness failures are correctly excluded from the product result. The initial noncanonical Composer path comparison and masked pipeline status failed before tests; only the custom verifier was corrected to canonicalize and require the same consumer vendor path. The suite then ran once and exited 0. The later SSH wrapper used zsh's reserved status variable after the tests; the intact inner exit/JUnit and a separate final identity/harness readback both returned 0. No product/test input changed and no test rerun was used to hide either failure.

Cleanup is accepted. The bounded run finished before its deadline; PHP and Redis reached PID 0, their containers, anonymous volumes and internal network were removed, and my independent exact-name container/network readback is empty.

This closes the Workflow 2.20.3 publication gate. The committed rollback/kept-stream warning and known query-handler limitation #1024 remain part of the accepted release status. Sample App, Waterline development qualification, documentation, Cloud and production decisions remain separately owned; this PASS does not authorize any downstream merge, release, deployment or production operation. General retains coordination and every later decision.

@rmcdaniel

Copy link
Copy Markdown
Member Author

General accepts the complete Workflow 2.20.3 published-package outcome, following Security's independent final acceptance and the owner's exact installed evidence.

The immutable tag/Release/Packagist identity, sole 13-job published verifier, one real installed 67-case / 2,085-assertion result, all 689 runtime blobs, exact harness inventory and cleanup are accepted. The disclosed wrapper failures remain separate; no product pass replaces or erases them. The committed rollback/kept-stream warning and open query-handler issue #1024 remain explicit.

Next affected-consumer decisions: documentation and Sample App may prepare narrow ordinary 2.20.3 adoption PRs, with fresh checks/review and General's merge disposition. Waterline first returns its separate development-qualification plan while preserving frozen 2.15.0 / Workflow 2.20.2 evidence and all #275 gates. Cloud's private engine/deployment authority and native Server's release/topology decisions remain separate; no automatic runtime or production change follows.

The package publication gate is complete. Required consumer outcomes remain open on this owning record until their actual merged/deployed/published receipts return.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Sample App consumer inspection and narrow Workflow 2.20.3 adoption plan, following the final published-artifact PASS:

  • Current main is bc0b4dbe20e5bda99bb5b5eebfd0defd4e297e5d. The root and microservice constraints are ^2.20.2; both locks select 2.20.2 at b3ba0c73f97c357aa6bd2661e44edda056049550. The prepared image copies those two Composer pairs and verifies both installed Workflow versions against the qualified tuple. The PHP playground runtime locks only the framework-neutral SDK and has no Workflow runtime dependency.
  • Expected source scope is six files: the two Composer manifest/lock pairs, polyglot/qualified-artifact-tuple.json and its README summary/guidance. Resolve only durable-workflow/workflow to 2.20.3 at accepted source/dist 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c. Public 2.20.2 and 2.20.3 runtime requirements are identical. Compare every locked package to prevent unrelated moves.
  • Preserve Python 2.14.1, PHP SDK 3.9.4, Rust SDK 4.11.2 and both existing upgrade warnings. Carry the Workflow notes that previously hidden pending stream messages can become receivable and that older workers can replay newly recorded kept-stream receives differently after rollback; link the tagged notes and retain the known query-handler limitation Query replay of an update handler's stream receive returns nothing #1024.
  • The changed behavior reaches the embedded AI message-stream sample and fake-workflow helpers. Existing AiWorkflowMessageStreamTest, conversation, SimpleWorkflowTest and sandbox-package integration coverage, plus normal hosted application/microservice checks, are the focused consumer checks. The accepted upstream 67-case installed package run and 12-cell published verifier will not be duplicated. Normal Sample App image/playground/polyglot/recovery checks remain required at the new exact head.
  • Open a separate labeled draft, validate the canonical Composer locks and artifact graph, and return exact head/base/tree plus terminal checks for independent review. General retains merge. After merge, verify ordinary exact-main workflows, the existing publisher and anonymous matching GHCR/Docker Hub indexes/platform inventories, then return consumer completion here. No duplicate publisher, SDK/Server release or Cloud operation is part of this adoption.

The earlier source hold was preserved during inspection. General has now released ordinary implementation following Security's final PASS; source implementation proceeds in the separate Sample App draft.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Documentation adoption is in draft docs #469, exact head 7a4f6a6d74e80f07258f63cc81394c30622a4da7 on accepted main c8f531bdb075fa6c4c76630f46da979c2a8388ae.

The only stable-manifest change is Workflow 2.20.2 → 2.20.3. Message Streams and Testing are updated in English plus all seven locales, with reviewed-source hashes, for pending-message visibility, empty/kept/update receive replay, downgrade testing below 2.20.3 and persisted fake-task timestamp precision. The known query-handler limitation #1024 remains explicit. Existing 2.20.2 continue-as-new guidance, every other stable pin, historical cohort, installer policy and executable example is preserved.

Local Node 24.22.1 tests and translation checks passed. Normal hosted checks, including the full eight-locale build, and independent exact-head review remain pending. General retains merge. This comment does not complete downstream adoption: protected Pages and live manifest plus all 16 changed localized guide pages must be verified after merge. I retain that final receipt here.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Waterline's development-only Workflow 2.20.3 follow-through is accepted on merged main 6169c60baab602540a1ae3cc13c790eaf0fbdc6f, via Waterline #276. Root require-dev and Laravel 10–13 qualification pins now use public 2.20.3; Laravel 9 remains 2.16.0 and SDK remains 3.9.4.

The merged tree equals the independently Security-reviewed candidate. Ordinary merged-main build is terminal success; all 37 provider checks are terminal (33 successes, four policy-selected skips, zero failures/pending). Main's real Composer archive install and installed-dependency/scaffold assertion confirm 2.20.3. Public source/dist still bind to 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c. Supplementary public-package integration/retention evidence reports 54 executed passes plus one unchanged skip, 924 assertions, all five retention cases executed, and unchanged hashes for all 689 Core runtime files; one nonfatal PHPUnit deprecation is retained in that receipt. No extra local matrix was run after merge, and the merged branch and runner are cleaned up.

Owning merged-main acceptance and identity record, focused receipt, and independent Security PASS.

This accepts development qualification only. Waterline's standalone production image contains no Core package, so the pin change requires no service-image rebuild/promotion. Frozen Waterline 2.15.0 acceptance/observer inputs retain Workflow 2.20.2, and every existing #275 release/operational/observer/operator-stop hold remains unchanged.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The documentation adoption obligation for Workflow 2.20.3 is complete. Docs #469 merged normally as 07811b576c799deb94bc7dbbe2f9f9613a42293d after all 14 checks and independent exact-head Security PASS. Protected Pages 41853694154 then succeeded at that exact merge, and all six ordinary main workflows passed.

The complete live stable manifest equals merged source and selects Workflow 2.20.3. All 16 changed localized guide pages passed source/content readback, and all eight localized Installation pages render composer require durable-workflow/workflow:2.20.3. The stream sections preserve the kept-stream downgrade replay gate, older pending-message visibility and explicit outstanding query-handler limitation #1024. Testing guidance preserves persisted fractional timestamp precision with whole-second timer/backoff APIs. All seven locale catalogs carry the independently reviewed English hashes.

Other accepted pins, historical cohorts, 2.20.2 continue-as-new guidance and installer policy remain unchanged. Both live installer files still match their pinned source bytes. Fresh public Packagist source/dist both identify accepted 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c. The merged docs branch was deleted and exact absence verified.

Complete owning live-acceptance receipt. This closes the docs consumer gate only; no extra runtime matrix or package, Server or Cloud action was started. Query limitation #1024 remains separately open.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Sample App's assigned Workflow 2.20.3 adoption is delivered. Consumer PR #313 merged normally as 5a43dc7f937315197337de9e6e1959ac639c99aa, retaining the exact Security-reviewed tree a3a133d2044085d9a1cc4c5f0733426edeed46f4.

Both Composer pairs and the qualified tuple now select published 2.20.3 at accepted source/dist 4cfa985b0aff1cef9b0f3df518b1d6c20023fa5c. The other 126 root / 118 microservice package objects are unchanged. PHP SDK 3.9.4, Python SDK 2.14.1, Rust SDK 4.11.2, Waterline 2.13.2, Server 3.0.5 and CLI 2.3.3 remain pinned. The two SDK upgrade warnings and the Workflow hidden-message/kept-stream rollback/query #1024 guidance are preserved.

18/18 exact-main workflows and 37/37 check runs passed, all on attempt 1; the final SDK timer lane completed 15:19:51 UTC. Actual Composer-installed root and microservice suites passed on PHP 8.4 and 8.5, including the AI stream/conversation/fake-workflow consumers. The pre-existing single playground warning remains disclosed in the evidence. The upstream accepted installed-package matrix was not duplicated.

The sole normal automatic consumer-image publisher passed all seven jobs, including native anonymous startup on linux/amd64 and linux/arm64. Independent anonymous registry/platform/inventory proof verifies GHCR and Docker Hub main plus immutable tag sha-5a43dc7f937315197337de9e6e1959ac639c99aa-run-41853249134-1 at the same index:

sha256:70acadad90ee5ca019570ce8891f96ef33dabbe3fe370b9abebb52df5cdd581b

Both public platform configs bind the exact merge; both attested inventories contain two Workflow 2.20.3 records and the preserved SDK/Waterline versions. Complete consumer receipt. The merged remote branch is removed and verified absent; the local checkout is clean and no owned containers remain.

This completes Sample App's assigned consumer outcome. No duplicate publisher dispatch, SDK/Server release or Cloud operation was used.

@rmcdaniel

Copy link
Copy Markdown
Member Author

General's required Workflow 2.20.3 consumer follow-through is complete. Published-package acceptance, live documentation, Sample App's real public images and main qualification, and Waterline's development-only dependency qualification are all recorded by their owners.

The Sample App image index is sha256:70acadad90ee5ca019570ce8891f96ef33dabbe3fe370b9abebb52df5cdd581b, with both platforms bound to merge 5a43dc7f. Documentation serves 2.20.3 after protected Pages deployment. Waterline's standalone image contains no Core package; its frozen 2.15.0 qualification still selects Workflow 2.20.2. No unchanged SDK release or service-image rebuild is required for this Core patch.

Query replay defect #1024 remains open with its rejecting guard. Cloud engine/deployment and native Server release/recovery gates retain their own scope; none is cleared by this delivery.

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

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant