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
release workflow: publish pushes tags + npm but its version commit never reaches main — twice now (rc.3 c6a52d3, rc.4 a10cbc77); landing the commit must be part of the publish lane #6170
The lane that runs changeset version && changeset publish pushes tags (unprotected) and publishes to npm, but the version commit itself never reaches protected main — presumably the bot's direct push is rejected by branch protection and the failure is swallowed. Verify against the run logs around 2026-08-07T04:17:39Z.
Left unfixed, every publish poisons the next one: main keeps stale versions, changeset-release/main recomputes an npm-occupied version, and someone hand-reconciles after the fact. The compiled CHANGELOGs and pre.json bookkeeping live only on orphaned commits until then.
Second defect in the same lane: it bypasses the release gates
check:objectui-pin-fresh is required on the Version Packages PR (#4935) precisely so a release cannot ship with a stale console pin (#3340, after v16 silently lost 4 frontend changes). The 04:17Z run did not go through #4935, so the gate never ran — and rc.4 shipped .objectui-sha = f995a452, dropping the 7-changeset objectui window (#6159) from the release record. A gate that is required on a PR the lane can skip is not a gate.
Options
Publish lane lands its own commit: instead of pushing main, push a branch + auto-open a PR (auto-merge via the queue). Mechanical, keeps the dispatch lane usable.
Forbid the bypass: publishing happens ONLY via merging the Version Packages PR (chore: version packages (rc) #4935 flow) — where the required checks (changeset gate, objectui-pin-freshness) actually run. The dispatch/manual lane, if kept at all, refuses to publish when its base ≠ current main or when the freshness gate would fail.
Both (2 as policy, 1 as the belt for whatever lane remains).
Recommendation: (3). The maintainer picks; whichever option, the invariant is: a publish that does not land its bookkeeping commit is a lie to the next release.
Related
#6169 (rc.4 instance, merge-back) · #6135 / #6149 (rc.3 instance) · #3340 (freshness gate) · #6121 (freshness workflow required-set observation) · #6162 (pin-watch mechanical output — closes the "nobody files the bump" half; this issue closes the "the lane can skip the gate" half)
The recurring defect
Two releases, same shape:
c6a52d3a10cbc77The lane that runs
changeset version && changeset publishpushes tags (unprotected) and publishes to npm, but the version commit itself never reaches protectedmain— presumably the bot's direct push is rejected by branch protection and the failure is swallowed. Verify against the run logs around 2026-08-07T04:17:39Z.Left unfixed, every publish poisons the next one: main keeps stale versions,
changeset-release/mainrecomputes an npm-occupied version, and someone hand-reconciles after the fact. The compiled CHANGELOGs andpre.jsonbookkeeping live only on orphaned commits until then.Second defect in the same lane: it bypasses the release gates
check:objectui-pin-freshis required on the Version Packages PR (#4935) precisely so a release cannot ship with a stale console pin (#3340, after v16 silently lost 4 frontend changes). The 04:17Z run did not go through #4935, so the gate never ran — and rc.4 shipped.objectui-sha = f995a452, dropping the 7-changeset objectui window (#6159) from the release record. A gate that is required on a PR the lane can skip is not a gate.Options
main, push a branch + auto-open a PR (auto-merge via the queue). Mechanical, keeps the dispatch lane usable.Recommendation: (3). The maintainer picks; whichever option, the invariant is: a publish that does not land its bookkeeping commit is a lie to the next release.
Related
#6169 (rc.4 instance, merge-back) · #6135 / #6149 (rc.3 instance) · #3340 (freshness gate) · #6121 (freshness workflow required-set observation) · #6162 (pin-watch mechanical output — closes the "nobody files the bump" half; this issue closes the "the lane can skip the gate" half)