guard: prove a squash-merged branch removable via the forge's merged-PR record #777
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#777
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?
Follow-up from #666 (option C). #666 proves a branch removable only by COMMIT
ancestry: the forge default provably contains the branch's commits
(CompareCommits total_commits == 0). A squash or cherry-pick merge leaves the
branch's content on the default but not its commits, and there is no
cross-platform forge API that proves "content is contained" - Gitea's Compare
response carries only total_commits and commits. So #666 refuses to auto-delete
a squash/cherry-pick-merged local branch; the user finishes the branch or uses
raw git. Local content proof is not an option (ADR 0029: local state is not
proof).
The refinement: when the FORGE itself recorded the squash - a merged PR whose
head was this branch - that merged-PR record is a sound forge proof that the
content landed. prune could accept such a branch for auto-deletion by looking up
the merged PR, restoring squash-prune auto-deletion for PR merges.
Scope:
pruned, with its own live-forge tests.
that is correct, there is no forge record to prove it.
Relates to #666 (the commit-ancestry proof), #670, ADR 0029.