ci: prepare next for promotion to main as Forge 8 - #4381
Conversation
Repo-side changes so that `next` can become the `main` branch and publish Forge 8 stable releases through the existing pipeline: - release.yml: trigger on `main`; mark the GitHub release as a pre-release only when the version is one, so stable releases show up as "Latest". - ci.yml: drop the `next` push trigger. - gh-pages.yml: deploy API docs from `v8.**` tags instead of `v7.**`. - tools/version.sh: use conventional-commits bumps (as the v7 script did) instead of forced alpha pre-releases, forward extra args to `lerna version` so `--conventional-graduate` can cut 8.0.0, and create `v8/` release branches. - Remove the PR labeler, which only existed to tag PRs against `next`. - README: drop the "development happens on `next`" banner. - CONTRIBUTING: rewrite the release process for `main` and note that Forge 7 is end-of-life on the `7.x` branch. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Bb2CkBAwF2iaKw1fjfQd9h
There was a problem hiding this comment.
Looks good, straightforward CI/release-config migration. Reviewed the release.yml trigger and prerelease-flag logic, ci.yml/gh-pages.yml trigger updates, tools/version.sh's switch to lerna version --conventional-commits plus argument forwarding, and the README/CONTRIBUTING doc updates — all consistent with the described main-based v8 release flow, and no logic bugs found.
Extended reasoning...
Overview
This PR is a repo-side migration off the next/alpha pre-release branch model onto a main-based Forge 8 release flow. Changes span: removing the PR labeler workflow/config, dropping the next push trigger from CI, bumping the gh-pages release-doc trigger from v7.** to v8.**, retargeting the Publish workflow from next to main with a conditional --prerelease flag derived from whether the version string contains a hyphen, rewriting tools/version.sh to use lerna version --conventional-commits (forwarding extra CLI args such as --conventional-graduate) and renaming the release branch prefix from alpha-release/ to v8/, and updating README.md/CONTRIBUTING.md to match the new flow. I diffed each file directly and confirmed the code matches the PR description faithfully: the release.yml diff shows the new prerelease_flag output computed from [[ "$VERSION" == *-* ]] and consumed unquoted in the gh release create invocation (intentional word-splitting to allow an empty flag), and version.sh correctly forwards "$@" to lerna version.
Security risks
None identified. This is CI/workflow configuration and documentation; no user input handling, auth, or crypto is touched. The gh-pages.yml trigger change (v7.** -> v8.**) preserves the pre-existing behavior of deploying docs on any matching tag including pre-releases — this was already true before the PR for v7 tags, so it is not a new risk introduced here (noted in the ruled-out candidate list from the bug hunt).
Level of scrutiny
Low-to-moderate is appropriate: this is a well-scoped, mechanical set of config/workflow/doc edits with clear intent and no business logic. It has already received a human maintainer approval (MarshallOfSound) with no outstanding CHANGES_REQUESTED review, and the automated bug hunt exited via dry_streak (ran to completion) with no bugs found.
Other factors
The version.sh script change was verified by the author locally (bash -n, yarn lint, etc., per PR description) and lerna 9.0.6 in the lockfile is confirmed to support --conventional-graduate. No tests exist for shell/workflow scripts of this nature in this repo, which is normal for this class of change. Given the small blast radius, clear correctness on inspection, and existing maintainer sign-off, this does not need further human review.
Summarize your changes:
Repo-side changes so that
nextcan becomemainand publish Forge 8 stable releases through the existing trusted-publisher pipeline. Intended to be the last thing merged intonextbefore the branch swap, so it lands as the first commit of the newmain.Workflows
release.yml: trigger onmain. The GitHub release is marked--prereleaseonly when the version contains a-(e.g.8.1.0-beta.0), so8.0.0shows up as "Latest".--pre-dist-tag alphais kept on thelerna publishstep: it is a no-op for stable versions and stops any future pre-release from taking over thelatestdist-tag.ci.yml: drop thenextpush trigger.gh-pages.yml: deploy API docs onv8.**tags instead ofv7.**.labeler.yml(config and workflow). It only existed to auto-label PRs againstnext(ci: auto-labelnextPRs #4187).Release tooling
tools/version.sh: replaces the forcedprerelease --preid=alphabump with--conventional-commits, matching what the v7 script onmaindoes today. Extra arguments are forwarded tolerna version, so cutting 8.0.0 from8.0.0-alpha.10isyarn lerna:version --conventional-graduate. Release branches are nowv8/YYMMDD-hh-mm.Docs
README.md: drop the "development happens onnext, install@alpha" banner.CONTRIBUTING.md: rewrite the release process formain, document the graduate flag, and note that Forge 7 is end-of-life on the7.xbranch.Verified locally: workflow YAML parses,
bash -non the script,yarn lint:markdown,lint:markdown-js,lint:markdown-links,oxfmt --check ., andyarn knipall pass.lerna9.0.6 in the lockfile supports--conventional-graduate.Not in this PR (needs a repo admin, tracked separately):
7.xfrom the currentmainand delete or disablerelease.yml/gh-pages.ymlon it so nothing can publish or overwrite docs from there.mainto7.xandnexttomain(or merge), update the default branch, and triage the open PRs that get retargeted.required-ci) /npm-trusted-publisherenvironment branch rules on the newmain.nexthas been published at least once since feat(template): unify JS/TS templates #4229 reshuffled the template packages after8.0.0-alpha.10.🤖 Generated with Claude Code
https://claude.ai/code/session_01Bb2CkBAwF2iaKw1fjfQd9h
Generated by Claude Code