Skip to content

Release native Server 3.9.2 command-key correction - #1209

Merged
rmcdaniel merged 2 commits into
mainfrom
release/native-3.9.2
Nov 13, 2026
Merged

rmcdaniel merged 2 commits into
mainfrom
release/native-3.9.2

Conversation

@rmcdaniel

@rmcdaniel rmcdaniel commented Nov 13, 2026 •

Copy link
Copy Markdown
Member

Published 3.9.1 refuses valid 255-code-point multibyte command keys and omits accepted keyed receipt metadata. This prepares immutable 3.9.2 for accepted #1207 and #1206 observation-owner hardening, with no new schema step from 3.9.0/3.9.1.

The own change is exactly two release files: tagged release notes and the published Compose image default. Notes preserve legacy unknown-intent/ambiguity authority, the 3.8 schema/restore boundary, unchanged completion limits, separate installed #216/#228/Cloud gates and unresolved #1204. #1194's completed 20-run gate is recorded accurately.

#1207 passed all 63 checks plus one intended skip and merged normally at 1b9f9d1. This release PR is retargeted to main and normally refreshed at 68ae53b, tree ff95e3f6fa9414472503a86610dfb018751a178f. Its full-tree diff from reviewed eb88f0a is empty; own diff remains the same two files. Security final tree/history PASS is comment6856886332. Compose renders the exact intended image; boundary/secret/whitespace controls pass.

Fresh exact-head required checks remain mandatory before ready/merge. After normal merge, immutable tag publication/scans, exact-image corpus and four-cell Compose, reviewed five-receipt manifest, protected aliases and final Release/readback remain separate gates. No 3.9.2 tag/image/publication has started. Keep #1200's later schema feature draft until the corrective patch tag. Installed client and physical-upgrade source/receipts remain separate under #216/#1210.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security release-source review: PASS for stacked exact head eb88f0aeeeddf2b1e28b18ffdfabe0cefe921f32 / tree ff95e3f6fa9414472503a86610dfb018751a178f; this is not yet the final retargeted tree or tag disposition.

The complete own diff from refreshed #1207 0f06d98a09be748cd0f2c69b159a23c61cd4cd46 is exactly:

  • new docs/releases/3.9.2.md; and
  • the published Compose default changing from durableworkflow/server:3.9.1 to durableworkflow/server:3.9.2.

No runtime, schema, workflow, release-tooling, fixture, or policy file is changed by this commit.

The release wording accurately bounds the corrective patch:

The 3.8→3.9 schema versions and backup/stop/upgrade/rollback boundary are consistent with 3.9.1. The relative legacy-vector link remains inside the repository and will be rewritten against the immutable tag by the protected GitHub Release tooling.

Independent checks: git diff --check is clean; scripts/ci/check-native-release-tags.sh passes its publication/zero-write/release controls; and Compose renders the default image as exactly durableworkflow/server:3.9.2 (with a synthetic required auth token) alongside unchanged MySQL 8.0.

Hold merge/tag/publication on this stacked identity. First merge #1207 normally after all of its required checks, refresh/retarget #1209 onto accepted main without broadening the two-file release delta, request the final exact-tree/history countercheck, and require fresh exact-head/full source and immutable publication/scan/corpus/Compose qualification. No tag or alias movement is authorized by this source PASS.

@rmcdaniel
rmcdaniel changed the base branch from fix/server-934-unicode-command-keys to main November 13, 2026 15:04
@rmcdaniel

Copy link
Copy Markdown
Member Author

Security final tree/history counter-review: PASS for exact head 68ae53b8f494437eb1f52605dd5df917a88c46cb (tree ff95e3f6fa9414472503a86610dfb018751a178f).

This is a normal two-parent refresh of the previously approved release commit eb88f0aeeeddf2b1e28b18ffdfabe0cefe921f32 onto accepted #1207 main 1b9f9d1548fe2871427cc95f279607d12d09e266. The full tree has an empty diff from reviewed eb88f0ae; no conflict resolution or content change was introduced.

Against accepted main, the entire PR-owned delta remains exactly:

  • docs/releases/3.9.2.md; and
  • the one-line published Compose default change in docker-compose.published.yml.

git diff --check is clean, the tree and parent history are exact, and no local 3.9.2 tag exists. The release wording and file scope therefore retain the prior source approval without modification.

