From 2a0a8c760b7894551c77aef3ea577bfff135fd75 Mon Sep 17 00:00:00 2001 From: Bo Date: Mon, 12 Jan 2026 02:08:29 -0500 Subject: [PATCH] fix(refinery): delete remote polecat branches after merge (#369) Since the self-cleaning model (Jan 10), polecats push branches to origin before `gt done`. The refinery was only deleting local branches after merge, causing stale `polecat/*` branches to accumulate on the remote. Now deletes both local and remote branches after successful merge. Uses existing `git.DeleteRemoteBranch()` function. Remote deletion is non-fatal if the branch doesn't exist. Fixes #359 --- internal/refinery/engineer.go | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/internal/refinery/engineer.go b/internal/refinery/engineer.go index af065d45..d5a7b8f6 100644 --- a/internal/refinery/engineer.go +++ b/internal/refinery/engineer.go @@ -445,13 +445,21 @@ func (e *Engineer) handleSuccess(mr *beads.Issue, result ProcessResult) { } } - // 4. Delete source branch if configured (local only - branches never go to origin) + // 4. Delete source branch if configured (local and remote) + // Since the self-cleaning model (Jan 10), polecats push to origin before gt done, + // so we need to clean up both local and remote branches after merge. if e.config.DeleteMergedBranches && mrFields.Branch != "" { if err := e.git.DeleteBranch(mrFields.Branch, true); err != nil { - _, _ = fmt.Fprintf(e.output, "[Engineer] Warning: failed to delete branch %s: %v\n", mrFields.Branch, err) + _, _ = fmt.Fprintf(e.output, "[Engineer] Warning: failed to delete local branch %s: %v\n", mrFields.Branch, err) } else { _, _ = fmt.Fprintf(e.output, "[Engineer] Deleted local branch: %s\n", mrFields.Branch) } + // Also delete the remote branch (non-fatal if it doesn't exist) + if err := e.git.DeleteRemoteBranch("origin", mrFields.Branch); err != nil { + _, _ = fmt.Fprintf(e.output, "[Engineer] Warning: failed to delete remote branch %s: %v\n", mrFields.Branch, err) + } else { + _, _ = fmt.Fprintf(e.output, "[Engineer] Deleted remote branch: origin/%s\n", mrFields.Branch) + } } // 5. Log success