path-gamma bake-reset commit fails on consumers without toolkit-self workflow files (3 cuts broken in a row) #268
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#268
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?
Bug
In
.forgejo/workflows/reusable-release.ymlpath-gamma (noRELEASE_TOOLKIT_TOKEN), the bake-reset commit (commit 1 of 2 on the manifest PR branch) fails withnothing stagedwhen the consumer doesn't have the toolkit-self workflow files. The for-loop adds nothing →git commitexits non-zero → workflow halts → manifest PR never opens → release-toolkit's manifest stays stale forever.Reproduction
For any consumer that isn't release-toolkit itself (e.g. tmux-tell):
git checkout -B release-toolkit/manifest-vX.Y.Zsucceedsgit commitexits 1last_released_shafrom the prior cutEmpirical evidence
3 cuts in a row failed this way (v0.23.0, v0.24.0, v0.24.1) for tmux-tell. Each required manual manifest recovery (e.g. tmux-tell PR #651 + #654's transitive fix).
Forgejo Actions log from v0.24.1 cut (release-toolkit consumer):
The "Changes not staged" is the
git statusoutputgit commitshows when there's nothing staged to commit. The manifest file was modified (M) but the bake-reset's commit attempt fired first and bombed.Fix
Guard the bake-reset commit with a "skip if nothing to commit" check:
Same guard likely needed in path-alpha (~line 437) too — same shape, just direct-push instead of PR.
Impact
Affects every consumer that isn't release-toolkit itself, which is the typical case. Currently masked by the substrate-care discipline (every cut triggers manual recovery), but the recovery cost compounds with cut frequency (4 deploys in 24h today triggered 1 broken cut + 1 substantial recovery).
Anchor
2026-06-30 — observed empirically across 3 tmux-tell cuts (v0.23.0, v0.24.0, v0.24.1). Forgejo UI log inspection by operator surfaced the failure shape; Bosun + QM joint substrate-care investigation routed to release-toolkit per scope. Refs: tmux-tell#651 (manual recovery PR for v0.24.0 manifest), tmux-tell#654 (the cluster fix that exposed the recurring failure).
Verify + close (Set D drain, 2026-07-02)
Substrate fix landed 2026-06-30 via #269 (
33d2c8e2551e925374526bf479f950e24c0d5adb) —git diff --cached --quietguard now wraps both bake-reset commit blocks inreusable-release.yml:On external consumers (which by design don't carry
.forgejo/workflows/reusable-release.yml/reusable-manifest-check.yml), thefor f in toolkit-self-filesloop stages nothing, the guard'sgit diff --cached --quietexits 0, commit + push are skipped, and the workflow proceeds to the next step (manifest update in path-α, or the manifest-only commit in path-γ). On toolkit-self, the loop stages real changes, the guard exits 1, commit + push proceed byte-for-byte unchanged.Empirical post-#269 cut chain (tmux-tell)
Post-fix cuts landed cleanly via the rolling-PR flow:
workflow_dispatchunblock)The bake-reset failure shape from v0.23.0/v0.24.0/v0.24.1 did not recur across 5 subsequent cuts. Substrate-of-record verified.
AC
Closing SUPERSEDED-BY-LANDED-FIX. Milestone: Set D — Toil drain (id 68). QM stewardship task alcatraz-infra#658.