Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions devlog/_fin/260929_release_2_71_0/032_wp3_results.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# 032 wp3 results: landed on dev

| Step | Evidence |
|---|---|
| Screenshots | pr-assets 947e869c8b (`260929-release-2-71-0/request-pacing.png`, `cursor-installer.png`), fast-forward from ea1749154d |
| PR | #6224 `chore(release): integrate six reviewed PRs for 2.71.0`, head dcfbb2f708 |
| PR-event CI | Cross-platform CI 36525839698 success; Service lifecycle 36525839767 success; React Doctor 36525839694, PR hygiene, Enforce PR target branch success |
| Full-lane CI | Cross-platform CI workflow_dispatch 36526719414 (lane all) success: 39 jobs success, 1 skipped; includes windows 1/9-9/9 (the pull_request event skips the Windows matrix, ci.yml:835-839) and macos control |
| Head totals | 80 check-runs: 74 success, 6 skipped by design, 0 failed |
| Policy | `scripts/ci/assert-mergeable-review.sh --maintainer-integration 6224`: OK; decision recorded in PR comment 5884552184 |
| Merge | `gh pr merge 6224 --admin --merge --match-head-commit dcfbb2f708` -> dev d161c0e83e; all six land commits and four fixes are ancestors of dev |
| Source PRs | #6206 #6201 #6209 #6094 #5905 #6198 closed with a comment naming the land commit; issue #6208 closed with the #6209 commit |

Note: windows 8/9 passed in 36526719414, including the 32-profile transaction case that failed
the dev tip in 36499924172, now under BULK_DURABLE_IO_BUDGET_MS.

Candidate for 040: dev d161c0e83e (version sources 2.71.0).

Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ that merge commit is informative; the gating runs are on the promotion SHAs.

