fix(sandbox): preserve LLM-plan artifacts when cleanup_stale encounters committed branches (#11120) #11137

Closed
freemo wants to merge 1 commits from fix/issue-11120-cleanup-stale-preserve-artifacts into master

1 Commits

Author SHA1 Message Date
freemo 480ab85ee4 fix(sandbox): preserve LLM-plan artifacts when cleanup_stale encounters committed branches (#11120)
CI / helm (pull_request) Successful in 45s
CI / push-validation (pull_request) Successful in 44s
CI / build (pull_request) Successful in 59s
CI / tdd_quality_gate (pull_request) Successful in 1m15s
CI / lint (pull_request) Successful in 1m19s
CI / quality (pull_request) Successful in 1m30s
CI / typecheck (pull_request) Successful in 1m39s
CI / security (pull_request) Successful in 1m39s
CI / integration_tests (pull_request) Successful in 4m24s
CI / e2e_tests (pull_request) Successful in 5m40s
CI / unit_tests (pull_request) Successful in 7m55s
CI / docker (pull_request) Successful in 1m49s
CI / coverage (pull_request) Successful in 12m10s
CI / status-check (pull_request) Successful in 3s
`cleanup_stale` previously destroyed both the worktree directory AND the branch
reference whenever it found a stale branch, even if that branch carried LLM-
generated commits from a previous execute cycle.  On re-invoked `plan execute`,
this erased those artifacts so `plan apply` could find zero changes to merge.

The fix adds artifact-safe mode to `cleanup_stale`: branches with committed
changes beyond HEAD are preserved (worktree removed, branch ref retained) so
that `plan apply` can still merge them later.  Branches with no commits past
their base are fully cleaned up as before.  Includes the new helper method
`_remove_worktree_only()` and Behave regression tests.

ISSUES CLOSED: #11120
2026-05-12 03:35:21 +00:00