pub enum RunnerRootError {
Show 19 variants
SystemDirectoryUnavailable {
source: Error,
},
SystemDirectoryUnusable {
got: String,
source: LocalPathError,
},
ApplicationRuntimeDirectoryUnusable {
got: PathBuf,
source: LocalPathError,
},
NonUnicode {
got: PathBuf,
},
ForeignPlatform {
got: String,
platform: PathPlatform,
},
Inspect {
path: PathBuf,
source: Error,
},
ExistingFile {
path: PathBuf,
},
Symlinked {
path: PathBuf,
},
MissingParents {
path: PathBuf,
deepest_existing: PathBuf,
},
ParentIsNotADirectory {
parent: PathBuf,
},
NotWritable {
path: PathBuf,
remediation: String,
},
DeniedByPrivacyPolicy {
requested: PathBuf,
refused: PathBuf,
remediation: String,
},
ParentNotWritable {
parent: PathBuf,
leaf: PathBuf,
remediation: String,
},
RemoteFilesystem {
path: PathBuf,
filesystem: String,
},
UnprovableFilesystem {
path: PathBuf,
filesystem: String,
},
ResolvesToFilesystemRoot {
path: PathBuf,
canonical: PathBuf,
},
Overlaps {
candidate: PathBuf,
relation: Overlap,
other: PathBuf,
other_owner: String,
detail: &'static str,
},
Escapes {
root: PathBuf,
child: PathBuf,
resolved: PathBuf,
},
DerivedName {
source: LocalPathError,
},
}Expand description
Why a runner root cannot be resolved, or cannot be used.
One type for every caller: CLI, TUI, daemon startup and restart recovery all
reach the same decision, and 02-target-architecture.md requires them to
reach it with the same messages. No variant may ever be handed a token or a
JIT configuration — these are paths, and they are printed verbatim.
Variants§
SystemDirectoryUnusable
ApplicationRuntimeDirectoryUnusable
NonUnicode
ForeignPlatform
Inspect
ExistingFile
Symlinked
MissingParents
ParentIsNotADirectory
NotWritable
DeniedByPrivacyPolicy
Fields
ParentNotWritable
RemoteFilesystem
UnprovableFilesystem
ResolvesToFilesystemRoot
Overlaps
Escapes
DerivedName
Fields
source: LocalPathErrorImplementations§
Source§impl RunnerRootError
impl RunnerRootError
Sourcepub const fn kind(&self) -> &'static str
pub const fn kind(&self) -> &'static str
Which refusal this is, as a closed-vocabulary token.
The agent’s log sink redacts by field name and then by value shape
(crate::logging), and a RunnerRootError’s Display is mostly
filesystem paths – so the sentence an operator needs cannot travel on a
daemon log line, and the one that tried arrived as [redacted]. This is
the part that can travel: a fixed identifier, on an allow-listed field,
naming which refusal happened. It tells an operator staring at
runner_start_failed reason=other which of a dozen causes they have,
which is the difference between a diagnosis and a guess.
Every value here must stay a short snake_case token, for the reason the
vocabulary is closed at all: crate::logging::redact scrubs anything
that looks like a path or an opaque run, and a token that acquired a
slash would be replaced on its way out.
Trait Implementations§
Source§impl Debug for RunnerRootError
impl Debug for RunnerRootError
Source§impl Display for RunnerRootError
impl Display for RunnerRootError
Source§impl Error for RunnerRootError
impl Error for RunnerRootError
Source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · Source§fn description(&self) -> &str
fn description(&self) -> &str
use the Display impl or to_string()