You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
afx cleanup -p <id> prints [ok] Builder <id> cleaned up! in two very different situations:
Full cleanup — registry row removed, worktree removed, branch deleted.
Deregistration only — registry row removed, but the worktree and branch are preserved on disk (with [info] Worktree preserved at: ... lines above the [ok]).
The [ok] cleaned up! reads as case 1 either way. An operator (or agent) scanning outcomes sees success and later finds .builders/ still populated — and by then the registry row is gone, so afx cleanup can no longer address the leftover at all ("Builder not found", the #1102 row-less gap). The tool's own preservation path manufactures row-less worktrees.
This repo's sweep: builders with tracked modifications (e.g. a modified package-lock.json) were preserved; builders with untracked-only dirt (builder artifacts, porch state) were fully removed — both printed [ok] cleaned up!. Neither the criterion nor the outcome difference is stated in the output.
A sibling workspace reports the same shape: two builders deregistered-but-preserved (one was checked out on a non-canonical branch, which may be a second preservation trigger; the other was on its canonical builder branch), a third under near-identical conditions fully removed. Same [ok] for all three.
Asks
Honest messaging: when preserving, say [warn] Deregistered only — worktree preserved (uncommitted changes / non-canonical branch): <path> and exit distinctly, so scripts and agents can branch on it.
Document (or make configurable) the preservation criteria — tracked-dirt vs untracked-dirt vs branch-mismatch is currently reverse-engineered folklore.
Problem
afx cleanup -p <id>prints[ok] Builder <id> cleaned up!in two very different situations:[info] Worktree preserved at: ...lines above the[ok]).The
[ok] cleaned up!reads as case 1 either way. An operator (or agent) scanning outcomes sees success and later finds.builders/still populated — and by then the registry row is gone, soafx cleanupcan no longer address the leftover at all ("Builder not found", the #1102 row-less gap). The tool's own preservation path manufactures row-less worktrees.Observed inconsistency (two workspaces, 2026-08-02/06)
package-lock.json) were preserved; builders with untracked-only dirt (builder artifacts, porch state) were fully removed — both printed[ok] cleaned up!. Neither the criterion nor the outcome difference is stated in the output.[ok]for all three.Asks
[warn] Deregistered only — worktree preserved (uncommitted changes / non-canonical branch): <path>and exit distinctly, so scripts and agents can branch on it.git worktree remove.Related: #1102 (row-less teardown +
-ibugfix matching), #1101 (SPLIT states).