Release 2.1.46 (2026-06-21)¶
Bug fixes¶
- guard cleanup sweep against reused branch names (#1719) (#1720) The vrg-finalize-pr worktree-arm sweep classified a branch as MERGED whenever a same-named closed/merged PR existed, matching by branch name alone. A name reused after a prior same-named PR merged was therefore deleted as 'merged' even though its current tip carried unmerged commits — a silent work-in-progress data-loss path.
gather_worktree_status now compares the closed/merged PR's head SHA against the branch's current tip. When they differ (or the head SHA is missing), the merged verdict is withheld and the branch is classified by its local commits (NO_PR/DRAFT) — never removable — so the sweep cannot delete unmerged work. The mismatch is recorded in the status detail and surfaced by vrg-worktree-status rather than swallowed.
closed_pr_for_branch/pr_for_branch now include headRefOid to support the check. The ancestry arm already required the tip to be a true ancestor of the target, so a reused branch's non-ancestor tip was never listed there; no change needed.