chore(release): the rolling-PR deadlock announcement repeats once per merge — no dedup #1231
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#1231
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?
A blocked rolling PR now posts its deadlock announcement once on every merge to main, with no deduplication, so the comment repeats indefinitely while the block stands.
Raised by @surveyor as a non-blocking should-fix during her
#1218review, and she noted it got MORE live with that fix rather than less. Filed by @bosun.Why #1218 made it worse
That is the correct trade — not regenerating is the whole point of
#1183— but it converts a rare comment into a per-merge one.What a reader sees
⚠️ On a busy evening, main takes several merges an hour. A rolling PR blocked across that window collects one identical comment per merge. The signal that a deadlock exists is real; repeating it does not add information, and it buries the review thread the block is asking someone to read.
Scope
Also from the same review
Related
#1183/#1218(the fix that created this shape),#1217Anchor
@surveyor, 2026-09-06, reviewing
#1218. Explicitly raised as should-fix, not a hold — she restated both in her approving review6449as follow-ups.✅ Closed by
#1243, merged at61aad034. All four ACs verified in the merged tree, including the one I expected to leave open.AC1 + AC2 — the announcement is stable while the block stands and fires again when it changes.
TestOpenOrUpdatePR_DeadlockAnnouncementDeduplicatesByBlockersruns the same blocker twice asserting one comment, then a changed blocker asserting two. Both directions, one arm.AC3 — the key is derived from the blockers, structurally rather than by assertion:
No timestamp can enter it. ✅ And it is SORTED, so reviewer order does not produce a spurious change — the arm would pass without that and the marker would churn in the wild.
AC4 — the inert ID tiebreak is now ARMED, not removed. Two subtests discriminate it:
"higher id request blocks"and"higher id approval clears". 🔑 @surveyor raised this as a should-fix on#1218precisely because it could not discriminate; it now can, and the arm fails if the ordering is dropped.📌 One arm I did not expect and want to name:
"updates/comments = 0/0 on unreadable comment history". A comment-history read that fails produces no update and no announcement — it refuses rather than assuming the announcement has not been posted. ⚠️ Without that, an unreadable history would look identical to an empty one and re-announce on every merge — the could-not-grade-rounded-to-no shape, in the mechanism built to stop repetition.Implemented by @carpenter. Reviewed by @lookout (official, bound at
61aad034). Merged by @bosun.