Skip to main content

appcore_update/
error.rs

1use crate::UpdateFaultPoint;
2
3/// Update lifecycle failure.
4#[derive(Debug, thiserror::Error)]
5pub enum UpdateError {
6    /// Artifact metadata is invalid.
7    #[error("invalid artifact metadata: {0}")]
8    InvalidArtifact(String),
9    /// Artifact is incompatible with the current runtime or protocol.
10    #[error("incompatible artifact: {0}")]
11    Incompatible(String),
12    /// Provider failed to list or fetch an artifact.
13    #[error("update provider failed: {0}")]
14    Provider(String),
15    /// Artifact exceeded the configured byte bound.
16    #[error("artifact exceeds maximum size of {max_bytes} bytes")]
17    ArtifactTooLarge {
18        /// Configured maximum size.
19        max_bytes: usize,
20    },
21    /// Artifact bytes do not match the declared checksum.
22    #[error("artifact checksum mismatch")]
23    ChecksumMismatch,
24    /// Artifact authenticity could not be established.
25    #[error("artifact authenticity verification failed: {0}")]
26    Authenticity(String),
27    /// Artifact storage failed.
28    #[error("artifact store failed: {0}")]
29    Store(String),
30    /// Activation health verification failed.
31    #[error("activated artifact failed health verification: {0}")]
32    Health(String),
33    /// A controlled fault was injected for validation.
34    #[error("injected update fault at {0:?}")]
35    InjectedFault(UpdateFaultPoint),
36    /// Rollback failed after activation failed.
37    #[error("rollback failed after {cause}: {rollback}")]
38    RollbackFailed {
39        /// Original activation or health failure.
40        cause: String,
41        /// Rollback failure detail.
42        rollback: String,
43    },
44}
45
46/// Result returned by the update lifecycle.
47pub type UpdateResult<T> = Result<T, UpdateError>;