//! Typed classification of subprocess spawn failures.
use io;
use crateAppError;
/// Turn a subprocess spawn failure into a typed [`AppError`].
///
/// The OS detail is kept as the visible `{context}: {error}` message, while the
/// code is classified from the underlying [`io::ErrorKind`] (a missing program
/// becomes [`NotFound`](rskit_errors::ErrorCode::NotFound), a non-executable one
/// [`Forbidden`](rskit_errors::ErrorCode::Forbidden), and so on). Callers can
/// then tell "not installed" apart from other spawn failures instead of seeing
/// every failure collapsed into `Internal`. The classified error is preserved as
/// the cause so the original `io::Error` chain survives.
pub