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
[finding] The changeset release PR runs no CI at all — every ci.yml run on changeset-release/main is action_required, so the release commit reaches main unvalidated #5397
Filed unassigned while implementing #5394 (PR #5396). Not caused by that card and not fixed by it — #5394's fix closes one instance (the QUICK_REFERENCE.md drift) by moving the doc inside changeset:version; this issue is the channel that let the instance reach main in the first place, and it is wide open for anything else the release path produces.
Measured, not inferred
GET /repos/objectstack-ai/objectui/actions/workflows/ci.yml/runs?branch=changeset-release/main — 736 runs, and every one of the 30 most recent looks like this:
created_at == run_started_at == updated_at, zero elapsed: the workflow was created and immediately parked. Nothing executed.
On the 17.6.0 release PR (#4655, head 46a7740a1, merged 2026-08-20T09:58:21Z) the check-runs endpoint returns total_count: 1 — a single Close issues referenced in other repositories run that started at 09:58:28Z, 7 seconds after the merge. So the PR that rewrites 371 files and publishes 39 packages was merged with no test, no lint, no type-check having run against it.
Mechanism
changeset-release.yml uses changesets/action@v1 with GITHUB_TOKEN. GitHub does not start workflow runs from events raised by GITHUB_TOKEN, so the release PR gets no pull_request build. The bot force-pushes changeset-release/main on every push to main, so there is also no stable head for a human to re-run checks against.
The release commit is the single largest diff that lands on main in any given week, it is machine-generated, and it is the only commit that reaches main without passing the merge queue's validation. #5394 happened to cash this in three times through one doc row; the exposure is not limited to that row — any check that the version step can break lands red on main and is first seen by the push build (run 32356587040 took 39 min 26 s to report it).
This is the same shape as #4973 (--auto merging before the slow shard reported) one channel over: there, merges did not wait for the gates; here, the gates never run.
Directions (no choice made — this is a CI policy call for the maintainer)
Run the version step's validation insidechangeset-release.yml before the action opens/updates the PR (it already runs pnpm test and pnpm build earlier in that job — but on the pre-version tree, which is precisely the tree that is not at risk).
Give the release PR real checks by having the action author it with a PAT / GitHub App token instead of GITHUB_TOKEN, so pull_request builds start.
Filed unassigned while implementing #5394 (PR #5396). Not caused by that card and not fixed by it — #5394's fix closes one instance (the
QUICK_REFERENCE.mddrift) by moving the doc insidechangeset:version; this issue is the channel that let the instance reachmainin the first place, and it is wide open for anything else the release path produces.Measured, not inferred
GET /repos/objectstack-ai/objectui/actions/workflows/ci.yml/runs?branch=changeset-release/main— 736 runs, and every one of the 30 most recent looks like this:created_at == run_started_at == updated_at, zero elapsed: the workflow was created and immediately parked. Nothing executed.On the 17.6.0 release PR (#4655, head
46a7740a1, merged 2026-08-20T09:58:21Z) the check-runs endpoint returnstotal_count: 1— a singleClose issues referenced in other repositoriesrun that started at 09:58:28Z, 7 seconds after the merge. So the PR that rewrites 371 files and publishes 39 packages was merged with no test, no lint, no type-check having run against it.Mechanism
changeset-release.ymluseschangesets/action@v1withGITHUB_TOKEN. GitHub does not start workflow runs from events raised byGITHUB_TOKEN, so the release PR gets nopull_requestbuild. The bot force-pusheschangeset-release/mainon every push tomain, so there is also no stable head for a human to re-run checks against.Why it matters beyond #5394
The release commit is the single largest diff that lands on
mainin any given week, it is machine-generated, and it is the only commit that reachesmainwithout passing the merge queue's validation. #5394 happened to cash this in three times through one doc row; the exposure is not limited to that row — any check that the version step can break lands red onmainand is first seen by thepushbuild (run 32356587040 took 39 min 26 s to report it).This is the same shape as #4973 (
--automerging before the slow shard reported) one channel over: there, merges did not wait for the gates; here, the gates never run.Directions (no choice made — this is a CI policy call for the maintainer)
changeset-release.ymlbefore the action opens/updates the PR (it already runspnpm testandpnpm buildearlier in that job — but on the pre-version tree, which is precisely the tree that is not at risk).GITHUB_TOKEN, sopull_requestbuilds start.I lean 1 (cheap, no token surface, validates exactly the tree that lands), but the trade-offs here are the maintainer's.