dfaa41f6b3
`remove_workspace` guarded its rmtree+prune fallback on `repo_dir.exists()`. But a `git worktree remove` that is killed (incl. a 124 timeout) mid-operation can delete the checkout *before* it clears the pool's worktree registration. In that window `repo_dir` is already gone, so the exists() guard skipped the prune and left dangling metadata — the next `git worktree add` for the same path then failed with "missing but already registered worktree". Guard the fallback on the remove command's return code instead; prune runs on any nonzero exit regardless of whether the checkout was already deleted. Added a regression test for the remove-deleted-checkout-then-died case, which the existing test (checkout survives) never covered. Op: correct Restores: spec:failed-worktree-remove-must-prune-dangling-pool-metadata