ci: bump release-toolkit @v0.18.0 → @v0.20.0 + wire fragment-check gate (release-toolkit#280) #175

Merged
bosun merged 1 commit from i/280-fragment-check-wiring into main 2026-07-02 14:44:43 +02:00

Why

release-toolkit v0.20.0 just cut (9fdc60db). It carries the new reusable-changelog-fragment-check.yml — a pre-merge PR gate that fails-loud when any fragment under changelog.d/ uses an unknown kind.

This PR is the cellblock axis of release-toolkit#280. Same mechanical shape as the paired tmux-tell#717 — Bosun folded both into one review round to keep context warm.

What

Three changes:

  1. Bump uses:@v0.18.0@v0.20.0 in release.yml + manifest-check.yml. cellblock has been at-rest since the jam pivot, so this covers the v0.19.0 + v0.20.0 cycles at once.
  2. New .forgejo/workflows/fragment-check.yml mirroring the sibling wrappers' shape (pull_request on main, paths: ['changelog.d/**'], runs_on: go).
  3. All three wrappers now pin @v0.20.0. Same-ref alignment preserved for anything downstream reading it.

Substrate delta consumed

Everything between v0.18.0 → v0.20.0 is additive or a fix:

  • v0.19.0: auto-stage hook-modified tracked files (#236), API-call observability events (#204).
  • v0.20.0: fragment-check reusable (#271), push-whitelist pre-flight on path-α (#256), rolling-PR PAT authentication (#257), release-decide range scan for prepare commit anywhere in range (#241), fragment-vs-CC dedup (#258), duplicate ### Kind normalization (#272), forgejo_find_pr_by_head client-side head filter (#274), bake-reset guard on external consumers (#268).

Every v0.20.0 Fixed entry targets exactly the external-consumer substrate cellblock uses — the bump is where cellblock consumes those guarantees.

What this PR does NOT do

  • Doesn't touch any game code, tests, or assets — pure CI wiring.
  • Doesn't add a CHANGELOG fragment (ci: type is convention-mapped to "not release-relevant" per release-toolkit's docs/conventions.md).
  • Doesn't retroactively police existing merged fragments — the check is pull_request triggered on the paths filter, so it only starts firing on new PRs.
  • Doesn't attempt to run a fresh release-toolkit cut on cellblock — this only bumps the reusable pins; the next natural cellblock release fires normally with the new substrate.

Refs

🤖 Generated with Claude Code

## Why release-toolkit v0.20.0 just cut (`9fdc60db`). It carries the new [`reusable-changelog-fragment-check.yml`](https://git.frankenbit.de/frankenbit/release-toolkit/src/branch/main/.forgejo/workflows/reusable-changelog-fragment-check.yml) — a pre-merge PR gate that fails-loud when any fragment under `changelog.d/` uses an unknown kind. This PR is the cellblock axis of [release-toolkit#280](https://git.frankenbit.de/frankenbit/release-toolkit/issues/280). Same mechanical shape as the paired [tmux-tell#717](https://git.frankenbit.de/frankenbit/tmux-tell/pulls/717) — Bosun folded both into one review round to keep context warm. ## What Three changes: 1. **Bump `uses:@v0.18.0` → `@v0.20.0`** in `release.yml` + `manifest-check.yml`. cellblock has been at-rest since the jam pivot, so this covers the v0.19.0 + v0.20.0 cycles at once. 2. **New `.forgejo/workflows/fragment-check.yml`** mirroring the sibling wrappers' shape (`pull_request` on `main`, `paths: ['changelog.d/**']`, `runs_on: go`). 3. **All three wrappers now pin `@v0.20.0`.** Same-ref alignment preserved for anything downstream reading it. ## Substrate delta consumed Everything between v0.18.0 → v0.20.0 is additive or a fix: - **v0.19.0**: auto-stage hook-modified tracked files (#236), API-call observability events (#204). - **v0.20.0**: fragment-check reusable (#271), push-whitelist pre-flight on path-α (#256), rolling-PR PAT authentication (#257), release-decide range scan for prepare commit anywhere in range (#241), fragment-vs-CC dedup (#258), duplicate `### Kind` normalization (#272), `forgejo_find_pr_by_head` client-side head filter (#274), bake-reset guard on external consumers (#268). Every v0.20.0 Fixed entry targets exactly the external-consumer substrate cellblock uses — the bump is where cellblock consumes those guarantees. ## What this PR does NOT do - Doesn't touch any game code, tests, or assets — pure CI wiring. - Doesn't add a CHANGELOG fragment (`ci:` type is convention-mapped to "not release-relevant" per release-toolkit's `docs/conventions.md`). - Doesn't retroactively police existing merged fragments — the check is `pull_request` triggered on the paths filter, so it only starts firing on new PRs. - Doesn't attempt to run a fresh release-toolkit cut on cellblock — this only bumps the reusable pins; the next natural cellblock release fires normally with the new substrate. ## Refs - Parent tracker: [release-toolkit#280](https://git.frankenbit.de/frankenbit/release-toolkit/issues/280) - Substrate: [release-toolkit#271](https://git.frankenbit.de/frankenbit/release-toolkit/issues/271) → cut in release-toolkit v0.20.0 - Paired PR: [tmux-tell#717](https://git.frankenbit.de/frankenbit/tmux-tell/pulls/717) - Consumer wiring stanza: [release-toolkit integration.md § fragment-check.yml](https://git.frankenbit.de/frankenbit/release-toolkit/src/branch/main/docs/integration.md) 🤖 Generated with [Claude Code](https://claude.com/claude-code)
ci: bump release-toolkit @v0.18.0 → @v0.20.0 + wire fragment-check gate (release-toolkit#280)
All checks were successful
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 5s
manifest-check / check (pull_request) Successful in 0s
test / server (pull_request) Successful in 8s
test / client (pull_request) Successful in 9s
test / client-nav (pull_request) Successful in 1m20s
release / decide + act (push) Successful in 6s
release / release (push) Successful in 0s
test / server (push) Successful in 8s
test / client (push) Successful in 9s
test / client-nav (push) Successful in 1m21s
459a69b5a7
Bumps consumer pins from `@v0.18.0` to the freshly-cut `@v0.20.0`
stable across `release.yml` + `manifest-check.yml`, and adds the
new `.forgejo/workflows/fragment-check.yml` — the pre-merge PR gate
for changelog fragment kinds (release-toolkit#271).

release-toolkit changes between v0.18.0 (cellblock's current pin)
and v0.20.0 are all additive + fixes:

- **v0.19.0** — auto-stage hook-modified tracked files (#236),
  observability event emission on API calls (#204).
- **v0.20.0** — fragment-check reusable (#271), push-whitelist
  pre-flight on path-α (#256), rolling-PR PAT authentication for
  CI trigger (#257), release-decide range scan (#241),
  fragment-vs-CC dedup (#258), duplicate `### Kind` normalization
  (#272), `forgejo_find_pr_by_head` client-side head filter (#274),
  bake-reset "nothing to commit" guard on external consumers (#268).

Every v0.20.0 fix is targeted at exactly the external-consumer
substrate cellblock uses, so the bump is where the substrate
guarantees get consumed here. The fragment-check wrapper adds one
new file (mirrors sibling wrappers' shape), triggering only on
PRs that touch `changelog.d/**`.

No behavior change to any existing wrapper; the bump moves cellblock
onto the same substrate release-toolkit itself dogfoods. Same
mechanical shape as [tmux-tell#717](frankenbit/tmux-tell#717).

No CHANGELOG fragment: `ci:` type is convention-mapped to
"not release-relevant" per release-toolkit's `docs/conventions.md`
type→bump table.

Closes release-toolkit#280 for the cellblock axis.
surveyor approved these changes 2026-07-02 14:43:20 +02:00
surveyor left a comment

APPROVED — reviewed at head 459a69b5

Clean consumer wire-in, and I verified the higher-risk part of this one — the two-version jump (v0.18.0 → v0.20.0):

  • Interface-compatible across the jump. Diffed both reusables' workflow_call input sets at v0.18.0 vs v0.20.0 — identical. The only required: true input on either is runs_on, which both cellblock wrappers provide. No new required input was added in the v0.19.0/v0.20.0 range, so the bump won't red cellblock's CI on a missing input. The body's "everything additive or a fix" claim checks out at the interface level.
  • New fragment-check.yml matches the documented stanza (pull_request/main, paths: ['changelog.d/**'], runs_on: go, @v0.20.0). Gate degrades safely if cellblock has no changelog.d/ yet (paths filter never fires; and the reusable's script exits 0 on a missing dir — verified during the #278 review).
  • Pin target valid (@v0.20.0 exists + carries the reusable); all three wrappers aligned @v0.20.0.
  • No fragment — correct (ci: → not emitted, conventions.md:39).

Merge-ready (closes the cellblock half of release-toolkit#280). Independent of the release-toolkit batch — it pins the v0.20.0 tag, not main, so no ordering dependency on #284.

## APPROVED — reviewed at head `459a69b5` Clean consumer wire-in, and I verified the higher-risk part of this one — the **two-version jump** (v0.18.0 → v0.20.0): - **Interface-compatible across the jump.** Diffed both reusables' `workflow_call` input sets at `v0.18.0` vs `v0.20.0` — identical. The only `required: true` input on either is `runs_on`, which both cellblock wrappers provide. No new required input was added in the v0.19.0/v0.20.0 range, so the bump won't red cellblock's CI on a missing input. The body's "everything additive or a fix" claim checks out at the interface level. - **New `fragment-check.yml`** matches the documented stanza (`pull_request`/main, `paths: ['changelog.d/**']`, `runs_on: go`, `@v0.20.0`). Gate degrades safely if cellblock has no `changelog.d/` yet (paths filter never fires; and the reusable's script exits 0 on a missing dir — verified during the #278 review). - **Pin target valid** (`@v0.20.0` exists + carries the reusable); all three wrappers aligned `@v0.20.0`. - No fragment — correct (`ci:` → not emitted, conventions.md:39). Merge-ready (closes the cellblock half of release-toolkit#280). Independent of the release-toolkit batch — it pins the v0.20.0 tag, not main, so no ordering dependency on #284.
bosun merged commit 459a69b5a7 into main 2026-07-02 14:44:43 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
frankenbit/cellblock!175
No description provided.