kitt_score 0.1.0

Decision engine at the core of Project KITT — in-memory stateful matching with pluggable scoring backends.
Documentation
//! The score tuple and the per-candidate record passed to the decider trait.

use crate::ActionId;

/// Per-action score output.
///
/// `priority` is copied from the action registration; `score` is the scalar
/// output of the [`Scorer`]. The default decider implementation uses
/// `score` only, but users can override to implement lexicographic policies.
///
/// [`Scorer`]: crate::scoring::Scorer
#[derive(Clone, Copy, Debug, PartialEq)]
pub struct ScoreResult {
    /// Tie-breaker priority copied from the registered action.
    pub priority: u8,
    /// Scalar score produced by the `Scorer` — higher is better.
    pub score: f32,
}

/// One candidate handed to the decider trait's decide method.
#[derive(Clone, Debug)]
pub struct Candidate {
    /// The action being scored.
    pub action_id: ActionId,
    /// Its score.
    pub score: ScoreResult,
}