This is not tag or publication authorization. Fresh exact-head required CI remains the merge gate; several lanes were still pending at this readback. Immutable build, scan, corpus/Compose qualification, final receipts, protected promotion, release metadata, and alias readback remain separate post-merge controls.

@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel
rmcdaniel marked this pull request as ready for review November 13, 2026 15:21
@rmcdaniel
rmcdaniel added this pull request to the merge queue Nov 13, 2026
Merged via the queue into main with commit 5614274 Nov 13, 2026
29 checks passed
@rmcdaniel
rmcdaniel deleted the release/native-3.9.2 branch November 13, 2026 15:27
@rmcdaniel

Copy link
Copy Markdown
Member Author

Normal merge accepted 5614274d2629d03f92932a07dfee0fb10349ddd9, whose complete tree is exactly reviewed ff95e3f6fa9414472503a86610dfb018751a178f. All21 exact-head checks plus8 intended skips passed, followed by green normal merge-group checks. Security final tree/history PASS is comment6856886332.

Immutable tag 3.9.2 now points to that accepted commit. Protected native publication run43452744563 was dispatched from the tag with that exact source; both architecture build/smoke jobs are in progress. No image/index, scan, corpus, Compose, alias or final Release success is inferred. The merged remote release branch was deleted and absence verified.

Next Server actions are exact-image scans and corpus/four-cell Compose, independent artifact/five-receipt review, protected alias promotion and final Release/readback. Stable aliases remain on3.9.1 until those gates pass. Installed #216 and physical upgrade/source #1210 remain separately recorded. The tag fixes the unchanged3.9 schema boundary; the later dispatch-summary source can refresh normally without changing this immutable patch.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Protected native3.9.2 publication/scans run43452744563 is complete and successful across all six jobs. Both architecture smokes, index verification/attestation and published-child scans passed. Source/tag is immutable5614274d2629d03f92932a07dfee0fb10349ddd9.

Fresh anonymous raw indices from GHCR and Docker Hub are byte-identical:

  • index sha256:8ffcdb2a36af3129a1987849aafe8715fe0d3bf9a9648467f0b5cb8eeef43ba9;
  • linux/amd64 sha256:813c9337c44be7d497efd29e1b463546519e488aa796b5ecf9dfc6f4f10d2128;
  • linux/arm64 sha256:d3b962e54b93e23f143fc275a9b88f871160c7868128286e4fc2de0326985d34.

The two existing exact-tag qualifiers are admitted on that same GHCR index: corpus43455013301 and four-cell Compose43455018588. Their results and independent artifact/five-receipt Security review remain pending. Stable aliases and final GitHub Release are unchanged; publication alone is not promotion qualification. Chart1.7.1/app3.9.2 is prepared in draft #1211 and retains the producer/OCI/downstream pairing gates. No SBOM or installed #216/#228/Cloud acceptance is inferred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security final immutable-publication review: PASS for the Server 3.9.2 native tuple.

Qualified subject:

  • tag/source: 3.9.2 / 5614274d2629d03f92932a07dfee0fb10349ddd9;
  • build/scans: run 43452744563/a1, all six jobs successful;
  • cross-registry index: sha256:8ffcdb2a36af3129a1987849aafe8715fe0d3bf9a9648467f0b5cb8eeef43ba9;
  • linux/amd64: sha256:813c9337c44be7d497efd29e1b463546519e488aa796b5ecf9dfc6f4f10d2128;
  • linux/arm64: sha256:d3b962e54b93e23f143fc275a9b88f871160c7868128286e4fc2de0326985d34.

I independently re-read both registries. Their raw index bytes are identical and hash to the stated index; each exposes exactly the two expected platform descriptors. Each child manifest is byte-identical between registries and hashes to the platform digest above. The selected configs bind the expected source/version/revision/run labels, non-root 1000:1000, entrypoint/workdir/port/stop-signal, and the independently observed image-config digests. The tag is lightweight and resolves exactly to the source commit.

The smoke and scan artifact downloads match the GitHub API artifact digests. All published-image smoke cells passed version/readiness/termination behavior and the unauthenticated/takeover refusals. The amd64 and arm64 scan inventories have the same vulnerability fingerprint, with zero actionable findings; the recorded critical/high findings are consistently classified as affected with explicit deferred/will-not-fix dispositions and no claimed fixed version. The pinned scanner/tool/database identities match the workflow. Both GHCR and Docker Hub attestations verify against the repository and qualified subject.

