Skip to content

ci(root): fail a changeset that misses a lockstep package - #664

Merged
mobeenabdullah merged 9 commits into
mainfrom
ci/changeset-covers-the-group
Aug 11, 2026
Merged

ci(root): fail a changeset that misses a lockstep package#664
mobeenabdullah merged 9 commits into
mainfrom
ci/changeset-covers-the-group

Conversation

@mobeenabdullah

Copy link
Copy Markdown
Collaborator

The published packages version in lockstep, so a changeset naming only some of them still bumps them all — and the ones it left out get a version with no changelog entry beside it. The release is correct; the record of it is not.

This was a review convention, and reviewers caught it twice in one afternoon (#652, #661). Both times the frontmatter had been generated from .changeset/config.json — once written before a new package joined the group, once written before the branch merged the commit that added it. A convention that depends on regenerating at the right moment is one a build should check instead.

What it checks

Each changeset the PR adds or edits must:

  • name every package in the fixed group,
  • name nothing outside it (a departed package or a typo releases nothing), and
  • use patch — the group takes the largest bump in a release, so one stray minor moves every package's version, not just the one it sits beside.

All problems are reported together, so a frontmatter written against an older group takes one push to fix rather than one per gap. A file whose frontmatter cannot be parsed is reported as unreadable rather than as "names nothing", because a tolerant parser scores those two opposite answers the same way.

Scope, and why it is drawn there

Only the changesets this PR adds or edits. 376 are pending on main, most written before the group grew; rewriting them to satisfy a rule they predate would churn the eventual changelog for nothing.

HEAD^1 is what makes that exact. On a pull request the checkout is the merge commit, whose first parent is the base branch — so diffing against it gives the PR's own diff, already relative to the merge base. Diffing against the base branch tip would report every changeset the branch picked up by merging main as one this branch wrote, which is how a guard starts failing PRs over other people's files. fetch-depth: 2 already provides that parent, so no checkout change is needed.

No new token or permission: it reads git, not the API.

⚠️ Blast radius — please read before merging

This widens what CI checks, so I measured what it newly catches. Five open PRs would start failing, every one of them missing exactly @nextlyhq/builder, which joined the group when #646 merged:

PR changeset missing
#633 admin-provider-form-descriptors.md @nextlyhq/builder
#645 email-delivery-log.md @nextlyhq/builder
#649 uniqueness-is-a-named-index.md @nextlyhq/builder
#651 blocks-react-type-surface.md @nextlyhq/builder
#601 preview-mint-entry-gate.md @nextlyhq/builder
#308 plugin-template-scaffold-fixes.md @nextlyhq/blocks-react, @nextlyhq/builder

Each is one line: "@nextlyhq/builder": patch. That six independent branches all have the same gap for the same reason is the argument for the guard rather than an argument against it — but it is the owners' call when to add the line, so merge this when those branches can absorb a one-line push, or merge it now and expect six trivial follow-ups.

#661 is already correct (its own review caught it).

Verification

  • 20 unit tests in scripts/release/check-changesets.test.mjs, run by the existing pnpm test:scripts step. They include the exact one-package-gap shape reviewers hit, a control asserting a complete changeset has nothing wrong with it, both quoted and bare package spellings, and CRLF frontmatter.
  • End-to-end through the same shell the workflow runs, against real changesets on this branch: a complete one passes, .changeset/blocks-react-gated-delivery.md fails naming @nextlyhq/builder, and an empty pipe reports nothing to do.
  • That last case found a real defect before it shipped: readFileSync(0) answered EAGAIN on a pipe that was open and momentarily empty, so the step passed or failed depending on which process was scheduled first. Stdin is streamed now, and the empty pipeline was run five times to confirm it is stable.
  • pnpm lint green; workflow YAML parses.

No changeset, per the CI-only rule in AGENTS.md — nothing here is published.

@mobeenabdullah

Copy link
Copy Markdown
Collaborator Author

@codex please review this PR

@coderabbitai

coderabbitai Bot commented Aug 11, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@mobeenabdullah, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 35 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 8cce3a68-5d37-4f86-89c9-3c3399d7a34d

📥 Commits

Reviewing files that changed from the base of the PR and between 8a82d3e and e2c03a3.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml, !**/pnpm-lock.yaml
📒 Files selected for processing (5)
  • .github/workflows/ci.yml
  • package.json
  • scripts/release/check-changesets.mjs
  • scripts/release/check-changesets.test.mjs
  • scripts/release/lib.mjs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@pkg-pr-new

pkg-pr-new Bot commented Aug 11, 2026

Copy link
Copy Markdown

Open in StackBlitz

@nextlyhq/adapter-drizzle

npm i https://pkg.pr.new/@nextlyhq/adapter-drizzle@e2c03a3

@nextlyhq/adapter-mysql

npm i https://pkg.pr.new/@nextlyhq/adapter-mysql@e2c03a3

@nextlyhq/adapter-postgres

npm i https://pkg.pr.new/@nextlyhq/adapter-postgres@e2c03a3

@nextlyhq/adapter-sqlite

npm i https://pkg.pr.new/@nextlyhq/adapter-sqlite@e2c03a3

@nextlyhq/admin

npm i https://pkg.pr.new/@nextlyhq/admin@e2c03a3

@nextlyhq/admin-css

npm i https://pkg.pr.new/@nextlyhq/admin-css@e2c03a3

@nextlyhq/blocks-engine

npm i https://pkg.pr.new/@nextlyhq/blocks-engine@e2c03a3

@nextlyhq/blocks-react

npm i https://pkg.pr.new/@nextlyhq/blocks-react@e2c03a3

@nextlyhq/builder

npm i https://pkg.pr.new/@nextlyhq/builder@e2c03a3

create-nextly-app

npm i https://pkg.pr.new/create-nextly-app@e2c03a3

nextly

npm i https://pkg.pr.new/nextly@e2c03a3

@nextlyhq/plugin-form-builder

npm i https://pkg.pr.new/@nextlyhq/plugin-form-builder@e2c03a3

@nextlyhq/plugin-page-builder

npm i https://pkg.pr.new/@nextlyhq/plugin-page-builder@e2c03a3

@nextlyhq/plugin-sdk

npm i https://pkg.pr.new/@nextlyhq/plugin-sdk@e2c03a3

@nextlyhq/plugin-seo

npm i https://pkg.pr.new/@nextlyhq/plugin-seo@e2c03a3

@nextlyhq/storage-s3

npm i https://pkg.pr.new/@nextlyhq/storage-s3@e2c03a3

@nextlyhq/storage-uploadthing

npm i https://pkg.pr.new/@nextlyhq/storage-uploadthing@e2c03a3

@nextlyhq/storage-vercel-blob

npm i https://pkg.pr.new/@nextlyhq/storage-vercel-blob@e2c03a3

@nextlyhq/ui

npm i https://pkg.pr.new/@nextlyhq/ui@e2c03a3

commit: e2c03a3

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 20bc2fb7cb

ℹ️ 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".

Comment thread scripts/release/check-changesets.mjs Outdated
Comment thread scripts/release/check-changesets.mjs Outdated
Comment thread .github/workflows/ci.yml Outdated
@mobeenabdullah

Copy link
Copy Markdown
Collaborator Author

@codex please review this PR

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b039a6a515

ℹ️ 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".

Comment thread scripts/release/check-changesets.mjs Outdated
Comment thread scripts/release/check-changesets.mjs Outdated
Comment thread .github/workflows/ci.yml Outdated
@mobeenabdullah

Copy link
Copy Markdown
Collaborator Author

@codex please review this PR

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: eb7a3c0167

ℹ️ 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".

Comment thread scripts/release/check-changesets.mjs Outdated
Comment thread scripts/release/check-changesets.mjs
Comment thread scripts/release/check-changesets.mjs Outdated
@mobeenabdullah

Copy link
Copy Markdown
Collaborator Author

@codex please review this PR

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1e4549eff1

ℹ️ 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".

Comment thread scripts/release/check-changesets.mjs Outdated
Comment thread .github/workflows/ci.yml Outdated
Comment thread scripts/release/check-changesets.mjs
@github-actions github-actions Bot added the dependencies Dependency updates (label applied by Dependabot) label Aug 11, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: ca8929bbc6

ℹ️ 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".

Comment thread scripts/release/check-changesets.mjs
Comment thread scripts/release/check-changesets.mjs
Comment thread scripts/release/check-changesets.mjs Outdated
@mobeenabdullah

Copy link
Copy Markdown
Collaborator Author

@codex please review this PR

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 7adeba1ac0

ℹ️ 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".

Comment thread .github/workflows/ci.yml Outdated
Comment thread scripts/release/check-changesets.test.mjs Outdated
@mobeenabdullah

Copy link
Copy Markdown
Collaborator Author

@codex please review this PR

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 4a52dee719

ℹ️ 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".

Comment thread .github/workflows/ci.yml Outdated
@mobeenabdullah

Copy link
Copy Markdown
Collaborator Author

@codex please review this PR

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: e2c03a30f7

ℹ️ 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".

Comment thread scripts/release/lib.mjs
Comment on lines +101 to +103
export function getWorkspacePackageNames() {
const names = [];
for (const entry of readdirSync(PACKAGES_DIR, { withFileTypes: true })) {

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Expand globs against the complete pnpm workspace

Fresh evidence after the glob-expansion fix: when fixed uses a broad supported pattern such as "**", this helper exposes only packages under packages/, so the checker sees exact coverage and accepts changesets omitting playground and @nextlyhq/e2e. Changesets expands the same pattern against every entry in pnpm-workspace.yaml, including apps/* and e2e; with private-package versioning enabled by default, those packages join the fixed group, and the higher-versioned playground can change the version selected for the entire release train. Expand patterns against the complete pnpm workspace, then separately verify that the normalized group contains exactly the intended packages/ members.

AGENTS.md reference: AGENTS.md:L7-L7

Useful? React with 👍 / 👎.

@mobeenabdullah

Copy link
Copy Markdown
Collaborator Author

@codex please review this PR

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep them coming!

Reviewed commit: e2c03a30f7

ℹ️ 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".

@mobeenabdullah
mobeenabdullah merged commit 63df6c6 into main Aug 11, 2026
19 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Dependency updates (label applied by Dependabot)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant