diff --git a/docs/runbooks/release.md b/docs/runbooks/release.md index 8c06eca..0b4d920 100644 --- a/docs/runbooks/release.md +++ b/docs/runbooks/release.md @@ -41,12 +41,15 @@ embedded AskNews skill. It must not contain credentials, `.env` files, tests, or ## Cut a release -Merge the open Release PR (title `chore(main): release X.Y.Z`). Note: the Release PR is opened with -`GITHUB_TOKEN`, and GitHub does not run `pull_request` workflows for such PRs, so CI never reports on -it and the `main` ruleset blocks a normal merge — merge it as an admin (`gh pr merge N --squash --admin`). -The commits in it already passed CI on their own PRs. To remove this step, give release-please an -org GitHub App token (`actions/create-github-app-token` → `token:` input); App-created PRs trigger CI -normally. The workflow then: +Merge the open Release PR (title `chore(main): release X.Y.Z`). Note: the Release PR is opened by +`github-actions[bot]` with `GITHUB_TOKEN`. GitHub creates its CI run but holds it for approval: the run +shows "Action required" with no jobs, so the two checks the `main` ruleset requires ("Lint, typecheck, +test, build" and "Node 24 compatibility") never report and the PR stays blocked. Open the run from the +PR's checks or the Actions tab and choose **Approve and run workflows**; once both checks pass, merge +normally. An admin merge (`gh pr merge N --squash --admin`) also works, but it ships the release commit +without CI. To remove the approval step, give release-please an org GitHub App token +(`actions/create-github-app-token` → `token:` input); App-created PRs trigger CI normally. The workflow +then: 1. creates the tag and GitHub Release with the changelog notes; 2. installs dependencies and bundles `dist/` from the committed OpenAPI snapshot;