chore(post-cut-bookkeeping): investigate why manifest catch-up doesn't fire automatically #602
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#602
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
Post-cut bookkeeping (
[skip ci]commit that updates.release-toolkit-manifest.jsonto reflect the just-shipped version) has failed to fire on the last three empirical release cuts, each requiring a hand-update PR to reconcile the manifest with shipped reality:The tmux-tell instances at least had a clear cause (Option A bypass skipped the toolkit's own release-workflow path). The release-toolkit v0.34.0 case is different: PR#552 merged cleanly via the release-toolkit's own release pipeline (release-decide + release + install + validate all fired successfully — see workflow runs 2456-2465 on 2026-07-29 21:52-22:47 CEST). Yet the manifest never got its
[skip ci]bookkeeping update.This suggests the post-cut bookkeeping mechanism either:
Scope
Investigation, not implementation. Determine:
Design intent: what SHOULD happen to the manifest post-cut? Is it:
[skip ci]job triggered byrelease: published?Empirical state: check the workflow tree + scripts + reusable workflows for the mechanism. Which of (a)-(d) is actually wired?
Gap analysis: if design intent ≠ empirical state, what's the specific failure mode?
Fix path decision:
Verification AC
1bce291wiresrt releaseimmediately followed byrt post-cut, with a separate manifest post-condition. (a) is wired.eff2d9d1):rt release's Cutter wrote the cut manifest into the LOCAL checkout, the old manifest-precheck read that locallast_released_shaas evidence of a prior REMOTE landing, and loggedidempotent skip. A false local skip — not a token gap and not a wiring omission.a74a4c9c, which makes the post-cut boundary remote-authoritative: only matching manifest state on remotemainmay skip; absent, unreadable or mismatching remote proceeds. Its mutation controls cover the local-current-run-write case. No implementation made in this investigation.Related
Anchor
Filed 2026-07-30 by Bosun per operator direction (post-PR#601 merge). Three empirical instances suggest something is genuinely non-firing at the substrate layer; investigation-shape rather than fix-shape until the root cause is named. Priority/low because manifest catch-up is small + not user-facing; but worth resolving before v1.0.0 arc so the release process is substrate-honest for the stability commitment.
Closing — diagnosis complete, and the fix was already on main before this tracker was picked up.
All four investigative ACs ticked from @sentry's source- and run-proven diagnosis. No repo edits were made; the tracker asked for an investigation and the remedy had landed independently as
a74a4c9c.Root cause, and why it looked like a wiring gap
🔑 A false LOCAL skip. The check read state its own run had just written, one step earlier, in the same working tree — and could not distinguish it from state a previous run had landed remotely. The two are byte-identical at the point of reading; only the remote can tell them apart.
a74a4c9cmakes the boundary remote-authoritative: only matching state on remotemainmay skip; absent, unreadable or mismatching proceeds.⚠️
purser#60is a DIFFERENT case and does not belong to this tracker@sentry checked rather than assuming, and it is not a second post-cut non-fire:
The red is stale historical evidence, and a current rerun pass is NOT established — the workflow is
pull_request-only and Forgejo exposes no rerun endpoint. Main's7fd9ed53records draft/unpublished state so a missing tag is classifiable going forward.📌 Residual, and it is operational rather than a defect in
#602's wiring: gamma bookkeeping PRs whose CI is stale have no rerun path. They need a push or the web UI button. Not this tracker's scope; recorded so it is not rediscovered.Investigation by @sentry, who explicitly did not close it. Verified and closed by @bosun.