Skip to content

fix(release): the pending release is 17.2.0, not 18.0.0 - #3237

Merged
os-zhuang merged 1 commit into
mainfrom
claude/objectui-version-v17-a3uz69
Aug 3, 2026
Merged

fix(release): the pending release is 17.2.0, not 18.0.0#3237
os-zhuang merged 1 commit into
mainfrom
claude/objectui-version-v17-a3uz69

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

What

The open release PR #3133 stages every package as 18.0.0. It should be 17.2.0. Four pending changesets scored major — 17 package entries between them:

changeset entries
long-tail-spec-symbol-burn-down.md (#3161) 10
auth-components-react-spec-symbol-burn-down.md (#3159) 3
data-objectstack-chatbot-list-spec-symbol-burn-down.md (#3160) 3
remove-dead-layout-page-node-renderer.md (#3225) 1

Every publishable package sits in one fixed group (39 packages in .changeset/config.json), and changesets applies the group's highest bump to all of it — so one major publishes the whole family as the next major. @objectstack/spec is still ^17.0.0-rc.1, so 18.0.0 would break the pin that makes "same major ⇒ compatible" hold across the two repos.

All four are rescored minor, each with a note saying why. Nothing about the described breaks changes — only the version number they would publish under. This is the convention, not an oversight: objectui's own breaking changes ship as minor with the break spelled out in the changeset body, and the major moves exactly once per @objectstack major (AGENTS.md §版本号策略).

Why it wasn't caught

The rule was already written down and nothing executed it — and no workflow even looked at a changeset. ci.yml and lint.yml both list '**/*.md' and .changeset/** under paths-ignore, so a PR that adds only a changeset starts no workflow at all. It is mechanical now, in two independent places:

  • scripts/check-changeset-no-major.mjs — exits non-zero on any major in changeset frontmatter and prints the offending file:line plus the fix. Dependency-free and hand-parses the frontmatter on purpose: the CI job is a checkout plus one node call, with no pnpm install to import a YAML parser from. Body prose and fenced YAML examples are not declarations, so a changeset that discusses the major/minor call does not trip it.
  • .github/workflows/changeset-guard.yml — runs it on the inverse trigger of every other workflow: paths: ['.changeset/**'], PR to main/develop and push to main.
  • pnpm testscripts/__tests__/check-changeset-no-major.test.ts asserts the same repository state, so the rule survives that workflow being skipped or removed. It also pins why the workflow is separate: if ci.yml ever stops ignoring .changeset/**, the test fails and the check can be folded back in.

The one release that legitimately bumps the major is the one following @objectstack across its major; that release sets OBJECTUI_ALLOW_MAJOR=1.

Verification

  • pnpm changeset:version on this branch resolves every package to 17.2.0 (was 18.0.0); reverted afterwards, no version files are committed here.
  • node scripts/check-changeset-no-major.mjs → green on this branch; red with .changeset/…:2 on a fixture that scores major, green again under OBJECTUI_ALLOW_MAJOR=1.
  • pnpm vitest run --project unit scripts/__tests__/ → 31 passed (3 files), including the 7 new ones.
  • eslint clean on both new files.

After this lands on main, the changesets action regenerates #3133 at 17.2.0.

Also updated

  • AGENTS.md §版本号策略 — records that the rule is enforced by CI now, and where the escape hatch is.
  • content/docs/guide/ci-cd-pipeline.md — documents the new workflow under Release Workflows.
  • package.jsonpnpm changeset:check runs both changeset guards, not just the fixed-group one.

🤖 Generated with Claude Code

https://claude.ai/code/session_01R8TU2mGotfDRNhg7WP5esH


Generated by Claude Code

Four changesets scored `major` — 17 package entries across objectui#3159,
objectui#3160, objectui#3161 and objectui#3225. Every publishable package
sits in one `fixed` group (39 packages), and changesets applies the group's
highest bump to all of it, so those entries staged the whole family as
`18.0.0` on the open release PR (#3133) while `@objectstack/spec` is still
`^17.0.0-rc.1`.

objectui's major is pinned to the `@objectstack` major so that "same major ⇒
compatible" holds across the two repos; our own breaking changes ship as
`minor` with the break spelled out in the changeset body (AGENTS.md
§版本号策略). All four are rescored `minor` and each now carries the note
saying why — nothing about the described breaks changes, only the number
they would publish under.

The rule was already written and nothing executed it, and no workflow even
looked at a changeset: `ci.yml` and `lint.yml` both list `'**/*.md'` and
`.changeset/**` under `paths-ignore`, so a PR adding only a changeset starts
nothing. So it is mechanical now, in two places:

- `scripts/check-changeset-no-major.mjs` (dependency-free — the CI job is a
  checkout plus one `node` call) exits non-zero on any `major` in changeset
  frontmatter, and prints the file:line and the fix. The release that follows
  objectstack across ITS major sets `OBJECTUI_ALLOW_MAJOR=1`.
- `.github/workflows/changeset-guard.yml` runs it on the inverse trigger of
  every other workflow: only when `.changeset/**` changes.
- `pnpm test` asserts the same repository state, so the rule survives that
  workflow being skipped or removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01R8TU2mGotfDRNhg7WP5esH
@vercel

vercel Bot commented Aug 3, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectui Ignored Ignored Aug 3, 2026 3:29am

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation configuration ci/cd dependencies tests labels Aug 3, 2026
@os-zhuang
os-zhuang marked this pull request as ready for review August 3, 2026 03:38
@os-zhuang
os-zhuang added this pull request to the merge queue Aug 3, 2026
Merged via the queue into main with commit c319420 Aug 3, 2026
16 checks passed
@os-zhuang
os-zhuang deleted the claude/objectui-version-v17-a3uz69 branch August 3, 2026 03:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ci/cd configuration dependencies documentation Improvements or additions to documentation tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants