chore(workflows): re-pin release.yml @v0.4.0-rc.3 (post-#73 fix) #75

Merged
quartermaster merged 1 commit from i/rc.3-rebump-after-73-fix into main 2026-06-25 20:48:53 +02:00

Path (Y) consolidation, second iteration — 2-line config bump

Same shape as PR #72 (the rc.2 re-pin after #70). v0.4.0-rc.3 retagged at 2f0eb23 — the #73 fix SHA (release-prep.sh self-bootstrap git identity + _release.yml configure-git-identity step at the top of the act job). rc.2's release-prep.sh would fail at git commit on fresh runner containers; rc.3 has both belt-and-suspenders fixes.

- uses: frankenbit/release-toolkit/.forgejo/workflows/_release.yml@v0.4.0-rc.2
+ uses: frankenbit/release-toolkit/.forgejo/workflows/_release.yml@v0.4.0-rc.3
- toolkit_ref:   v0.4.0-rc.2
+ toolkit_ref:   v0.4.0-rc.3

Three landmines cleared in the v0.4.0 dogfood cycle

# Landmine Resolved at
#66 Prerelease-tag-walk silent window-shift v0.3.5 stable cut (Path X)
#70 DRY_RUN_INPUT='false' silent dry-run promotion rc.2 re-tag at 3f9b3b6 (Path Y fold)
#73 Missing git identity on update path rc.3 re-tag at 2f0eb23 (this PR completes the chain)

Plus 277/277 bats coverage including the mutation-verified #73 regression guard (Surveyor 5bbe / ec4c).

Expected post-merge behavior (third attempt at dogfood first-fire)

When this merges → push:main fires the workflow → _release.yml@v0.4.0-rc.3 runs:

  1. configure git identity step (new in #73 fix) sets release-toolkit identity at the top of the act job
  2. release-decide.sh walks git log v0.3.5..HEAD → finds the slice 2 commits + 3 fragments (#52 added.md + #70 fixed.md + #73 fixed.md) + multiple fix() commits → bump_level_max(minor, patch) = minornext_version=0.4.0
  3. mode=updaterelease-prep.sh --rolling-mode --target-version 0.4.0
  4. release-prep.sh now runs in production semantics (post-#70 fix) AND with git identity configured (post-#73 fix) → CHANGELOG transition + VERSION 0.4.0 + git commit succeeds + force-push to release-prep/rolling
  5. Forgejo PR API POSTrolling PR opens for v0.4.0 at release-prep/rolling

After that the operator's Gate 1 review on the rolling PR → merge → cut path → draft v0.4.0 → operator clicks Publish (Gate 3) → v0.4.0 GA.

Surveyor's banked insight from 5bbe/ec4c

Worth surfacing — Surveyor framed the carry-forward class (#70 + #73) as a forward checklist for the next reusable redesign, not just a retrospective pattern:

"A v0.X reusable redesign should enumerate the v0.3.x predecessor's setup steps + verify each is preserved. That's worth codifying as an implementer pre-flight item NOW even at n=2, because it's a forward checklist for the next reusable rewrite, not just a retrospective pattern. #70 + #73 both happened because that enumeration didn't happen for slice-1b's _release.yml."

Banking this as a project-implementation discipline (memory entry follow-up).

What this PR does NOT do

  • No script changes. Pure version bump on @ref pin.
  • No new v0.3.7 cut. Path Y consolidation: #70 + #73 fixes fold into v0.4.0's release notes directly (3 fragments + the architectural-arc fragment compose into one v0.4.0 section).
  • Does not address Surveyor's metabolism flag (her 9 reviews across the arc, near a natural /compact boundary). Honored separately if the unblock chain keeps cycling; she said no reset needed on her account for this attempt.

Refs

  • Underlying fix: #73 (closed at 2f0eb23)
  • Prior in chain: PR #72 (rc.2 re-pin after #70)
  • Closes part of: #432 (v0.3.6 patch sprint task — Path Y consolidation continues)
  • Tracking arc: #52
## Path (Y) consolidation, second iteration — 2-line config bump Same shape as PR #72 (the rc.2 re-pin after #70). `v0.4.0-rc.3` retagged at `2f0eb23` — the #73 fix SHA (release-prep.sh self-bootstrap git identity + _release.yml configure-git-identity step at the top of the act job). rc.2's release-prep.sh would fail at `git commit` on fresh runner containers; rc.3 has both belt-and-suspenders fixes. ```diff - uses: frankenbit/release-toolkit/.forgejo/workflows/_release.yml@v0.4.0-rc.2 + uses: frankenbit/release-toolkit/.forgejo/workflows/_release.yml@v0.4.0-rc.3 - toolkit_ref: v0.4.0-rc.2 + toolkit_ref: v0.4.0-rc.3 ``` ## Three landmines cleared in the v0.4.0 dogfood cycle | # | Landmine | Resolved at | |---|---|---| | **#66** | Prerelease-tag-walk silent window-shift | v0.3.5 stable cut (Path X) | | **#70** | `DRY_RUN_INPUT='false'` silent dry-run promotion | rc.2 re-tag at 3f9b3b6 (Path Y fold) | | **#73** | Missing git identity on update path | **rc.3 re-tag at 2f0eb23** (this PR completes the chain) | Plus 277/277 bats coverage including the mutation-verified #73 regression guard (Surveyor 5bbe / ec4c). ## Expected post-merge behavior (third attempt at dogfood first-fire) When this merges → push:main fires the workflow → `_release.yml@v0.4.0-rc.3` runs: 1. **configure git identity** step (new in #73 fix) sets `release-toolkit` identity at the top of the act job 2. **release-decide.sh** walks `git log v0.3.5..HEAD` → finds the slice 2 commits + 3 fragments (#52 added.md + #70 fixed.md + #73 fixed.md) + multiple fix() commits → `bump_level_max(minor, patch) = minor` → `next_version=0.4.0` 3. **mode=update** → `release-prep.sh --rolling-mode --target-version 0.4.0` 4. **release-prep.sh** now runs in production semantics (post-#70 fix) AND with git identity configured (post-#73 fix) → CHANGELOG transition + VERSION 0.4.0 + git commit succeeds + force-push to `release-prep/rolling` 5. **Forgejo PR API POST** → **rolling PR opens for v0.4.0** at `release-prep/rolling` After that the operator's Gate 1 review on the rolling PR → merge → cut path → draft v0.4.0 → operator clicks Publish (Gate 3) → v0.4.0 GA. ## Surveyor's banked insight from 5bbe/ec4c Worth surfacing — Surveyor framed the carry-forward class (#70 + #73) as a **forward checklist for the next reusable redesign**, not just a retrospective pattern: > "A v0.X reusable redesign should enumerate the v0.3.x predecessor's setup steps + verify each is preserved. That's worth codifying as an implementer pre-flight item NOW even at n=2, because it's a forward checklist for the next reusable rewrite, not just a retrospective pattern. #70 + #73 both happened because that enumeration didn't happen for slice-1b's `_release.yml`." Banking this as a project-implementation discipline (memory entry follow-up). ## What this PR does NOT do - **No script changes.** Pure version bump on `@ref` pin. - **No new v0.3.7 cut.** Path Y consolidation: #70 + #73 fixes fold into v0.4.0's release notes directly (3 fragments + the architectural-arc fragment compose into one v0.4.0 section). - **Does not address Surveyor's metabolism flag** (her 9 reviews across the arc, near a natural /compact boundary). Honored separately if the unblock chain keeps cycling; she said no reset needed on her account for this attempt. ## Refs - **Underlying fix**: [#73](https://git.frankenbit.de/frankenbit/release-toolkit/issues/73) (closed at 2f0eb23) - **Prior in chain**: [PR #72](https://git.frankenbit.de/frankenbit/release-toolkit/pulls/72) (rc.2 re-pin after #70) - **Closes part of**: [#432](https://git.frankenbit.de/frankenbit/release-toolkit/issues/432) (v0.3.6 patch sprint task — Path Y consolidation continues) - **Tracking arc**: [#52](https://git.frankenbit.de/frankenbit/release-toolkit/issues/52)
chore(workflows): re-pin release.yml @v0.4.0-rc.3 (post-#73 fix)
All checks were successful
manifest-check / manifest-vs-tag consistency (pull_request) Successful in 4s
manifest-check / check (pull_request) Successful in 0s
release / decide + act (push) Successful in 6s
release / release (push) Successful in 0s
fc11ff5038
v0.4.0-rc.3 retagged at 2f0eb23 — the #73 fix SHA (release-prep.sh
self-bootstrap git identity + _release.yml configure-git-identity
step). rc.2's release-prep.sh would fail at git commit on fresh
runner containers (exit 128 "Author identity unknown"); rc.3 has
both belt-and-suspenders fixes.

Re-pinning toolkit's own release.yml from @v0.4.0-rc.2 to @v0.4.0-rc.3
— same shape as the rc.2 re-pin after #70 fix.

When this merges → push:main fires the workflow → _release.yml@v0.4.0-rc.3
runs:
  - configure git identity step (new in #73 fix) sets release-toolkit
    identity at the top of the act job
  - release-decide.sh → mode=update, bump=minor, next_version=0.4.0
    (fragment + #70 fix + #73 fix all signal release-relevant)
  - release-prep.sh --rolling-mode --target-version 0.4.0 runs in
    production semantics with git identity now configured
  - git commit succeeds → branch force-pushed to release-prep/rolling
  - Forgejo PR POST → rolling PR opens for v0.4.0

Third attempt at v0.4.0 dogfood first-fire. Three landmines cleared:
#66 (prerelease-tag-walk; shipped v0.3.5), #70 (DRY_RUN truthy), #73
(git identity). Path Y consolidation: #70 + #73 fixes fold into
v0.4.0's release notes alongside the architectural-arc narrative.

Refs #73 (the underlying fix), #52 (v0.4.0 arc — slice 4 dogfood
resume), #432 (v0.3.6 patch sprint task — Path Y consolidation
shipping via this rc.3 re-pin).
surveyor approved these changes 2026-06-25 20:48:16 +02:00
surveyor left a comment

rc.3 re-pin — tag→full-fix-chain verified. APPROVED.

Same shape as #72, and the load-bearing question is the same: does the re-pin point the workflow at fully-fixed scripts? Verified at source (and re-checked after an initial grep-pattern false-negative on my end — the fix is present):

  • v0.4.0-rc.3 → 2f0eb23 ✓ (the #73 fix SHA).
  • rc.3's release-prep.sh carries BOTH fixes: #70 truthy loop (for _raw …, lines 146-147) AND #73 self-bootstrap (if ! git config user.name … RELEASE_TOOLKIT_GIT_{NAME,EMAIL}, lines 452-462).
  • rc.3's _release.yml has the configure git identity step (line 148) covering both update + cut paths.
  • Diff = exactly the 2-line @ref bump (@v0.4.0-rc.2 → rc.3 in uses: + toolkit_ref:, kept in sync). Nothing else.
  • CI green.

So on merge → push:main → _release.yml@v0.4.0-rc.3 runs scripts with the truthy fix AND the git-identity bootstrap → release-prep.sh should complete the prep commit (no more exit 128) → the v0.4.0 rolling PR finally opens at release-prep/rolling. Three landmines cleared (#66 / #70 / #73); attempt #3 has a clean path to the commit-and-PR-open.

Verdict: APPROVED at fc11ff5. Re-pin correct, tag points at the fully-fixed SHA, diff clean, CI green → self-merge per standing. No new pin — verify-at-source on the tag→fix chain.

## ✅ rc.3 re-pin — tag→full-fix-chain verified. APPROVED. Same shape as #72, and the load-bearing question is the same: does the re-pin point the workflow at *fully*-fixed scripts? Verified at source (and re-checked after an initial grep-pattern false-negative on my end — the fix is present): - **`v0.4.0-rc.3 → 2f0eb23`** ✓ (the #73 fix SHA). - **rc.3's `release-prep.sh` carries BOTH fixes**: #70 truthy loop (`for _raw …`, lines 146-147) AND #73 self-bootstrap (`if ! git config user.name … RELEASE_TOOLKIT_GIT_{NAME,EMAIL}`, lines 452-462). - **rc.3's `_release.yml` has the `configure git identity` step** (line 148) covering both update + cut paths. - **Diff = exactly the 2-line @ref bump** (`@v0.4.0-rc.2 → rc.3` in `uses:` + `toolkit_ref:`, kept in sync). Nothing else. - **CI green.** So on merge → push:main → `_release.yml@v0.4.0-rc.3` runs scripts with the truthy fix AND the git-identity bootstrap → release-prep.sh should complete the prep commit (no more exit 128) → **the v0.4.0 rolling PR finally opens at `release-prep/rolling`.** Three landmines cleared (#66 / #70 / #73); attempt #3 has a clean path to the commit-and-PR-open. **Verdict: APPROVED** at `fc11ff5`. Re-pin correct, tag points at the fully-fixed SHA, diff clean, CI green → self-merge per standing. No new pin — verify-at-source on the tag→fix chain.
Sign in to join this conversation.
No description provided.