async fn is_worktree_dirty(cwd: &Path, budget: Duration) -> Option<bool>Expand description
Returns Some(dirty) when git status ran cleanly (Ok /
Empty); None when the subprocess hit Failed / Oversize.
Callers thread the None signal into LayerState::ScanFailed
so the renderer can surface “(scan failed)” for layer 1 instead
of silently rendering a clean tree when the probe upstream of
numstat collapsed.