1. Pre-move dev: `gh workflow run dev-version-bump.yml --ref main -f intended-version=2.71.0 -f mode=pre-move`;
the opened PR must change only the four version sources to 2.72.0 (package.json,
desktop/src-tauri/Cargo.toml, Cargo.lock, tauri.conf.json); merge it with --admin --merge
--match-head-commit.
desktop/src-tauri/Cargo.toml, Cargo.lock, tauri.conf.json); merge it with --admin --squash
--match-head-commit (as #6213).
2. Preview: branch `codex/promote-preview-2-71-0` from the candidate, `git merge -s ours origin/preview`,
`bun scripts/release-version-sources.ts sync 2.71.0-preview.20260929`, commit, PR to preview,
merge commit. Wait for push-event Cross-platform CI and Service lifecycle success on the
Expand All @@ -28,4 +28,3 @@ Guards: verify preview tree differs from candidate only in the four version sour
equals the candidate. A failing promotion run is fixed through dev and re-promoted. If a release
run fails after npm acknowledged publication, re-dispatch with resume-after-npm-publish=true and the
same expected-sha; never republish.

59 changes: 59 additions & 0 deletions devlog/_fin/260929_release_2_71_0/041_wp4_execution.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
# 041 wp4 execution: release 2.71.0

Previous D (wp3): #6224 merged, dev d161c0e83e; final CI green including windows 1-9. Direction
unchanged: release that candidate exactly as 040 (same shape as 2.70.0: #6211/#6212/#6213).

Revalidated at wp4 P: dev d161c0e83e (package 2.71.0), preview aa3a8dda16 (2.70.0-preview.20260929),
main 53834ff47b (2.70.0); npm latest=2.70.0, preview=2.70.0-preview.20260929. Candidate C =
d161c0e83ea8a88027b2cef28c125ff3c1f29f8a.

## Order and parallelism

1. Pre-move dispatch (runs on GitHub, ~1 min):
`gh workflow run dev-version-bump.yml -R lidge-jun/opencodex --ref main -f intended-version=2.71.0 -f mode=pre-move`
-> PR `codex/dev-version-2.72.0`. Accept only if its files are exactly the four version sources and
each reads 2.72.0. Its PR CI runs while steps 2-3 proceed; merge it (`--admin --squash
--match-head-commit`, as #6213) once its Cross-platform CI and gates are green. It is merged
before any release dispatch; the stable dispatch strictly requires it (release-preflight.sh
assert-ahead), and doing it first for both keeps one order.
2. Preview branch (managed worktree, clean tree):
```sh
git switch -c codex/promote-preview-2.71.0 d161c0e83ea8a88027b2cef28c125ff3c1f29f8a
git merge -s ours refs/remotes/canon/preview -m "Merge preview into 2.71.0-preview.20260929 promotion"
bun scripts/release-version-sources.ts sync 2.71.0-preview.20260929
git commit -am "chore(release): 2.71.0-preview.20260929"
git diff --name-only d161c0e83e HEAD # must list exactly the four version sources
bun scripts/release-version-sources.ts # check mode: all sources 2.71.0-preview.20260929
```
Push, PR to preview titled "release: 2.71.0-preview.20260929", body as #6211 (plus the two
pr-assets screenshots because the union touches gui/), merge with `--admin --merge
--match-head-commit`.
3. Main branch:
```sh
git switch -c codex/promote-main-2.71.0 d161c0e83ea8a88027b2cef28c125ff3c1f29f8a
git merge -s ours refs/remotes/canon/main -m "Merge main into 2.71.0 promotion"
git diff --quiet d161c0e83e HEAD # tree equals the candidate
```
Push, PR to main titled "release: 2.71.0", body as #6212 plus screenshots, merge the same way.
4. Gate per promotion SHA (the merge commits on preview and main): push-event Cross-platform CI and
Service lifecycle both `success` (release.yml checks both). A red run is diagnosed; a flake with
evidence may be rerun once; a real defect is fixed on dev and re-promoted.
5. Dispatch, preview first:
`gh workflow run release.yml -R lidge-jun/opencodex --ref preview -f version=2.71.0-preview.20260929 -f tag=preview -f dry-run=false -f expected-sha=<preview merge sha>`
then after it succeeds:
`gh workflow run release.yml -R lidge-jun/opencodex --ref main -f version=2.71.0 -f tag=latest -f dry-run=false -f expected-sha=<main merge sha>`
On a failure after npm acknowledged publication: same inputs plus `-f resume-after-npm-publish=true`.
6. Verify: `npm view @bitkyc08/opencodex dist-tags --json` (latest=2.71.0, preview=2.71.0-preview.20260929),
`npm view @bitkyc08/opencodex@2.71.0 gitHead` = main merge sha, `gh release view v2.71.0` (not
prerelease, asset count as v2.70.0 = 25), `gh release view v2.71.0-preview.20260929` (prerelease),
latest.json from the v2.71.0 release reports 2.71.0 with signed platforms.
7. Outcome: 090_outcome.md, move the unit to devlog/_fin/260929_release_2_71_0, docs PR to dev from
a branch on the pre-moved dev tip; merge after its gates.

Merging promotion PRs is owner-authorized in this session ("배포까지 완료"). enforce-target flags
promotion PRs as wrong base by design (2.70.0 precedent); that check is not required for preview/main.

D11 (architect, wp4, ALIGNED): release.yml:847-867 accepts only a push-event ci.yml run on the exact
SHA (a PR run does not count); package.json is in both ci.yml push paths (:51) and
service-lifecycle.yml push paths (:19), so both gating runs fire on each promotion merge commit;
release-preflight.sh enforces dev strictly ahead, so the pre-move PR merges first.
38 changes: 38 additions & 0 deletions devlog/_fin/260929_release_2_71_0/090_outcome.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# 090 Outcome: 2.71.0 released

Published 2026-09-29 (KST). GitHub releases `v2.71.0` and `v2.71.0-preview.20260929` exist with 25
assets each; npm accepted both publications with signed provenance.

Six reviewed PRs landed on dev with author credit, the Windows timeout that had turned the dev tip
red was fixed, and the whole set was released as 2.71.0 and 2.71.0-preview.20260929.

| Step | Evidence |
|---|---|
| Integration | #6224 merged to dev as d161c0e83e (merge commit). Land commits: df951bc2ee #6206 (Ingwannu), 6d7af977a4 #6201 (luvs01), 21ccf35dbe #6209 (Jio Kim), e3fcf3e43c #6094 (Brad Hallett), 2b0ac07170 #5905 (halysondev), febc16d2a4 #6198 (luvs01); follow-ups 9155880950, 7b875559dd, 917db156de, 441aeb179e. Details in 032. |
| Local regression | 022: all gates exit 0; full-suite failures proven pre-existing at dev 37ad7e771b. |
| Final CI | #6224 head dcfbb2f708: Cross-platform CI pull_request 36525839698, workflow_dispatch lane=all 36526719414 (windows 1-9), Service lifecycle 36525839767, all success; 0 failed check-runs. |
| dev pre-move | Dev version bump run 36529404555 opened #6226; its PR checks were approval-gated (bot-authored, as #6213), so the version tests and typecheck ran locally on its head 316750815c (209 pass) before `--admin --squash`; dev 69ce312097 reads 2.72.0. |
| Preview | #6227 merged as fd346e2489 (tree = candidate + four version sources at 2.71.0-preview.20260929). Push Cross-platform CI 36529530341 and Service lifecycle 36529530333 success. Release run 36531705017 success; npm `preview=2.71.0-preview.20260929`, gitHead fd346e2489, provenance attestation present. |
| Stable | #6228 merged as 8a005dd98f (tree equal to the candidate). Push Cross-platform CI 36529537253 and Service lifecycle 36529537201 success. Release run 36533478070 success; npm publish acknowledged (`+ @bitkyc08/opencodex@2.71.0`, sigstore log 2995422874); GitHub release `v2.71.0` not prerelease, 25 assets; latest.json reports 2.71.0 with 5 signed platforms. |
| Source PRs | #6206 #6201 #6209 #6094 #5905 #6198 closed with landing comments; issue #6208 closed. |

## Notes

- The pull_request event skips the Windows matrix (ci.yml:835-839); a workflow_dispatch run on the
integration head covered windows 1-9 before merge.
- The promotion PRs' own pull_request CI runs (36529486815, 36529483354) were cancelled to free
runners after both promotions merged; the push runs on the same trees gate the release.
- The registry smoke step warned on both releases because npm took a few minutes to serve the new
versions; no republish was attempted.
- The installed proxy, service and desktop app on this machine were not updated.

## What did not improve / open follow-ups

- Local full `bun run test` on a loaded macOS host is not a clean signal: a claude-integration
server test can hang and cascade into `SpendLedgerOwnerError` for the rest of its worker, and
`tests/service/shutdown-launcher.test.ts` fails and leaves orphan proxies. Both reproduce at dev
37ad7e771b; they deserve their own issue.
- Optional hardening noted by reviewers and not built here: a response-size cap and redirect policy
for the Cursor manifest fetch (#5905), strict single-[3] TBS parsing in picker-ca (#6201), extra
subprocess tests for #6209, localized copies of the cli.md priority note.

Loading