feat(release-cut): auto-re-pin on cut for single-click release UX (v1.0.0 must-fix) #445
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
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit#445
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
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?
Motivation
The
check-self-bootstrapworkflow is designed to fail-loud on pin-drift as a discipline-enforcer (per #124: "make sure you re-pin so future cuts use the fix"). In practice, this means every release-toolkit-internal substrate cut fires check-self-bootstrap RED.Why: any compose-script edit (
register-check.sh,changelog-body-check.sh,release-decide.sh,release-prep.sh, etc.) creates drift betweenmainand the pinned ref inrelease.yml. The cut fires from the pinned ref (older code); check-self-bootstrap notices main has moved forward → RED.Empirical anchor (2026-07-06 through 2026-07-07 CEST substrate sprint):
Every single toolkit-self substrate cut in this sprint fired the check red. Adopters (other projects using release-toolkit) never see it — they don't ship the toolkit code itself; only release-toolkit-self-development shows this pattern.
Operator ideal: single-click release = single rolling PR merge fires cut + re-pin + green. No manual second cycle. Currently the flow requires:
release.yml+ commit + pushThe two-cut cadence is manual, easy to forget, and creates noise on every legitimate substrate cut.
Scope
Substrate design + implementation work spanning:
release.yml/release-decide.sh/release-prep.sh) — decide whether/how to auto-update the pinned ref as part of the cutrelease.ymlpin declaration itself — restructure if beneficial (config file, tag pointer, computed default, etc.)check-self-bootstrapworkflow — reconsider trigger scope, severity, or gating behavior in light of the new cadenceDesign options (starting points, not committed)
A. Cut workflow auto-updates
release.ymlpin as part of cut — preferred per operator's single-click framing:release.ymlto reference the new tagB. Skip check-self-bootstrap on release-prep merge commits — scope-by-trigger:
PREP_SUBJECT_RE)C. Warn-instead-of-red — severity change:
D. Restructure pinned-ref mechanism:
release.yml(into a config file, or computed from tag list)Not exhaustive — the tracker frames the design question, doesn't pre-commit to a fix.
Verification AC
release.yml, orphaned tags, etc.) — the discipline value is preserved for its actual failure modesRelated
Anchor
Operator directive 2026-07-07 during v0.29.0 draft creation (this session):
Priority/high + v1.0.0 must-fix framing per operator explicit statement in that exchange. Empirical evidence accumulated across every toolkit-self substrate cut since substrate sprint began 2026-07-06.
bosun referenced this issue2026-07-07 12:39:35 +02:00
rt check-self-bootstrap#758