allod change cleanup never reclaims a worktree whose commits were relayed #134
Labels
No labels
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
bug
duplicate
enhancement
help wanted
invalid
question
wontfix
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
allod/tools#134
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
A worktree whose commits reached the default branch through
allod patch receiveis never reclaimable:allod change cleanuprefuses it permanently, andallod change listreports it asunpushedforever.Reproduction, on a public org repository an agent cannot push to:
allod change begin -d <desc> allod/<repo>, commit, leave unpushed — the documented handoff state for a public change.allod patch receive <vm>:<worktree> ~/work/allod/<repo> --push. The patch applies withgit am, so it lands onmasterunder a new SHA.allod change cleanup <worktree>then refuses, and keeps refusing:Exit code is 1, so the refusal itself is signalled correctly.
The refusal's documented exit does not exist here: the branch cannot simply be pushed, because the repository's default branch is protected server-side — which is why the relay was used in the first place.
Evidence that the commits are in fact upstream.
git cherrymarks every commit on the branch as patch-equivalent to one already onmaster:and the branch's diff against
origin/masteris empty:Observed on two worktrees relayed and merged today, in
allod/memoryandallod/tools. Both had to be removed by hand withgit worktree removeplusgit branch -D.Scale: this is not one stale worktree. Every public-repo change an agent prepares ends in this state by construction, because the relay is the only way those commits can land and it always rewrites the SHA. Nine of twelve worktrees on the machine were already fully merged by the
git cherrytest, of which six still showedunpushed.One further observation, offered as context rather than diagnosis:
allod/toolsissue #127 reports the same guard failing in the opposite direction, deleting a branch when it cannot tell whether commits are unpushed. Anyone changing the guard should look at both directions together, since a change that makes it more permissive to satisfy this report could widen #127.completed