fix: preserve git worktree branch with pending changes for plan apply #11130

Closed
HAL9000 wants to merge 2 commits from bugfix/11121-fix-cleanup_stale-preserve-meaningful-changes into master

2 Commits

Author SHA1 Message Date
HAL9000 f7c297c620 fix(lint): replace EN DASH with hyphen-minus in comment
CI / benchmark-publish (pull_request) Has been skipped
CI / lint (pull_request) Failing after 1m10s
CI / quality (pull_request) Successful in 1m13s
CI / security (pull_request) Successful in 1m13s
CI / typecheck (pull_request) Successful in 1m28s
CI / benchmark-regression (pull_request) Failing after 55s
CI / push-validation (pull_request) Successful in 28s
CI / helm (pull_request) Successful in 38s
CI / build (pull_request) Successful in 43s
CI / integration_tests (pull_request) Successful in 4m18s
CI / e2e_tests (pull_request) Successful in 3m49s
CI / unit_tests (pull_request) Successful in 5m46s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / status-check (pull_request) Failing after 3s
2026-05-11 19:38:17 +00:00
HAL9000 947ac0b08a fix: preserve stale branch with pending changes for plan apply
CI / benchmark-publish (pull_request) Has been skipped
CI / quality (pull_request) Successful in 43s
CI / lint (pull_request) Failing after 49s
CI / security (pull_request) Successful in 1m5s
CI / typecheck (pull_request) Successful in 1m12s
CI / integration_tests (pull_request) Successful in 3m17s
CI / push-validation (pull_request) Successful in 47s
CI / helm (pull_request) Successful in 58s
CI / build (pull_request) Successful in 1m13s
CI / benchmark-regression (pull_request) Failing after 2m3s
CI / unit_tests (pull_request) Successful in 6m13s
CI / coverage (pull_request) Has been skipped
CI / docker (pull_request) Has been skipped
CI / e2e_tests (pull_request) Successful in 5m54s
CI / status-check (pull_request) Failing after 4s
When cleanup_stable() was re-invoked during plan execute recovery,
it unconditionally destroyed the worktree branch even if it contained
committed work waiting for plan apply to merge, causing plan apply to
find zero artifacts.

Fix: add allow_destroy_with_changes parameter (default False) to
cleanup_stale(). When False, inspect the branch diff against HEAD before
destroying and preserve branches with insertions or modifications so that
plan apply retains access to the work products. Only truly empty
or deletions-only branches are treated as stale.

- git_worktree.py: Add allow_destroy_with_changes param with diff inspection
- plan.py: Pass True explicitly in _cleanup_sandbox_for_plan (plan cancel)
2026-05-11 17:53:02 +00:00