fix(release-state): record v0.61.1 in the manifest #1370
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
3 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
frankenbit/release-toolkit!1370
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "fix/1356-manifest-post-cut-bookkeeping"
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?
The manifest still named
v0.61.0afterv0.61.1was cut, so a gate read a published release as a prepared-but-uncut one and recommended an operation that would have unpublished it.#1356AC1 only. No close keyword — the other ACs are#1367(@shipwright, open) and AC4, answered in a tracker comment.What was missing
Of
rt post-cuts seven operations, six had completed forv0.61.1: the tag, the release object, its three assets, the bake refs (build-ref-check9/9), the wrapper pins (@v0.61.1) and the rc-tag prune (0 remaining). Only the manifest write was outstanding.Measured on this branch
🔴
manifest-checkis rc=0 in BOTH columns — it validates internal consistency and ancestry, not currency, so it passes on a manifest that is a whole release behind. That is the gap#1367narrows and it is why this was only visible through the other gate.Values
last_released_sha/_tag/_versioncome from the release object (target_commitish5cf2067e,tag_namev0.61.1), verified as an ancestor ofmain.last_released_atis the release objectspublished_at—2026-09-06T12:42:09+02:00, written as2026-09-06T10:42:09Zto match the UTC RFC3339 shapert post-cutemits (cmd/rt/post_cut.go:582). Not the time this commit was authored: the field records when the release happened, and runningpost-cuttoday would have stamped todays clock instead.Local gates
Scope this does NOT cover
Nothing here validates
last_released_versionagainst the forges releases — a manifest naming a version that was never published still passesmanifest-check.#1367givesprepared-uncut-checka second input; the gap is narrower, not closed.🤖 Generated with Claude Code
https://claude.ai/code/session_01LgsJZGnWyfvJZYqDEK48yb
The post-cut manifest write never landed for v0.61.1. The tag, the release object, its three assets and the merge into main are all present; only the bookkeeping is missing. prepared-uncut-check therefore read a published release as a prepared-but-uncut one and recommended `rt recover-pending-cut`, which folds the section back under [Unreleased]. Measured on this tree: BEFORE manifest-check rc=0 (last_released_sha=615a218c, tag=v0.61.0) prepared-uncut-check rc=1 — "uncut for 61 commits (limit 10)" AFTER manifest-check rc=0 (last_released_sha=5cf2067e, tag=v0.61.1) prepared-uncut-check rc=0 — PASS last_released_at is the release object's published_at in the UTC RFC3339 shape `rt post-cut` writes (post_cut.go:582), not the time this commit was authored — the field records when the release happened. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LgsJZGnWyfvJZYqDEK48ybREQUEST_CHANGES — exact head
5f0ef30897(basebee7106b62).The manifest correction itself is internally consistent: on the exact tree,
rt manifest-checkreturns 0 andrt prepared-uncut-checkreturns 0; the Forgejo v0.61.1 release/tag resolves to5cf2067e99and its published_at matches the recorded UTC timestamp.The new changelog fragment is not conforming. Its “The consequence was …” sentence (lines 8–11) is 44 words, over the documented 30-word density limit. Running the fragment check in CI mode with this PR’s changed path and body (
FRAGMENT_CHECK_COVERAGE=required) returns rc=1 and identifies1356-manifest-post-cut-bookkeeping.fixed.md. Forgejo’s newest statuses also havefragment-check / changelog fragment-kindandfragment-check / checkFAILED (run 15509), withtoolkit-self-gatesconsequently failing. Please split that sentence and rerun the required contexts before a fresh review.e50c0c9322388cf65b18APPROVED — exact head
388cf65b18(baseaa1dd9caa0).Fresh re-read after the density fix and rebase. The three-dot diff against the live base remains the intended two files only. The fragment now passes the exact CI-mode fragment-check with coverage required; its formerly 44-word sentence is split and the touched-fragment density gate is green.
The manifest values are correct: exact-tree rt manifest-check and rt prepared-uncut-check both return 0; v0.61.1's live Forgejo release targets
5cf2067e99and was published at 2026-09-06T12:42:09+02:00, exactly the recorded last_released_at converted to UTC (2026-09-06T10:42:09Z). The integration contract explicitly defines this field from published_at, so using the release time rather than the correction time is correct.Go test/vet pass on the exact tree, and the newest-per-context Forgejo status set is 28/28 SUCCESS. The rebased prepared-uncut implementation now correctly reports no uncut version because the manifest drift is repaired.
Landing identity record
388cf65b18cde9d7d17c66b9dde80aa72d46766b388cf65b18cde9d7d17c66b9dde80aa72d46766bThis is a post-merge identity record. It does not retroactively review the landed object; it records whether the server landed the object that an official approval named.