All five canonical qualification receipts independently validate:

  • exact-tag corpus run 43455013301/a1 is successful. Raw artifacts match API digests 20f96a047296490beddcb470e4ae29eaf178ac9febb753d215289644b6eeac49 (parity evidence) and e6cbbad78760ab0ba96a95a3fd8c62c20482ee0d4f4be4f96806c73e8d6a29af (promotion receipt). The receipt is eligible, binds the exact tag/source/index/amd64 child/config, linux/amd64, run/job/repository, subject blob 0a2e804ed18b58077f539ca2d0b7222571de4387, and workflow blob 5130b55602951940869d215bee8a08c2dc9722d3; those blobs equal the exact tagged files. All seven corpus observation statuses are zero, every comparison family records outcome=pass, and owned containers/networks/volumes are absent.
  • four-cell Compose run 43455018588/a1 is successful for amd64/arm64 × local/production. The four raw receipt artifacts match API digests 4c547c045d6e6b810d551495b6fd7faadd0f0c3e4556cf11ef24f58b13045274, 31b98e7df3d189595c867c4db0539d9972f32a9e91846366dde75d834f0eaddc, dab17d763c92a1b69b349ab547f3f390e2e2cbe4f6cea7d60a52b7cd4e8135de, and fd3323caffb5a98d568bbb7960b4c30cbf7ed37f0bcb0d9acc72e09cb0aa62af. Every receipt is eligible, source/index/platform-child/profile bound, all required observations are true (with the local-only production-token field correctly non-applicable), and cleanup is verified absent.

This qualifies the immutable native 3.9.2 tuple for the separately protected alias/final-Release selection step. It does not itself qualify aliases, a GitHub Release, Chart 1.7.1, SDK/CLI consumers, #216/#228, Cloud adoption, or any later source/image. Those remain separate owner gates.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Exact promotion selection is now concrete for immutable3.9.2. All publication/scans, exact corpus and four Compose cells passed. Tagged read-only plan and full verify pass, including provider/provenance/both-registry identities and final Release absence. Security's independent immutable-tuple/five-artifact verdict is comment6858140177.

This exact manifest is1486 UTF-8 bytes (excluding file newline), SHA256 cea2faebf2971e180500d5dcdde996b3375aefda1b247be0756293417f4985bd. It selects current attempt1 of publication43452744563, corpus43455013301 and Compose43455018588, with the five provider artifact identities below. No hand-edited or older execution receipt is included.

{"compose":{"cells":[{"artifact_digest":"sha256:4c547c045d6e6b810d551495b6fd7faadd0f0c3e4556cf11ef24f58b13045274","artifact_id":14051919676,"job_id":131986752190,"platform":"linux/amd64","profile":"local"},{"artifact_digest":"sha256:31b98e7df3d189595c867c4db0539d9972f32a9e91846366dde75d834f0eaddc","artifact_id":14053152460,"job_id":131986751598,"platform":"linux/amd64","profile":"production"},{"artifact_digest":"sha256:dab17d763c92a1b69b349ab547f3f390e2e2cbe4f6cea7d60a52b7cd4e8135de","artifact_id":14053966416,"job_id":131986752169,"platform":"linux/arm64","profile":"local"},{"artifact_digest":"sha256:fd3323caffb5a98d568bbb7960b4c30cbf7ed37f0bcb0d9acc72e09cb0aa62af","artifact_id":14053493132,"job_id":131986752145,"platform":"linux/arm64","profile":"production"}],"run_attempt":1,"run_id":43455018588,"runner_commit":"5614274d2629d03f92932a07dfee0fb10349ddd9","workflow_blob":"09082357d57e7c95746d2f815715bb91414cf112"},"corpus":{"artifact_digest":"sha256:e6cbbad78760ab0ba96a95a3fd8c62c20482ee0d4f4be4f96806c73e8d6a29af","artifact_id":14053604924,"run_attempt":1,"run_id":43455013301,"runner_commit":"5614274d2629d03f92932a07dfee0fb10349ddd9","workflow_blob":"5130b55602951940869d215bee8a08c2dc9722d3"},"release":{"index_digest":"sha256:8ffcdb2a36af3129a1987849aafe8715fe0d3bf9a9648467f0b5cb8eeef43ba9","run_attempt":1,"run_id":43452744563,"source_commit":"5614274d2629d03f92932a07dfee0fb10349ddd9","tag":"3.9.2"},"schema":"durable-workflow.native-alias-promotion-evidence.v1"}

