Skip to content

ci: prepare next for promotion to main as Forge 8 - #4381

Merged
MarshallOfSound merged 1 commit into
nextfrom
chore/forge-8-main-promotion
Sep 18, 2026
Merged

MarshallOfSound merged 1 commit into
nextfrom
chore/forge-8-main-promotion

Conversation

@erickzhao

Copy link
Copy Markdown
Member
  • I have read the contribution documentation for this project.
  • I agree to follow the code of conduct that this project follows, as appropriate.
  • The changes are appropriately documented (if applicable).
  • The changes have sufficient test coverage (if applicable).
  • The testsuite passes successfully on my local machine (if applicable).

Summarize your changes:

Repo-side changes so that next can become main and publish Forge 8 stable releases through the existing trusted-publisher pipeline. Intended to be the last thing merged into next before the branch swap, so it lands as the first commit of the new main.

Workflows

  • release.yml: trigger on main. The GitHub release is marked --prerelease only when the version contains a - (e.g. 8.1.0-beta.0), so 8.0.0 shows up as "Latest". --pre-dist-tag alpha is kept on the lerna publish step: it is a no-op for stable versions and stops any future pre-release from taking over the latest dist-tag.
  • ci.yml: drop the next push trigger.
  • gh-pages.yml: deploy API docs on v8.** tags instead of v7.**.
  • Remove labeler.yml (config and workflow). It only existed to auto-label PRs against next (ci: auto-label next PRs #4187).

Release tooling

  • tools/version.sh: replaces the forced prerelease --preid=alpha bump with --conventional-commits, matching what the v7 script on main does today. Extra arguments are forwarded to lerna version, so cutting 8.0.0 from 8.0.0-alpha.10 is yarn lerna:version --conventional-graduate. Release branches are now v8/YYMMDD-hh-mm.

Docs

  • README.md: drop the "development happens on next, install @alpha" banner.
  • CONTRIBUTING.md: rewrite the release process for main, document the graduate flag, and note that Forge 7 is end-of-life on the 7.x branch.

Verified locally: workflow YAML parses, bash -n on the script, yarn lint:markdown, lint:markdown-js, lint:markdown-links, oxfmt --check ., and yarn knip all pass. lerna 9.0.6 in the lockfile supports --conventional-graduate.

Not in this PR (needs a repo admin, tracked separately):

  1. Create 7.x from the current main and delete or disable release.yml / gh-pages.yml on it so nothing can publish or overwrite docs from there.
  2. Rename main to 7.x and next to main (or merge), update the default branch, and triage the open PRs that get retargeted.
  3. Rulesets / merge queue required check (required-ci) / npm-trusted-publisher environment branch rules on the new main.
  4. Confirm every package on next has been published at least once since feat(template): unify JS/TS templates #4229 reshuffled the template packages after 8.0.0-alpha.10.

🤖 Generated with Claude Code

https://claude.ai/code/session_01Bb2CkBAwF2iaKw1fjfQd9h


Generated by Claude Code

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
@github-actions github-actions Bot added the next label Sep 11, 2026
@erickzhao
erickzhao marked this pull request as ready for review September 17, 2026 22:37
@erickzhao
erickzhao requested a review from a team as a code owner September 17, 2026 22:37

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@MarshallOfSound
MarshallOfSound merged commit 540cf8a into next Sep 18, 2026
15 checks passed
@MarshallOfSound
MarshallOfSound deleted the chore/forge-8-main-promotion branch September 18, 2026 16:54
@claude claude Bot mentioned this pull request Sep 18, 2026
5 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants