release-beta: CHANGELOG-before-tag rule is documented, not enforced
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 82/100
- Issue type
- Feature
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- typescript
Research direction
Start in script/release-preflight.ts and compare how it already fails the tag stage for tag collisions, version sanity, prerelease ancestry, and marker guards. Add a CHANGELOG.md check for the version being tagged, matching a section like ## [X.Y.Z] or X.Y.Z-beta.N. Done means the preflight fails before tagging when that section is missing and passes when it exists.
Written by the indexing model from the issue text.
Description
What happened
v0.11.0-beta.5 was tagged and published without a CHANGELOG.md entry. Every prior beta (beta.1, beta.3, beta.4) had shipped with its own dedicated section; beta.5 didn't, because the release-beta skill's pre-tag gate checklist never asked for one. Nothing caught it before the tag existed — the changelog is baked into the compiled binary at build time (packages/opencode/script/build.ts reads CHANGELOG.md into OPENCODE_CHANGELOG), so by the time anyone noticed, the fix could only apply to the next beta, not the one already built and published.
What #1281 fixes
Adds the missing beta.5 entry, and adds an explicit gate + Hard Rule to .claude/commands/release-beta.md telling whoever runs the release to check for a CHANGELOG.md entry before tagging.
What's still open
That's a documentation fix, not an enforced one — it relies on whoever (human or agent) runs the release actually reading and following that step. script/release-preflight.ts already automates several other pre-tag checks (tag collision, version sanity vs npm, prerelease ancestry, marker guard) that used to be the same kind of "remember to check this" gate. This should be one more: have release-preflight.ts parse CHANGELOG.md and fail the tag stage if there's no ## [X.Y.Z] (or X.Y.Z-beta.N) section for the version being tagged, the same way it already fails on a tag collision.
That would make this a hard, automatic stop instead of a step someone can skip under release pressure — which is exactly how beta.5 shipped without one.
Related: #1281
🤖 Generated with Claude Code
- Dominant language
- TypeScript
- Stars
- 813
- Forks
- 134
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 65
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from AltimateAI/altimate-code
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
AltimateAI/altimate-code#1359 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
AltimateAI/altimate-code#1323 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
AltimateAI/altimate-code#1288 ·
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
AltimateAI/altimate-code#1285 ·
-
privacy: Altimate Base consent dialog no longer discloses persistent per-installation identifier Open
Difficulty 1/5 Under an hour Newbie friendliness 88/100
AltimateAI/altimate-code#1284 ·
All issues in AltimateAI/altimate-code
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
mksglu/context-mode#1200 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
jaegertracing/jaeger-ui#4506 ·
-
area:desktop area:ui bug platform:macos
Difficulty 2/5 1-3 hours Newbie friendliness 75/100
anthropics/claude-code#96687 ·
-
good first issue
Difficulty 1/5 Under an hour Newbie friendliness 95/100
AOSSIE-Org/DebateAI#582 · 2 comments ·