fn worktree_uncommitted_reason(path: &Path) -> Option<String>Expand description
Uncommitted or untracked changes, or None when the tree is
porcelain-clean.
The subagent reap gates on this alone: committed work is safe there
because the branch outlives the tree and reap_worktree_branch
keeps one holding unique commits. Uncommitted work exists only in
the tree, so a status that cannot be read blocks.