/// Granular progress events emitted during the self-update pipeline.
///
/// The TUI install path consumes these to give real-time feedback while the
/// download, checksum verification, extraction, and binary replacement run,
/// so the UI does not appear to hang on a single "Updating..." message.
pub