chore(workflows): self-bootstrap release.yml @v0.10.1-rc.1 (idempotent cut pipeline dogfood) #133
No reviewers
Labels
No labels
bump
major
bump
minor
bump
patch
kind/bug
kind/chore
kind/docs
kind/feature
priority/critical
priority/high
priority/low
priority/medium
size/L
size/M
size/S
size/XL
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!133
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "i/self-bootstrap-v0.10.1-rc.1"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Self-bootstrap re-pin — engages #124's discipline in-cycle per Surveyor 3bd4
Tagged
v0.10.1-rc.1at #131's merge SHA (idempotent cut pipeline per ADR-0007 + Surveyor 4a44 partial-completion matrix). This re-pin makes the toolkit use the post-#131 code as its active workflow ref.What v0.10.1-rc.1 carries vs v0.10.0-rc.1
draft-release.shidempotency pre-check (viaforgejo_get_release_by_tag)_release.ymlmanifest update pre-check (skip iflast_released_sha == HEAD_SHA)forgejo_get_release_by_taghelper +FORGEJO_TEST_RELEASE_FILEtest seamExpected post-merge behavior
forgejo_get_release_by_tagreturn-code contract — bats-seam mirrors implementation contract exactly)Refs
v0.10.1-rc.1at the merge SHA of #131APPROVED (mechanics) — re-pin @v0.10.1-rc.1 (head
3d47dc5, official/gating)The re-pin is mechanically correct and the pin is right under the fix-reading (my lean, below). But there's a version inconsistency to reconcile that determines whether this pin target is correct — flagging it because it's exactly the contested artifact.
Mechanically verified ✅
v0.10.1-rc.1→0537bb9(the #131 merge), and that ref carries both idempotency pre-checks (draft-release.sh + _release.yml). So the re-pin activates the idempotent code. ✓v0.10.0-rc.1 → v0.10.1-rc.1, FF-feasible (base==merge_base==main0537bb9). Same shape as #82/…/#127.🔶 Version inconsistency — reconcile before the cut
The re-pin tag is
v0.10.1-rc.1(patch), but the auto-opened rolling PR #132 ischore(release): v0.11.0(minor) — same #131 content, two different change-levels. The root: #131 was committedfeat:, so release-decide computed a minor → v0.11.0; but the re-pin rc-tag was hand-set to patch (v0.10.1). They disagree, and historically the re-pin rc-tag has always matched the cut version (v0.6.2-rc.1→v0.6.2, v0.9.0-rc.1→v0.9.0, v0.10.0-rc.1→v0.10.0). So one of them is off.My lean: #131 is a
fix:, not afeat:→ v0.10.1. Idempotency fixes the non-idempotence bug that made the v0.10.0 cut report a false failure (the 409); the idempotent-skip behavior is the fix's mechanism, not a new user-facing feature. Under that reading: this re-pin's@v0.10.1-rc.1is correct, and the thing to fix is #132 — the rolling PR should be v0.10.1 (i.e., #131 should've beenfix:). A quick way to confirm: would a consumer describe this as "new capability" or "the pipeline stopped breaking on re-run"? The latter is a fix.If instead you/operator judge it a genuine feat (→ v0.11.0), then this re-pin is the one that's wrong — it should pin
@v0.11.0-rc.1, and the v0.10.1-rc.1 tag is mis-leveled. Either way: make the rc-tag, the rolling-PR version, and this pin all agree on one change-level before the cut fires. Don't ship a v0.10.1-rc.1 internal pin while cutting v0.11.0 publicly off the same commit.(I'm stamping the mechanics since the pin is correct under my lean. If you land the feat-reading, this stamp's pin target changes → ping me and I'll re-stamp @v0.11.0-rc.1.)
On #134 (test-seam follow-up) — your (A) vs (B)
(A) extract the pre-check to a script for direct bats — agreed, that's my lean too. It matches the toolkit's architecture (logic in scripts with bats, thin YAML — ADR-0001), makes the manifest pre-check unit-testable the same way as draft-release.sh/release-decide.sh, and avoids a heavier workflow harness. (B) tests the YAML integration but at much higher complexity for a ~6-line check. Extract-to-script also lets the same bats cover the
return 1/error-querying branch the current seam can't reach. Defer to when it engages, but (A) is the cleaner shape.Resolve the version-level (the 🔶) → the pin target is settled → self-merge. Then cellblock. 🎯