Security countercheck of this exact selection is requested before dispatching protected promotion. Promotion must repeat the same verification under the environment gate and alias lock. Stable aliases and final GitHub Release remain separate pending actions; no SDK/CLI/#216/#228/Cloud/Chart acceptance is inferred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security exact-selection review: PASS for the 3.9.2 promotion manifest recorded in issue comment 6858366224.

I extracted the fenced JSON as raw UTF-8 (without a terminal newline) and independently obtained exactly 1,486 bytes with SHA-256 cea2faebf2971e180500d5dcdde996b3375aefda1b247be0756293417f4985bd. Its closed schema, tag/source/index, three distinct attempt-1 runs, and complete four-cell platform/profile Cartesian set are correct.

Direct provider counterchecks:

  • publication 43452744563/a1, corpus 43455013301/a1, and Compose 43455018588/a1 are all current, completed successfully, and have head SHA 5614274d2629d03f92932a07dfee0fb10349ddd9 on their expected workflow paths;
  • corpus workflow blob 5130b55602951940869d215bee8a08c2dc9722d3 is .github/workflows/native-image-parity.yml at that commit;
  • Compose workflow blob 09082357d57e7c95746d2f815715bb91414cf112 is .github/workflows/published-compose.yml at that commit;
  • corpus artifact 14053604924 has provider digest sha256:e6cbbad78760ab0ba96a95a3fd8c62c20482ee0d4f4be4f96806c73e8d6a29af and is unexpired;
  • Compose jobs 131986752190, 131986751598, 131986752169, and 131986752145 belong to run 43455018588/a1, are successful, and name exactly amd64-local, amd64-production, arm64-local, and arm64-production respectively;
  • their artifacts 14051919676, 14053152460, 14053966416, and 14053493132 have the exact four declared provider digests and are unexpired;
  • tag 3.9.2 directly names commit 5614274d…; the previously reviewed immutable index remains sha256:8ffcdb2a… in both registries.

Pre-mutation boundary is also intact at review time: anonymous 3.9, 3, and latest reads in both registries still resolve to the prior qualified 3.9.1 index sha256:946c65eb…, and the GitHub Release for 3.9.2 returns an actual JSON HTTP 404.

This is a PASS for the exact manifest selection only. The protected workflow must still repeat provider/provenance/registry verification under its environment approval and non-canceling alias lock immediately before mutation. Alias readback and final GitHub Release remain separate required receipts. No Chart, SDK, CLI, #216, #228, or Cloud acceptance is inferred.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Protected alias promotion run 43460837991 succeeded from immutable tag 3.9.2. The same exact 1486-byte selection manifest SHA-256 cea2faebf2971e180500d5dcdde996b3375aefda1b247be0756293417f4985bd was verified before mutation and again under the protected rolling-alias lock. Independent selection review remains the evidence authority.

Fresh anonymous raw-index reads in both GHCR and Docker Hub confirm every tag 3.9.2, 3.9, 3, and latest hashes exactly sha256:8ffcdb2a36af3129a1987849aafe8715fe0d3bf9a9648467f0b5cb8eeef43ba9. Immutable source remains 5614274d2629d03f92932a07dfee0fb10349ddd9. No old version tag was moved.

Final GitHub Release metadata/tagged-notes/assets and live-alias readback remain the next gate. Chart 1.7.1, installed client #216 cohorts, completion #228, Cloud mapping and next-schema dispatch-summary publication remain separate.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security post-promotion countercheck: PASS for protected alias run 43460837991/a1.

Direct provider readback shows the workflow ran from tag/ref 3.9.2 at exact source 5614274d2629d03f92932a07dfee0fb10349ddd9, on .github/workflows/native-alias-promotion.yml, and completed successfully. All three ordered jobs succeeded: exact dispatch validation, read-only qualification verification, and the environment-gated/non-canceling alias promotion.

Fresh anonymous registry reads now return the independently approved immutable index sha256:8ffcdb2a36af3129a1987849aafe8715fe0d3bf9a9648467f0b5cb8eeef43ba9 for every selected tag:

  • GHCR: 3.9.2, 3.9, 3, latest;
  • Docker Hub: 3.9.2, 3.9, 3, latest.

There is no cross-registry or exact-vs-rolling divergence. The GitHub Release lookup for 3.9.2 still returns an actual JSON HTTP 404, so the separate final-Release gate has not been silently crossed.

This verdict closes only the alias mutation/readback step. The final GitHub Release and its metadata/readback remain required; Chart, SDK, CLI, #216, #228, Cloud, and other consumer acceptance remain independent.

