Skip to content

Commit 1f50271

Browse files
committed
chore(changeset): declare that #4900's release-machinery fix releases nothing
Empty frontmatter — the repo's sanctioned "this PR releases nothing" declaration, on par with the skip-changeset label (both are named in the Check Changeset gate). The PR changes only .github/workflows/, root scripts/ and one check: entry in the root (private) package.json, so nothing reaches a published package; a non-empty changeset would bump all 69 packages of the fixed group in lockstep and burn an extra rc for no shipped product code. The body records the one caveat that matters here: an empty changeset is the exact input #4898 showed can jam a release, which is now bounded rather than silent by the recovery step (#4899, made reachable by #4901) — and this PR is what extends the GitHub Releases and the ADR-0087 D4 spec-changes.json attachment onto that recovery path. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_015W6nhsDrz6zWQc8je12a1t
1 parent b0d3cb7 commit 1f50271

1 file changed

Lines changed: 44 additions & 0 deletions

File tree

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
---
2+
---
3+
4+
ci(release): build GitHub Releases ourselves, with bodies that fit the 125k limit (#4900)
5+
6+
**Deliberately empty frontmatter — this PR releases nothing.** It changes only
7+
`.github/workflows/release.yml`, `.github/workflows/lint.yml`, root `scripts/`
8+
and one `check:` script entry in the root `package.json`. Not a byte of it
9+
reaches any published package: the root manifest is private, and `scripts/` at
10+
the repo root is release tooling, never packaged (`check:published-files` is the
11+
gate that keeps `<pkg>/scripts/**` out of the npm artifacts, and this is one
12+
level above even that). A non-empty changeset here would bump all 69 packages of
13+
the Changesets `fixed` group in lockstep and burn an extra `rc` on a change that
14+
ships no product code.
15+
16+
The empty-frontmatter form is the repo's sanctioned "this PR releases nothing"
17+
declaration, on par with the `skip-changeset` label, per `Check Changeset` in
18+
`.github/workflows/pr-automation.yml`. This PR carries the label as well; the
19+
file exists so the declaration is a durable record in the repo rather than a
20+
label anyone can remove later.
21+
22+
One caveat worth stating where the next reader will find it, because this PR is
23+
about the release machinery: an empty changeset is the exact input #4898 showed
24+
can jam a release — `changesets/action` enters its publish branch only with ZERO
25+
pending changesets, and an empty one still counts as pending. That is now
26+
bounded rather than silent. The recovery step #4899 added, made reachable and
27+
given the right invariant by #4901, catches precisely that case (repo version
28+
absent from npm → publish; image absent → request the Docker job), and this PR
29+
extends the GitHub Releases and the ADR-0087 D4 `spec-changes.json` attachment to
30+
that same recovery path — which they never covered before. So if this changeset
31+
is ever the only pending one when a version bump lands, the release is repaired
32+
and reported, not lost.
33+
34+
What the change itself does: `changesets/action`'s `createGithubReleases` posted
35+
each package's raw CHANGELOG section as the Release body, and
36+
`@objectstack/spec`'s section for one v17 RC is 342,893 characters against the
37+
API's 125,000 limit. The 422 fired inside `runPublish` — after `changeset
38+
publish` had fully succeeded but before the action set its `published` output —
39+
so the step went red, `published` stayed false, and the `docker` job gated on it
40+
was skipped: a published npm version with no runtime image. The action now has
41+
`createGithubReleases: false` and `scripts/release-github-releases.mjs` creates
42+
the Releases instead, truncating an over-limit body to fit and linking the
43+
complete entry in `CHANGELOG.md`, idempotently (PATCH when the release exists),
44+
and per package rather than under one `Promise.all`.

0 commit comments

Comments
 (0)