返回 CodeWhale
v0.9.0-release-candidate.md
根目录 / docs / releases / v0.9.0-release-candidate.md
1 # Codewhale v0.9.0 Release Ledger
2
3 > **Published 2026-07-16.** This began as the release-candidate ledger; the
4 > publication record below is authoritative. The candidate notes retained
5 > below it are historical release-audit evidence, not current distribution
6 > status.
7
8 ## Publication record
9
10 | Surface | Published state |
11 |---|---|
12 | Exact release source SHA | `d167c07c96282411956ea7f35ddb8227afa1402f` |
13 | GitHub tag and release | [`v0.9.0`](https://github.com/Hmbown/CodeWhale/releases/tag/v0.9.0) |
14 | GitHub Release assets | 29 public assets, verified as produced by Release workflow `29532521426` from the release SHA |
15 | crates.io | All 18 v0.9.0 crates published |
16 | npm | `codewhale@0.9.0` published with its binary version pinned to `0.9.0` |
17 | Post-publication verification | `scripts/release/check-published.sh 0.9.0` completed successfully |
18
19 The later CI-fixture hardening commit `cd2382888f8f9eb2a75c1eaa8c550f2468638984`
20 is deliberately not part of v0.9.0; it is post-release maintenance on `main`.
21
22 ## Historical release-candidate record
23
24 The candidate identity and gates below are preserved as the pre-publication
25 snapshot. In particular, references to an absent tag, release, or registry
26 package describe the state before the published record above.
27
28 | Surface | Pre-publication state |
29 |---|---|
30 | Workspace Cargo version | `0.9.0` after the final metadata bump |
31 | npm wrapper manifest | `codewhale@0.9.0` after the final metadata bump |
32 | Candidate branch | `codex/v0868-final-integration` |
33 | Exact release source SHA | Assigned only after the reviewed candidate merges to `main` |
34 | GitHub `v0.9.0` tag | Absent |
35 | GitHub `v0.9.0` release | Absent |
36 | crates.io `codewhale-*` release set | `0.9.0` absent; published crates remain at `0.8.67`, while `codewhale-lane` has no public version yet |
37 | npm `codewhale` | `0.9.0` absent; latest is `0.8.67` |
38
39 `scripts/release/check-published.sh 0.9.0`, the GitHub release API, and the
40 remote tag list were checked again after publication on 2026-07-16. A dated
41 changelog section and local version metadata alone do not make a public release.
42
43 ## Acceptance accounting
44
45 The entire issue and pull-request history formerly assigned to the v0.8.68
46 milestone is now part of v0.9.0. The closed v0.8.68 milestone is an empty
47 superseded marker, not a separate release; unfinished work is assigned to
48 v0.9.1 or later.
49
50 GitHub issues stay open until the candidate is pushed, reviewed, and its final
51 evidence is attached. As of the 2026-07-15 refresh, the candidate contains
52 fixes and regression coverage for bounded `@` discovery (#4365), Kimi context
53 budgeting (#4368, #4378), Simplified Chinese setup terminology (#4369),
54 approval-time transcript review (#4371), the first-turn `remember` catalog
55 (#4373, #4377), required
56 confirmation blockers (#4374), and cached approval denial recovery (#4375 and
57 #4385).
58 Named custom-provider identity (#4334) is integrated across TUI sessions,
59 `exec --resume`, runtime threads, Fleet receipts, exports, and fail-closed
60 restore without persisting secrets.
61
62 Final stopship dogfood also hardened the runtime contract itself: declarative
63 step and wall-time limits now reach each child (including launch-queue wait),
64 promoted artifacts keep enough evidence for the next role, explicit tool-free
65 roles omit provider tool fields, and a terminal blocked gate fails the Workflow
66 and Lane instead of producing a false success receipt. The checked-in fixture
67 uses an exact five-file evidence query, five explicit gates, and substantive
68 handoff artifacts; a fresh live receipt is still required below.
69
70 The following work is not honestly closed by this candidate audit:
71
72 - [#4175](https://github.com/Hmbown/CodeWhale/issues/4175),
73 [#4177](https://github.com/Hmbown/CodeWhale/issues/4177),
74 [#4178](https://github.com/Hmbown/CodeWhale/issues/4178), and
75 [#4179](https://github.com/Hmbown/CodeWhale/issues/4179) still require
76 completed live Fleet role-resolution, stopship-dogfood, and gate/handoff
77 receipts before their broader acceptance can close.
78 - [#4236](https://github.com/Hmbown/CodeWhale/issues/4236) and
79 [#4242](https://github.com/Hmbown/CodeWhale/issues/4242) retain official
80 Termux scope and real-device runtime QA.
81
82 The same refresh found #4372 safe and fully green; it was merged to `main` as
83 `9035890c4`, preserving @nightt5879's original commit and @CCChisato's
84 co-author credit for #3915. Four community PR heads are preserved as exact
85 merge ancestry in this candidate: #4367 by @LeoLin990405, #4377 and #4378 by
86 @mvanhorn, and #4385 by @nightt5879. The candidate keeps the stronger integrated
87 implementations while retaining those contributors' complete commits instead
88 of copying their changes without ancestry. The final refresh leaves #4383's
89 green Windows cancellation hardening for v0.9.1 because no v0.9.0 field failure
90 reproduces it; #4384 lacks the required release checks, while #4381 and #4379
91 are clean post-release feature scope. #4199 remains explicitly marked not to
92 merge, and the older conflicting or draft pull requests stay outside v0.9.0.
93 These decisions must be rechecked immediately before the release PR merges.
94
95 Provider-route degradation, a missing Fleet terminal receipt, or a role/gate
96 failure is a failed release gate, not an external/manual gap. The only accepted
97 external platform gap is the explicitly documented real-device Android/Termux
98 runtime pass; the target remains preview-only until that evidence exists.
99
100 ## Historical verification and publication gates
101
102 Earlier metadata checks and Cargo dry-runs predated the final integration and
103 did not count as exact-HEAD evidence. These gates were completed for the
104 published release source; they remain here to document the release process:
105
106 1. Run `scripts/release/check-versions.sh`,
107 `scripts/release/check-ohos-deps.sh`, changelog synchronization checks,
108 `cargo fmt --all -- --check`, and `git diff --check`.
109 2. Run the locked workspace `check`, strict all-target/all-feature `clippy`,
110 full workspace tests, the TUI PTY/runtime lifecycle gates, and every focused
111 stopship regression added during this integration.
112 3. Run `scripts/release/publish-crates.sh dry-run`, build the CLI and TUI with
113 `--release --locked`, and smoke the npm wrapper against those artifacts.
114 4. Install that exact commit with `scripts/release/install-dogfood.sh`; verify
115 all three global entry points report the same version and commit. Exercise
116 the underwater shell in Cursor at the release terminal sizes, including
117 Operate messaging/tools, Ask approvals, approval-time transcript review,
118 settings, routes, links, Fleet setup/steering/cancellation, locale-aware
119 worker names, reduced motion, and custom-provider save/resume/fail-closed
120 behavior.
121 5. Run the real tmux stopship Workflow with the release Fleet and 360k aggregate
122 budget. Preserve role-resolved child, gate, handoff, and terminal receipts
123 for #4175/#4177/#4178/#4179; a partial run does not pass:
124
125 ```bash
126 codewhale workflow run stopship --fleet stopship --runtime tmux \
127 --token-budget 360000 --goal "Verify v0.9.0 release receipts without editing the workspace"
128 ```
129 6. Push the candidate, open and review a PR against `main`, wait for required
130 CI, merge, and verify the merge commit before updating issue accounting.
131 7. Create `v0.9.0` either through the repository's release-tag workflow or a
132 signed local tag. The workflow path creates an unsigned lightweight tag, so
133 verify the tag and GitHub release resolve to the intended `main` commit
134 instead of describing that path as signed.
135 8. Wait for release assets and run
136 `scripts/release/verify-release-assets.sh 0.9.0` **before** publishing the
137 ordered Cargo crate set and `codewhale@0.9.0` to npm. Require all 29 public
138 assets, both checksum manifests, the matching successful workflow SHA, and
139 the exact clean tag-checkout guard. `codewhale-lane` is new on crates.io in
140 this release; its first publish is an authentication stop line if the token
141 cannot create a crate.
142 9. Run `scripts/release/check-published.sh 0.9.0` and verify GitHub checksums,
143 GHCR, CNB, Cargo installs, npm wrapper resolution, release-note contributor
144 credit, and registry parity. `deepseek-tui` remains deprecated/unpublished;
145 the experimental runtime SDK/plugin is not part of this release.
146
147 The publication record at the top records the final source SHA, release URL,
148 publication date, and registry checks. The local experimental Z.AI plugin draft
149 remained outside v0.9.0 and was not installed or published as part of this
150 release.
151
151 lines MARKDOWN