chore: prep CHANGELOG for v4.0.0 GA#2606
Conversation
|
Quick update: #2603 merged to develop as Remaining: #2604 (Linux install docs) is still open. Same call as before — recommend landing it pre-tag so the install story is consistent across all three OSes. |
There was a problem hiding this comment.
Wheels Bot — Reviewer A
TL;DR: This is a focused, low-risk release-prep change — promoting [Unreleased] to # [4.0.0], backfilling the Distribution subsection, and fixing the critical ---- → --- section-terminator so release.yml's awk extraction doesn't bleed into the 3.0.0 notes. The core logic is correct and the pre-flight checks in the PR body verify out. Two nits worth addressing before the GA tag lands.
Correctness
The section-terminator fix is the most consequential change and it's right. release.yml line 365 uses:
awk '/^# \['"${VERSION_PATTERN}"'\]/,/^---$/ {print}' CHANGELOG.md^---$ requires exactly three dashes. The old ---- (four-dash) terminator at what was CHANGELOG.md:216 would have caused the range to stay open past the 4.0.0 block, consuming the 3.0.0 header and all its notes. The fix is correct.
Verified via grep -n "^---\|^----\|^# \[":
- Line 219 is now
---(three dashes) — matches the awk pattern. ✓ - Lines 8 and 19 remain
----(four dashes) — those are preamble separators, not version-block terminators; they are never inside an awk range. ✓
wheels.json and package.json both show "version": "4.0.0" (no -snapshot suffix), so the release.yml version-cleanliness check also passes. ✓
Docs
Link text mismatch in the Homebrew bullet (CHANGELOG.md, new line ~103):
- **macOS** — Homebrew tap at [`wheels-dev/wheels`](https://github.com/wheels-dev/homebrew-wheels) ...The link text is wheels-dev/wheels but the URL resolves to wheels-dev/homebrew-wheels. A reader clicking the link lands in the right place, but the visible text is the name of the framework repo, not the tap. Suggest either of:
[`wheels-dev/homebrew-wheels`](https://github.com/wheels-dev/homebrew-wheels)or just:
[the Homebrew tap](https://github.com/wheels-dev/homebrew-wheels)Date is already one day past. CHANGELOG now reads => 2026-05-11; today is 2026-05-12. The PR body explicitly calls this out ("Bump the date… if it slides past 2026-05-11"), so this is pre-acknowledged. Just a reminder to update it on the actual tag day before the FF-merge.
Commits
The single commit (bff31f981) conforms to commitlint (chore: prep CHANGELOG for v4.0.0 GA — valid type, subject well under 100 chars, sentence-case). ✓
One gap: the commit is missing a Signed-off-by: trailer. DCO was adopted in #2575 (listed in this very changelog block) and is documented as a required status check going forward. The DCO GitHub App check does not appear in gh pr checks output for this PR, so it is not actively blocking today — but the policy is in effect and the trailer is easy to add:
git commit --amend -s # adds Signed-off-by: <git config user.name> <email>Worth squeezing in before tagging so the release commit is policy-compliant from day one.
No Wheels-convention, cross-engine, security, or test concerns — this PR touches only CHANGELOG.md.
Wheels Bot — Reviewer B (round 1)A's review is accurate and not sycophantic. All three findings (link-text mismatch, date drift, DCO trailer) are confirmed against the diff. One missed issue: A's DCO note covers only SycophancyNone detected. A used False positivesNone detected.
Missed issues
Verdict alignment
ConvergenceAligned on changes-needed. A's core findings are accurate; the only gap is that the DCO finding needs to extend to |
Wheels Bot — No fix proposed
If the intent was to address the reviewer feedback on this PR (DCO trailers on Exiting without changes. |
Wheels Bot — Address Review (round 1)Applied consensus findings from Reviewer A and Reviewer B's convergence (round 1):
Skipped (out of address-review's safe scope):
The new commit will trigger a fresh Reviewer A run on the updated SHA. Convergence loop continues until reviewers align on |
There was a problem hiding this comment.
Wheels Bot — Reviewer A
TL;DR: This PR (now at three commits) has addressed all findings from the previous round: the Homebrew tap link text is corrected, the date is bumped to 2026-05-12, and a new Fixed entry for the Scoop pre_install bug (#2603) has been backfilled. The CHANGELOG content is accurate and release-pipeline–ready. The one outstanding item from the prior review — missing Signed-off-by trailers on the two human-authored commits (bff31f981, d971cde8e) — remains open. The bot commit (fb14fb81e) carries the trailer correctly; the other two do not. This is a policy concern (DCO adopted in #2575), not a correctness blocker, but it should be resolved before the FF-merge to main.
Docs
Homebrew link text — fixed. CHANGELOG.md:104 now reads [wheels-dev/homebrew-wheels] and the link target matches. ✓
Release date — fixed. CHANGELOG.md:21 now reads => 2026-05-12, matching today's date. ✓
Scoop Fixed entry — added at CHANGELOG.md:163. The text accurately describes the pre_install → shim creation → post_install ordering issue and the fix. Cross-references #2603. ✓
Section terminator — CHANGELOG.md:220 is still --- (three dashes). The awk extraction range terminates correctly before the 3.0.0 block. ✓
Commits
Three commits are in scope for this PR:
| SHA | Author | Subject | Signed-off-by |
|---|---|---|---|
bff31f981 |
Peter Amiri | chore: prep CHANGELOG for v4.0.0 GA |
missing |
d971cde8e |
Peter Amiri | docs(changelog): add Fixed entry for #2603 Scoop pre_install fix |
missing |
fb14fb81e |
claude[bot] | docs(changelog): address Reviewer A/B consensus findings (round 1) |
present |
All three subjects conform to commitlint (valid type, scope optional and present where used, ≤ 100 chars, not ALL-CAPS). ✓
The two Peter Amiri commits are missing Signed-off-by: trailers. DCO was adopted in #2575 (which is itemised in this very changelog block) and the DCO GitHub App is a required status check on new PRs. The bot commit correctly calls out that fixing them requires git commit --amend -s + force-push, which the wheels-bot rails forbid — a maintainer needs to do this before the FF-merge:
# From a local checkout:
git rebase --onto develop develop~3 # or however you scope it
git commit --amend -s # for bff31f981
git commit --amend -s # for d971cde8e
git push --force-with-lease origin <branch>Or, since this is a docs-only prep PR, squash all three into a single signed commit during the FF-merge:
git merge --squash origin/<branch>
git commit -s -m "chore: prep CHANGELOG for v4.0.0 GA"Either path produces a policy-compliant commit chain. The DCO check does not appear in the current gh pr checks output as a blocking status, but the policy is live and the trailer should be present on the release commit.
No Correctness, Cross-engine, Security, or Test concerns — this PR touches only CHANGELOG.md.
- Promote [Unreleased] heading to # [4.0.0] with GitHub release link and date 2026-05-11 (replace `=> TBD` so release.yml validation passes). - Update PR count (185 → 260+) and contributor list (+ @MukundaKatta) to match docs/releases/wheels-4.0-audit.md. - Add new "Distribution" subsection under Added — captures the four install channels (Homebrew, Scoop, .deb/.rpm, WinGet drafts) that landed in 4.0 but weren't itemized in the changelog. - Fix the section terminator after 4.0.0's notes from `----` (4 dashes) to `---` (3 dashes) so release.yml's release-notes awk extraction (`awk '/^# \[VERSION\]/,/^---$/'`) terminates at the right boundary instead of running into the 3.0.0 entry. wheels.json is already at "4.0.0" (no snapshot suffix), so the release.yml clean-source-version check passes. First-party packages all declare wheelsVersion >=4.0 so no coordination updates are needed. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Signed-off-by: Peter Amiri <peter@alurium.com>
Captures the user-visible impact ("scoop install fails with Can't shim
wheels.cmd") and the actual fix (move launcher emit from post_install to
pre_install, where Scoop's install order requires it). Already merged on
develop as commit e7445bc; this just makes sure the GA changelog
reflects it under v4.0.0's Fixed section.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Signed-off-by: Peter Amiri <peter@alurium.com>
- Fix Homebrew tap link text from `wheels-dev/wheels` to `wheels-dev/homebrew-wheels` so the visible repo name matches the URL target (CHANGELOG.md:104). - Bump the 4.0.0 release date marker from `2026-05-11` to `2026-05-12` so it reflects today's tag day (CHANGELOG.md:21). Not addressed in this commit: - Missing `Signed-off-by:` trailers on `bff31f981` and `d971cde8e`. Adding them requires `git commit --amend -s` (or interactive rebase) plus a force-push, both of which the wheels-bot rails forbid. Flagged to the human in the address-review comment so a maintainer can amend the trailer chain before the FF-merge to main. Signed-off-by: claude[bot] <41898282+claude[bot]@users.noreply.github.com> Signed-off-by: Peter Amiri <peter@alurium.com>
|
Wheels-bot's round-1 commit
The bot also explicitly flagged that adding
Force-pushed with |
Wheels Bot — Reviewer B (round 1)A's review on this SHA is accurate and not sycophantic. All four resolved findings (Homebrew link text, date, Scoop entry, section terminator) are confirmed against the diff and git log. The one remaining open finding — DCO trailers missing on SycophancyNone detected. A used False positivesNone detected.
Missed issuesNone detected. This PR touches only Verdict alignment
ConvergenceAligned on changes-needed. A and I agree on the complete picture: the only remaining item is |
There was a problem hiding this comment.
Wheels Bot — Reviewer A
TL;DR: This is the third-round review of the v4.0.0 CHANGELOG prep PR. All findings from rounds 1 and 2 have been resolved — including the previously-outstanding DCO trailer concern, which the maintainer addressed by force-pushing rewritten commits. The PR is clean and ready to merge to develop.
Resolved since round 2
The three commits in the current chain (8d4790df9, 6bdc0eba7, 917a5489d) all carry proper Signed-off-by: trailers:
| SHA | Author | Subject | Signed-off-by |
|---|---|---|---|
8d4790df9 |
Peter Amiri | chore: prep CHANGELOG for v4.0.0 GA |
present ✓ |
6bdc0eba7 |
Peter Amiri | docs(changelog): add Fixed entry for #2603 Scoop pre_install fix |
present ✓ |
917a5489d |
claude[bot] | docs(changelog): address Reviewer A/B consensus findings (round 1) |
present ✓ |
DCO concern is closed.
State of the CHANGELOG
All key invariants verified against CHANGELOG.md at 917a5489d:
- Version header —
# [4.0.0](...) => 2026-05-12at line 21. Date matches today; no=> TBDin the file. release.yml validation at line 92 will pass. ✓ - Section terminator — line 220 is
---(three dashes). The awk pattern/^---$/in release.yml terminates correctly before the 3.0.0 block. ✓ - Homebrew link text — line 104 reads
[wheels-dev/homebrew-wheels](https://github.com/wheels-dev/homebrew-wheels). Link text now matches the URL target. ✓ - Scoop Fixed entry — present at line 163, accurately describes the
pre_installordering fix from #2603. ✓ - PR count + contributors — updated to 260+ merged PRs,
@MukundaKattaadded. ✓
Minor note (no action needed)
The bot commit's message body contains a "Not addressed" section that references old SHAs (bff31f981, d971cde8e) — the ones from before the force-push. Those SHAs no longer exist in the branch history; the current commits carry the trailers. The message is a historical artifact and has no effect on merge correctness.
No Correctness, Cross-engine, Security, or Test concerns — this PR touches only CHANGELOG.md.
Wheels Bot — Address Review (round 2)No commits needed at SHA
Reviewer A's latest review at this SHA (05:24:08Z) is Convergence loop will close once Reviewer B confirms alignment on |
Wheels Bot — Reviewer B (round 1)A's review is accurate, thorough, and not sycophantic. All invariants A verified (DCO trailers, version header, section terminator, Homebrew link text, Scoop Fixed entry) check out against the diff and git log. The SycophancyNone detected. A verified each invariant with specific line numbers and SHA citations rather than a blanket LGTM, and explicitly flagged the historical-SHAs artifact in the bot commit's message body — a mark of thoroughness, not rubber-stamping. False positivesNone detected.
Missed issuesNone detected. This PR touches only Verdict alignment
ConvergenceAligned, no changes needed. A and I agree the PR is clean and ready to merge to |
Summary
Pre-flight prep for the v4.0.0 GA tag. Once this lands on develop, the remaining release-day steps are mechanical (FF main, tag, push — see "Manual steps for you" below).
What changed
## [Unreleased]to# [4.0.0](...) => 2026-05-11. This is the line release.yml grep-validates for=> TBD. Bump the date to whatever day you actually tag if it slides past 2026-05-11.docs/releases/wheels-4.0-audit.md(260+ PRs, added @MukundaKatta)..deb/.rpm, WinGet drafts) that landed for 4.0 but weren't itemized in the changelog.----(4 dashes) separator between the 4.0.0 block and the 3.0.0 block to---(3 dashes). release.yml's release-notes extraction isawk '/^# \[VERSION\]/,/^---$/'— that pattern matches only the 3-dash form. With the 4-dash terminator, the extraction would have run into 3.0.0's notes and shipped a doubled release-notes body on GitHub.Pre-flight checks (all passing)
=> TBDfor 4.0.0 → release.yml validation step (line 92) passeswheels-sentry,wheels-hotwire,wheels-basecoat,wheels-i18n,wheels-seo-suite,wheels-legacy-adapter)Open PRs to land before tagging (or punt to 4.0.1)
Both are small and low-risk; recommend landing them before tagging so the GA install story is consistent. If either CI fails or you decide to punt, this prep PR is independent of both.
Manual steps for you (after this PR merges to develop)
```bash
1. Verify date in CHANGELOG.md still reflects today; if not, bump it on develop.
2. Fast-forward main from develop. (Run from a clean local checkout.)
git checkout main
git pull origin main
git merge --ff-only origin/develop
3. Tag and push. release.yml fires automatically on the tag push.
git tag -a v4.0.0 -m "Release 4.0.0"
git push origin main --tags
```
After the tag push, the automation cascade runs:
End-to-end maintainer turnaround per the playbook: merge ~3 auto-PRs across tap/bucket repos. ~10 min.
Post-release smoke test (per RELEASE_PLAYBOOK.md)
```bash
Wait for the brew tap auto-PR to merge, then:
brew update && brew upgrade wheels
wheels --version # should report 4.0.0 (stable)
Smoke test:
mkdir /tmp/release-smoke && cd /tmp/release-smoke
wheels new myapp && cd myapp && wheels start
Visit http://localhost:8080 — should see the welcome page.
```
If the smoke test fails, the playbook's rollback section covers revert via the brew tap (the GitHub Release stays — yanking it would 404 anyone scaffolding against that version's URL).
Why no scope-level work was needed
Per the audit (docs/releases/wheels-4.0-audit.md), the "Where Wheels Trails" master plan items 3/4/6 all closed, and the [Unreleased] section was incrementally maintained across the April–May window. The 60-PR catch-up gap flagged at audit time (2026-04-22) was filled by the PRs that landed that same window — the recent fixes (#2412, #2489, #2568/2599, #2569, #2567, #2530, #2563, etc.) are already in [Unreleased]. The only remaining gaps were the install-distribution channels themselves, which are now captured in this PR's new "Distribution" subsection.
🤖 Generated with Claude Code