worktrees: rebase resolves dir=/path= differently than add/remove - sanctioned worktrees get falsely refused as foreign #174
Labels
No labels
breaking
bug
documentation
enhancement
epic
good first issue
help wanted
refactoring
resolution/duplicate
resolution/invalid
resolution/wontfix
security
severity/critical
severity/high
severity/low
severity/medium
status/abandoned
status/blocked
status/needs-decision
status/needs-info
status/needs-verification
testing
upstream
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
sixfold-space/madtea#174
Loading…
Add table
Add a link
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?
Hit live today. A worktree created seconds earlier via the sanctioned flow:
The refusal claimed dir/path resolves to the PRIMARY checkout ("a worktree of a FOREIGN repository that does NOT match the caller-created convention") - i.e. rebase resolved the target from
diralone, apparently ignoringpath=, and the foreign guard then correctly rejected what it wrongly thought was the target. The samedir=primary + path=relativeaddressing works foraddandremove. The successful workaround was pointingdir=at the worktree itself and omittingpath=:One tool should have one addressing scheme:
rebaseshould joindir+pathexactly the wayadd/removedo. An agent that just used add/remove with this shape will reflexively reuse it, hit the false "not caller-created" refusal, and burn a retry.Acceptance:
action=rebase dir=<primary> path=<relative worktree>targets the worktree, same as add/remove.worktrees/<task>checkout this session created is never refused as not-caller-created due to path resolution