chore: fix aidd-ui version and harden the release flow#370
Conversation
- back-merge: open a tracking issue on failure so drift is never silent - promote: a workflow_dispatch that rebase-merges next into main (never squash), so commitlint and release-please stay correct - docs/RELEASE.md: the release runbook for humans and AI (rebase rule, automation map, recovery steps) - release-please-config: pin aidd-ui to 0.1.0-alpha.0, overriding the stray Release-As 4.0.0 footer that wrongly bumped it Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Undo the stray 4.0.0 bump (caused by a misfired Release-As footer): reset the manifest, plugin.json, and CHANGELOG. Paired with the release-as pin in release-please-config.json so the next cut lands at 0.1.0-alpha.0, not 4.0.0. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: f71da6603e
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| PR=$(gh pr list --repo "$REPO" --base main --head next --state open --json number --jq '.[0].number' || true) | ||
| if [ -z "$PR" ]; then |
There was a problem hiding this comment.
Handle the missing promote PR before merging
When there is no open next -> main PR yet, this assignment does not become empty: gh --jq uses jq query syntax per the GitHub CLI formatting docs, and jq -r '.[0].number' on [] renders the literal null. That makes [ -z "$PR" ] false, so the normal first run skips gh pr create and then calls gh pr merge null, causing the new promote button to fail unless someone already opened the PR; use a fallback such as .[0].number // empty or explicitly handle null.
Useful? React with 👍 / 👎.
| fi | ||
| echo "Promote PR: #$PR" | ||
| # Rebase auto-merge: GitHub merges it once CI is green. Never squash. | ||
| gh pr merge "$PR" --repo "$REPO" --rebase --auto |
There was a problem hiding this comment.
Use admin override when enabling promote merge
After a promote PR exists, this still asks GitHub to do a normal auto-merge. In the checked main ruleset, every PR needs a code-owner review, and the existing release workflow documents that this same App-token merge is refused by the base-branch policy unless gh pr merge uses --admin; the gh CLI docs also distinguish --auto (wait for requirements) from --admin (merge despite unmet requirements). As written, the workflow will leave the bot-created promote PR waiting for review/requirements instead of self-merging after CI.
Useful? React with 👍 / 👎.
| }, | ||
| "plugins/aidd-ui": { | ||
| "package-name": "aidd-ui", | ||
| "release-as": "0.1.0-alpha.0", |
There was a problem hiding this comment.
Add aidd-ui to released plugin uploads
With this release-as pin, the next Release Please run is expected to release plugins/aidd-ui, but the release attachment job only matrices aidd-context, aidd-dev, aidd-vcs, aidd-pm, aidd-orchestrator, and aidd-refine in .github/workflows/ci.yml. When paths_released contains plugins/aidd-ui, no matrix cell matches it, so the new aidd-ui-v0.1.0-alpha.0 GitHub release is created without the per-plugin zip documented for plugin releases.
Useful? React with 👍 / 👎.
| '--(back-merge)--> next (keeps next in sync) | ||
| ``` | ||
|
|
||
| 1. **Work lands on `next`** via normal PRs (rebase or squash into `next`, your choice). |
There was a problem hiding this comment.
Do not allow squash merges into next
This step says squashing PRs into next is fine, but the promote flow can only preserve the commits that are already on next. If a multi-scope change is squashed into one generic PR-title commit before promotion, the later rebase into main still hides the original feat(scope): / fix(scope): commits that release-please needs to bump the right plugins, exactly the failure mode described below in this same document.
Useful? React with 👍 / 👎.
| "plugins/aidd-orchestrator": "2.1.0", | ||
| "plugins/aidd-refine": "2.1.0", | ||
| "plugins/aidd-ui": "4.0.0" | ||
| "plugins/aidd-ui": "0.1.0-alpha.0" |
There was a problem hiding this comment.
Move the aidd-ui release boundary before re-cutting
Changing the tip manifest back to 0.1.0-alpha.0 is not enough to make release-please rebuild the deleted 4.0.0 release from the original aidd-ui changes: the last merged release PR already recorded plugins/aidd-ui as 4.0.0, and manifest mode normally uses that release PR as the previous marker. On the next run, the re-cut will be based only on commits after that release PR (the reset/pin commits), so the new alpha release notes/changelog will miss the original scaffold changes unless the release boundary is also moved (for example with last-release-sha or an appropriate tag/restore strategy).
Useful? React with 👍 / 👎.
Undo the stray aidd-ui 4.0.0 bump (tag/release already deleted): reset version files to 0.1.0-alpha.0 + a release-as pin so release-please re-cuts it there. Plus back-merge failure issue, a rebase promote workflow, and docs/RELEASE.md. Two conventional commits — rebase-merge.