pub enum TixError {
Io(Error),
Workflow(WorkflowDiagnostic),
Config(String),
Parse(String),
NotFound(String),
InvalidInput(String),
Refused(String),
Editor(String),
External(String),
Kitty(String),
}Expand description
Typed errors raised by tix.
Variants§
Io(Error)
An I/O operation failed (read/write/rename/remove).
Workflow(WorkflowDiagnostic)
The transition service refused a status change (contract §3.5).
WP03. Carries the diagnostic, not a pre-formatted string, so the named
kind reaches the surface intact: the CLI, the TUI, MCP and lint all report
one condition under one name (contract §6). A refusal that arrives as a
bare InvalidInput would be indistinguishable from a typo caught by
argument parsing, and the caller could not tell “you asked for a column
that does not exist” from “that move is against policy”.
Reaching this variant is itself the contract: nothing was written — no
issue file, no tix.toml, no History entry. The seam guarantees it.
Config(String)
tix.toml or other config surface is invalid.
Parse(String)
A data file (issue frontmatter, config) could not be parsed.
NotFound(String)
The requested issue/config path does not exist.
InvalidInput(String)
User input failed validation.
Refused(String)
A validation refusal whose findings are already a rendered block.
render_diagnostics renders the service’s findings through
crate::diagnostics, so by the time they reach an error they are a
rustc-style block, not a bare message. Wrapping that in the invalid input:
prefix would put a second, non-rustc prefix in front of a rustc block — so
this variant prints its payload verbatim (#[error("{0}")]), and
render_error returns it unchanged.
Editor(String)
Launching or interacting with the $EDITOR failed.
External(String)
An external tool (glab, linear-cli, …) failed.
Kitty(String)
Spec Kitty bridge error (kitty-specs/ read, parse, or link).
Implementations§
Source§impl TixError
impl TixError
Sourcepub fn diagnostic_id(&self) -> &'static str
pub fn diagnostic_id(&self) -> &'static str
The stable rendering id for this error, used by render_error.
One id per variant, so the CLI, MCP, and the TUI all bracket the same
condition with the same name. Refused has no id of its own — its payload
already carries one.
Trait Implementations§
Source§impl Error for TixError
impl Error for TixError
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()
Source§impl From<EpicError> for TixError
An epic refusal becomes user input error, so ? works at the call site.
impl From<EpicError> for TixError
An epic refusal becomes user input error, so ? works at the call site.
The payload is a single-line diagnostic (<kind>: <message>), so it takes the
crate’s existing invalid input: prefix without doubling it — the same
boundary every other selector/validation refusal crosses (cli-surface §6).
Source§impl From<HierarchyError> for TixError
A hierarchy refusal becomes user input error, so ? works at the call site.
impl From<HierarchyError> for TixError
A hierarchy refusal becomes user input error, so ? works at the call site.
The conversion is total and lossless: the type’s own Display already renders
the full diagnostic set, and InvalidInput supplies the invalid input: prefix
every other validation failure in the crate carries.
Source§fn from(err: HierarchyError) -> TixError
fn from(err: HierarchyError) -> TixError
Source§impl From<ProjectError> for TixError
A project refusal becomes user input error, so ? works at the call site.
impl From<ProjectError> for TixError
A project refusal becomes user input error, so ? works at the call site.
The payload is a single-line diagnostic (<kind>: <message>), so it takes the
crate’s existing invalid input: prefix without doubling it — the same
boundary every other selector/validation refusal crosses (cli-surface §6).
Source§fn from(err: ProjectError) -> TixError
fn from(err: ProjectError) -> TixError
Source§impl From<RuleError> for TixError
A rule refusal becomes a rendered error at the surface, like every other
validation refusal (crate::error::TixError::Refused).
impl From<RuleError> for TixError
A rule refusal becomes a rendered error at the surface, like every other
validation refusal (crate::error::TixError::Refused).
Source§impl From<TimeMutationError> for TixError
A refusal becomes user input error, so ? works at the call site.
impl From<TimeMutationError> for TixError
A refusal becomes user input error, so ? works at the call site.
<kind>: <message> is already a single-line diagnostic, so it takes the crate’s
existing invalid input: prefix without doubling it — the same boundary
crate::projects::ProjectError crosses.
Source§fn from(err: TimeMutationError) -> TixError
fn from(err: TimeMutationError) -> TixError
Source§impl From<TixError> for TemplateWriteError
impl From<TixError> for TemplateWriteError
Source§fn from(error: TixError) -> Self
fn from(error: TixError) -> Self
A bare error from the registry is a refusal by default: the registry’s
failures are all validation, and the save path maps its own error to
TemplateWriteError::Failed explicitly.
Auto Trait Implementations§
impl !RefUnwindSafe for TixError
impl !UnwindSafe for TixError
impl Freeze for TixError
impl Send for TixError
impl Sync for TixError
impl Unpin for TixError
impl UnsafeUnpin for TixError
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> ToCompactString for Twhere
T: Display,
impl<T> ToCompactString for Twhere
T: Display,
Source§fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
fn try_to_compact_string(&self) -> Result<CompactString, ToCompactStringError>
ToCompactString::to_compact_string() Read moreSource§fn to_compact_string(&self) -> CompactString
fn to_compact_string(&self) -> CompactString
CompactString. Read more