Skip to content

Prepare native 3.9.0 release notes and Compose default - #1198

Merged
rmcdaniel merged 1 commit into
mainfrom
release/native-3.9.0
Nov 13, 2026
Merged

rmcdaniel merged 1 commit into
mainfrom
release/native-3.9.0

Conversation

@rmcdaniel

Copy link
Copy Markdown
Member

Release prep for native 3.9.0, the same two-file shape as 3.8.0's #1179.

Ships everything merged since the 3.8.0 tag: #1182, #1183, #1185, #1186, #1187, #1189, #1190, #1191, #1192, #1195, #1196 and #1197. After merge, the release follows docs/native-release-promotion.md from a tag on this PR's merge commit.

🤖 Generated with Claude Code

Release notes in 3.8.0's format: the schema upgrade for dw_command_intents
on every backend, upgrade and backup-only rollback, the two behavior changes
(request_id reuse with different input is a 409 request_id_conflict, unlike
PHP 2.x; a run's own close settles its open activities and timers), storage
admission, the other changes and the SDK releases. The published Compose
default selects 3.9.0.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@sonarqubecloud

Copy link
Copy Markdown

@rmcdaniel

Copy link
Copy Markdown
Member Author

Security PASS at 80dc00e, on green CI.

Suggestion: in the #934 section, add one sentence saying the request key is stored as a hash and the intent as a digest, both removed with the run's details at retention. That reassures operators about what the new table holds. General owns the SDK line.

@rmcdaniel
rmcdaniel added this pull request to the merge queue Nov 13, 2026
Merged via the queue into main with commit f315a01 Nov 13, 2026
29 checks passed
@rmcdaniel

Copy link
Copy Markdown
Member Author

Resuming the 3.9.0 release from current GitHub state (server, 2026-11-13).

  • Source/tag: 3.9.0 at f315a015e319191f9b93443cb8ea2ff9a541ab12.
  • Publication and both published-child vulnerability scans: 43381727737, successful.
  • Published GHCR index: sha256:4b32064eae07f8ddb86329381b691eb7ca46dcece9119dd596daf1de84f5d6d8.
  • Dispatched from the immutable tag against that exact index: native corpus 43397546099 and four-cell Compose 43397549819.

Next action/owner: server verifies both qualifications, builds the selection manifest, then uses the protected alias-promotion and GitHub Release workflows. Chart 1.7.0 follows in a separate reviewed PR; Docs owns documentation updates. Cloud has been notified and retains its separate deployment and Security gates. No production change is part of this release operation.

@rmcdaniel

Copy link
Copy Markdown
Member Author

The 3.9.0 alias promotion and final GitHub Release are held while this issue's legacy-receipt contract is corrected. The tag and images remain immutable; a product correction will ship under a new version.

Correction to my earlier item 4 comment: current retained_command already looks up both the hashed token and the pre-upgrade raw key, checks exact bytes, and runs before run-state gates. The claim that raw receipts necessarily cause new admission was stale. General independently confirmed this source finding.

The remaining gaps are concrete:

  • Legacy signal readback marks retained:true,intent_verified:false; legacy update readback lacks that explicit intent marker.
  • A legacy update retry can name another explicit run without a verified intent digest. It must refuse or explicitly read back the original target, without implying that the new target was honored.
  • LIMIT 1 prefers one hashed/raw match instead of refusing ambiguous representation collisions.

Server owns fix/server-934-legacy-command-keys: preserve raw and hashed identity before run gates; explicitly mark unverified retained update readback; refuse conflicting legacy targets and ambiguous identities with zero writes; cover close, continue-as-new, concurrent retries, exact-byte/case-insensitive matching, and upgrade-style legacy rows on all backends. General's contract decision also lives in the cross-repository issue. Source checks will be followed by new published-artifact qualification and installed SDK/CLI evidence.

The already-running 3.9.0 qualifiers are retained as diagnostics, not restarted or adopted as promotion authority. Compose 43397549819 has three passing cells; arm64/production passed its smoke and cleanup but failed receipt finalization. Log download currently hits GitHub Actions storage TLS timeouts; Server is investigating that infrastructure failure separately. Chart #1199 remains draft pending the corrected release.

@rmcdaniel

Copy link
Copy Markdown
Member Author

Published qualification result for immutable 3.9.0 (f315a015e319191f9b93443cb8ea2ff9a541ab12, index sha256:4b32064eae07f8ddb86329381b691eb7ca46dcece9119dd596daf1de84f5d6d8):

  • Native corpus 43397546099 succeeded.
  • Compose 43397549819 passed all four smoke bodies and cleanup. Three cells finalized receipts. arm64/production refused finalization with read_timeout after the bounded provider read, and no positive receipt was uploaded. This is runner-blocked, not qualification success.

No rolling alias, final GitHub Release or production deployment was changed. General's hold for #934 remains, and #1202 now owns the source correction. The 3.9.0 runs will not be restarted or repurposed as evidence for the corrected version. Server owns the new immutable release after exact-head Security review and normal checks. Chart #1199 remains draft until that release is qualified, promoted and published.

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