ux(steering): hard-steer raw git worktree to the madtea worktree surface (madt_worktrees / madtea worktree) #69
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#69
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?
Raw
git worktreein agent sessions should be blocked and pointed at madtea's worktree commands, the same way the existing git-steering hooks redirect other git operations to themadt_*surface. Rationale: madtea's worktree surface is deliberately more careful with destructive ops than raw git —removeis non-force by default: git's refusal on a dirty/locked worktree is surfaced, never overridden;force=trueis an explicit, documented opt-in. Rawgit worktree remove --forcesilently discards uncommitted work.pruneis the only sanctioned stale-metadata escape;rebase(action=rebase /madtea worktree rebase) replaces the rawcd <wt> && git rebaseloop;statusbatches the pre-finish commit-clean check.Evidence (dogfood, 2026-07-14)
An agent session doing parallel-worktree work used raw
git worktree add(×7) and rawgit worktree remove+git branch -dfor teardown, despitemadt_worktreesadd/remove/status being loaded and available — nothing steered it. The guarded surface only gets used when the unguarded one is closed.Ask
A PreToolUse steering hook (plugin
hooks/hooks.json+hooks/scripts/) that denies Bash invocations ofgit worktree <subcommand>and points at the equivalent:madt_worktrees action=add|list|status|remove|rebase|prunemadtea worktree <subcommand>Design notes:
remove,prune) are the priority;add/liststeer too for surface consistency (list is read-only — denying it is about habit-forming, call that out in the refusal so it doesn't read as a safety claim).move,lock/unlock,repair) need an explicit decision: pass through, or refuse with guidance. Don't leave them falling through with a misleading message.internal/danglingref-clean; #15's terminal-or-forwarding refusal UX applies when it lands).gitcommands staying untouched.Acceptance
git worktree remove/prune/add(and agreed others) via Bash are denied with a refusal naming the exact madtea replacement for that subcommand.