finish: close a held branch issue once its blockers close, with a label queue and a reconcile action #825
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea#825
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?
When finish runs on an issue branch while that issue still depends on an open issue, it merges and writes
Refs #N, because the forge would drop a close of a blocked issue. Nothing closes #N later, so its work is merged while it stays open.Decision: the merge still goes through, and madtea closes the held issue itself once nothing blocks it.
madtea/heldto the issue (creating the label if the repo lacks it) and writesHeld: #N waits on #Min the PR body.madtea/held(one list call per 50 issues), and read each one's dependencies. An issue with no open dependency is closed, with a note that names the PR that did its work and the blockers that closed, and the label comes off.reconcileaction onmadt_issuesand the matching CLI command, for a manual sweep.This catches a blocker closed outside madtea: the next finish or reconcile in the repo closes the held issue. It also covers the after-merge step for a held issue whose last blocker this merge closed. #823 does the same for epics.
Forge facts, from the probes in
internal/testforge/closeprobe(Forgejo and Gitea, baseline and latest pins):labels=filter returns exactly the open issues that carry the label, for a plain name and a name with a slash, within about 130 ms of the label being added.Acceptance, against throwaway Forgejo and Gitea servers:
madtea/held, and writes theHeld:line.reconcile, after its last blocker was closed by hand.