Skip to content

Release 2.1.140 (2026-07-14)

Bug fixes

  • surface stuck merged worktrees and add guarded --clean-dirty clear (#2356) The finalize sweep printed the skip reason for a merged/closed worktree it could not remove (dirty tree, or a reused-branch straggler) inside the collapsed progress-stage log, so a human saw a clean cleanup summary while stuck worktrees were left behind. There was also no supported way to clear a merged worktree whose only dirt was untracked build/validation output.

Change 1 (surface, do not bury): _stage_cleanup collects any needs_attention worktree (reusing the issue #2347 classification) into the context, and after the pipeline tears down its live display, reports them prominently with the reason so finishing with stuck worktrees is impossible to miss.

Change 2 (guarded clear): the opt-in --clean-dirty flag clears a merged/closed worktree whose every uncommitted path is untracked, after showing exactly what will be deleted and confirming. It refuses modified tracked files and reused-branch stragglers via a state guard, reusing _delete_branch_and_worktree with a new force flag. The default guards are unweakened.

CI Evidence: All gates passed — full audit bundle available. Download →