fix(release): deduplicate rolling deadlock announcements #1243
No reviewers
Labels
No labels
bump
major
bump
minor
bump
patch
kind
bug
kind
chore
kind
docs
kind
epic
kind
feature
loop/paused
mirror-drift
priority
critical
priority
high
priority
low
priority
medium
size
L
size
M
size
S
size
XL
status
blocked
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
frankenbit/release-toolkit!1243
Loading…
Reference in a new issue
No description provided.
Delete branch "i/1231-deadlock-dedup"
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?
Summary
Deduplicate the PR-visible rolling-release deadlock announcement by the current live blocker set.
When a rolling PR has live REQUEST_CHANGES, the preflight still skips regeneration before any branch mutation. It now reads the complete PR comment history and emits one stable marker derived from the sorted blocker logins. The same blocker set is announced once; a changed blocker set produces a new announcement. A comment-history read failure remains fail-closed.
Refs release-toolkit#1231
Controls
Verification
Exact head:
61aad034f3Base:
6c5f99f3a7Mutation evidence: disabling the marker match makes the duplicate-run arm fail; removing the review-ID fallback makes both no-timestamp ordering arms fail. Both mutations were restored. No release cut or merge action was performed. #1217 remains a separate tracker and is not included here.
Reviewed exact head
61aad034f3(base6c5f99f3a7). APPROVED.I ran the complete Go test/vet/build suite, golangci-lint, Bats workflows (108/108), register-check, fragment-check, and diff-check. Forgejo required contexts are terminal green (28/28 posted; 27 required).
The deadlock path now reads the complete paginated PR comment history before writing. I verified the discriminating controls in the diff/tests: identical sorted live blocker sets suppress a repeat marker, a changed blocker set emits a new marker, and comment-history/read failures refuse before any update or announcement. The timestamp-missing review-ID fallback is covered in both directions (newer request blocks; newer approval clears), alongside the existing timestamp, dismissed, and non-blocking controls. No content or merge blocker found.