Skip to content

🐸 Versioned release#114

Merged
theoephraim merged 1 commit into
mainfrom
bumpy/version-packages
Jun 13, 2026
Merged

🐸 Versioned release#114
theoephraim merged 1 commit into
mainfrom
bumpy/version-packages

Conversation

@bumpy-bot

@bumpy-bot bumpy-bot commented Jun 13, 2026

Copy link
Copy Markdown
Collaborator

bumpy-frog

This PR was created and will be kept in sync by bumpy based on your bump files (in .bumpy/). Merge it when you are ready to release the packages listed below:

minor Minor releases

@varlock/bumpy 1.13.2 → 1.14.0 CHANGELOG.md

  • ci check now reads bump files in channel directories, so promotion PRs (channel → main) and graduation PRs (channel → channel) correctly report the cycle's pending releases instead of failing with "no bump files found". Channel-dir bump files render with their subdir path (next/feature.md) so view/edit links resolve. (bump file)
  • Channel release PR titles and bodies now show deterministic versions: targets with a wildcard counter (1.2.0-rc.x) derived purely from committed state, instead of registry-derived counters that could drift between PR creation and publish. Multi-package cycles show a package count in the title instead of an arbitrary lead package. The PR check comment and version output use the same .x wildcard; status / ci plan still show live registry-derived counters (.? when offline). (bump file)
  • Add prerelease channels — branch-based prerelease lines (e.g. next@next dist-tag) where prerelease versions are never committed to git. Targets derive from bump files, counters from the registry; shipped bump files are tracked by moving them into .bumpy/<channel>/. Includes channel-aware version / publish / status / ci release flows, exact-pinned lockstep cycle publishes, and promotion-by-merge to stable. (bump file)
  • The PR check comment now explicitly calls out promotion PRs (channel → stable): the headline explains that merging ends the prerelease cycle and ships stable, and bump files that already shipped on a channel are annotated with their dist-tag (e.g. next/feature.md (shipped on @next)). (bump file)
  • When a prerelease cycle is promoted (channel → main) or graduated (channel → channel), any lingering release PR on the source channel is now closed automatically with an explanatory comment — merging it would have offered another prerelease of a cycle that already moved on. (bump file)

theoephraim added a commit that referenced this pull request Jun 13, 2026
Dogfood finding from the first promotion: after merging
[#110](#110), the channel release
PR [#112](#112) lingered open,
offering to publish another rc of a cycle that had already moved to its
stable release ([#114](#114)). I
closed it manually; this makes bumpy do it.

**When:** as part of creating/updating the destination's version PR —
- stable version PR on main whose plan includes channel-dir bump files
(promotion), and
- channel release PR creation that moved files from *other* channels
(graduation, e.g. `alpha` → `beta`).

**What:** for each promoted source channel, look up an open PR on its
`versionPr.branch` head and close it with a comment explaining why,
noting a fresh release PR appears if more work lands on the channel.
Failures are warn-only — a lingering PR is annoying, not dangerous. The
current channel's own PR is explicitly never touched.

Targeting `main` (rather than `next`) deliberately: this path executes
via the published bumpy in the release workflow, so shipping it in
1.14.0 activates it for the next cycle's promotion — and `next` is due
for its post-promotion reset anyway. The bump file will fold into
[#114](#114).

Docs updated in the promotion section. 297 tests pass.

---

**Update — race fix (b13e94d):** the first cut closed the source
channel's release PR whenever its bump files were *pending* on the
destination, but promoted files stay pending until the destination's
version/release PR merges (potentially days). If a user started a fresh
`next` cycle in that window, an unrelated merge to `main` would close
its legitimate release PR — then the next push to `next` recreates it,
and the cycle repeats (close → recreate ping-pong).

Now the close is gated on the **triggering push** actually adding files
under `.bumpy/<channel>/` (its `before..after` range — the same
detection the channel publish trigger uses), so it fires exactly once,
on the promotion/graduation merge itself. Moved both call sites to after
the checkout-back so the non-CI fallback (`HEAD^..HEAD`) diffs the
triggering commit from the right branch.

_Thanks to @theoephraim for spotting the restarted-cycle race._
@bumpy-bot bumpy-bot force-pushed the bumpy/version-packages branch from 17161f5 to 80de15a Compare June 13, 2026 02:27
@varlock/bumpy@1.14.0
@bumpy-bot bumpy-bot force-pushed the bumpy/version-packages branch from 80de15a to db27247 Compare June 13, 2026 02:28
@theoephraim theoephraim merged commit 0a9292c into main Jun 13, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants