You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
ci: resolve the version pull request before acting on it
Both release steps found the pull request by head branch alone. That can
select a fork's branch of the same name, and `|| true` turned an API or
auth failure into "no version PR" — so a lookup that broke looked exactly
like a release with nothing to do.
Resolve it once instead: take the number the changesets action reports, and
fall back to a listing scoped to this repository's own head branch, keeping
a failed lookup distinct from an empty result. Auto-merge and the review
request both consume that number.
Also state in CONTRIBUTING that a changeset landing while the release pull
request waits on its checks joins that release, and correct the claim that
a major breaks pinned installs — it breaks consumers who upgrade.
Copy file name to clipboardExpand all lines: CONTRIBUTING.md
+4-2Lines changed: 4 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -88,9 +88,9 @@ This repo uses [changesets](https://github.com/changesets/changesets) to manage
88
88
|`minor`| A capability a user could not reach before |`2.1.3` → `2.2.0`|
89
89
|`major`| A break: something that worked stops working, or works differently |`2.2.0` → `3.0.0`|
90
90
91
-
Prefer one changeset per pull request. A pull request that needs several is usually several releases wearing one hat, and the changelog cannot attribute the changes afterwards.
91
+
Prefer one changeset per pull request. A pull request that needs several is usually carrying several separate releases, and once they are versioned together the changelog can no longer say which change each entry came from.
92
92
93
-
A `major` needs a maintainer's sign-off: the `changeset-policy` workflow fails a pull request that adds one unless it carries the `breaking-change-approved` label. A major renames the release and breaks every pinned install, and an npm publish cannot be taken back — so it is a decision, never a side effect of a large branch.
93
+
A `major` needs a maintainer's sign-off: the `changeset-policy` workflow fails a pull request that adds a major changeset, or edits an existing one up to `major`, unless it carries the `breaking-change-approved` label. A pinned install keeps working, but every consumer who upgrades has to deal with the break, and an npm publish cannot be taken back — so it is a decision, never a side effect of a large branch.
94
94
95
95
### Release cadence
96
96
@@ -101,6 +101,8 @@ Changesets keeps a `ci: release packages` pull request open on `main` and rewrit
101
101
102
102
The repository variable `AUTO_MERGE_RELEASE_PR` chooses between the two. Set to `true`, the release pull request merges itself once its required checks pass, giving one release per change. Unset or `false`, a maintainer merges it when a release is wanted.
103
103
104
+
Either way there is a window: a changeset that lands while the release pull request is waiting on its checks joins that release instead of starting the next one. That is how changesets works, so a release can still carry more than one change — one changeset per pull request keeps the window small.
105
+
104
106
## Pull Requests
105
107
106
108
Every PR opens with the [PR template](.github/pull_request_template.md). PR titles must follow [Conventional Commits](#commit-convention); CI runs `pnpm lint`, `pnpm typecheck`, and `pnpm test` on every PR. Update user-facing docs in `docs/` when behavior changes — use the `gen-docs` skill when working with coding agents.
0 commit comments