@rmcdaniel

rmcdaniel commented Nov 13, 2026 •

Copy link
Copy Markdown
Member Author

Native Server 3.9.2 is now published as a stable Latest GitHub Release, release ID 444453759. Protected final Release run 43461855743 succeeded from main after the independently reviewed protected alias promotion.

Anonymous GitHub API readback confirms plain title/tag 3.9.2, non-draft/non-prerelease, Latest identity, and tag → exact immutable source 5614274d2629d03f92932a07dfee0fb10349ddd9. The complete published body equals the identity table plus notes read from that tag, with relative links resolved to immutable tag URLs (normalized-body SHA-256 9936981da71927dc6da8d76648cab660d7076374582c158794a59f29c7b661a5). The assets list is empty, matching the workflow; no SBOM asset is claimed.

The qualified index is sha256:8ffcdb2a36af3129a1987849aafe8715fe0d3bf9a9648467f0b5cb8eeef43ba9, linux/amd64 child sha256:813c9337c44be7d497efd29e1b463546519e488aa796b5ecf9dfc6f4f10d2128, linux/arm64 child sha256:d3b962e54b93e23f143fc275a9b88f871160c7868128286e4fc2de0326985d34. Immutable tuple/qualifier review, exact evidence selection, and protected alias/live readback remain separate, linked gates.

Final independent publication/metadata readback PASS is recorded. This is the recommended corrected native 3.9 patch tuple. Chart 1.7.1 still awaits its refreshed exact-head CI/review and protected OCI publication. Installed #216 cohorts, separate #228/Cloud requirements, and the next minor's dispatch-summary schema are not inferred from this Release. 3.9.0 remains held and all older published version tags remain unchanged.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security final publication/metadata countercheck: PASS.

I independently read the public GitHub API after protected Release run 43461855743 completed:

  • Release id 444453759 is public (draft:false, prerelease:false), named/tagged 3.9.2, published 2026-11-13T16:22:26Z, with assets:[] as required by the current workflow.
  • /releases/latest resolves to that same release id/tag; no older release is still Latest.
  • refs/tags/3.9.2 is the direct commit 5614274d2629d03f92932a07dfee0fb10349ddd9; GitHub reports a valid verified commit and tree ff95e3f6fa9414472503a86610dfb018751a178f.
  • The public body SHA-256 is 9936981da71927dc6da8d76648cab660d7076374582c158794a59f29c7b661a5. Its identity table names the exact accepted source, image index sha256:8ffcdb2a36af3129a1987849aafe8715fe0d3bf9a9648467f0b5cb8eeef43ba9, and publication run 43452744563.
  • After removing that identity header, the body is byte-identical to tagged docs/releases/3.9.2.md except for the one expected immutable rendering of ../../resources/platform-protocol-specs/command-key-legacy-v1-vectors.json to the public blob/3.9.2/... URL. No release-note content drift was found.
  • The separate protected alias/readback review already established fresh anonymous 3.9.2, 3.9, 3, and latest reads in both registries at the same 8ffcdb2a... index. Release creation did not change that selected tuple.

This closes the final Server 3.9.2 publication/metadata gate. It does not qualify Chart 1.7.1, installed SDK/CLI/Waterline/Cloud consumers, shared #216/#228, or any later source.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Root docs adoption is delivered through docs #538, merge cecdcc09d097c00799e6cc93b2490edc101ed076, protected Pages43470110585 SUCCESS. All24 changed public pages across eight locales, exact manifest and unchanged installers passed live readback.

The stable manifest selects Server3.9.2 / Chart1.7.1/app3.9.2, SHA256 d0bca325250f81ff6f9fa0cae696b4f6876ca64db1e0d5fcf72f309b403aa108. Its chart metadata is exactly OCI1275bdf2/packageca2a3b60/sourcef2edaa30/qualification43465478903, bound to native index8ffcdb2a/source5614274d. The upgrade path and reference describe no additional3.9.x schema step, rollback consequences, Unicode key/explicit receipt correction and opened-descriptor owner checks with trusted-ancestor/mapping limits.

This completes the root-docs selector/locales/build/public delivery slice. Installed client #216/#228, physical collector/Cloud mapping, draining uploads and next-schema dispatch retain their owners and exact evidence scopes; no broad acceptance is inferred. Both source and final artifact-data reviews are linked on538, including independent Security Chart publication/content PASS.

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