tkt 0.1.0

Git-native ticket CLI — frontmatter-driven work tracking in .tickets/
mod audit;
mod cli;
mod color;
mod commands;
mod config;
mod core;
mod findings;
mod fix;
mod git;
mod mutation;
mod renumber;
mod telemetry;
mod transaction;

use std::process::ExitCode;

/// Domain-level failure: expected conditions like "ticket not found", "status conflict",
/// "validation drift". These exit with code 1.
#[derive(Debug)]
pub(crate) struct DomainError(pub String);

impl std::fmt::Display for DomainError {
    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
        write!(f, "{}", self.0)
    }
}

impl std::error::Error for DomainError {}

/// Global quiet flag — set once at startup, read by command functions.
pub(crate) static QUIET: std::sync::atomic::AtomicBool = std::sync::atomic::AtomicBool::new(false);

fn main() -> ExitCode {
    let code = cli::run();
    ExitCode::from(code as u8)
}