Review findings on this branch:
- The skip keyed on status.supported, which is can_apply == (install_method
== "git"). That silenced docker/nix/apt backends too, which do return a
real command, and it could act on a stale status after switching remotes.
With the empty-command fix, a managed backend already lands on an honest
message-only dialog, so the skip isn't needed.
- Every backend manual state comes from the refusal branch, so the
apply.error "refused" flag always equalled isBackend. Stop writing a UI
flag into the error field; ManualView picks the command-less title from
isBackend.
- Normalise the backend command once instead of `|| null` / `|| undefined`.