made-core 0.5.0

Domain core of MADE: entities, value objects, events, ports. No IO.
Documentation
//! [`ValidationMode`] — how strictly a council decision honours its
//! configured [`OutputContract`].

use serde::{Deserialize, Serialize};

/// How the [`RunCouncilDecision`](crate::value_objects) RPC treats
/// validator failures when picking a winner.
#[derive(Debug, Clone, Copy, Eq, PartialEq, Serialize, Deserialize, Default)]
pub enum ValidationMode {
    /// Reject the deliberation if no candidate proposal satisfies the
    /// contract. Surfaces `DomainError::NoValidProposal` to the
    /// caller. This is the default and mirrors the historical
    /// [`Deliberation::pick_winner`] semantics when an
    /// [`OutputContract`] is configured.
    #[default]
    Strict,
    /// Always return the top-ranked candidate as the winner, even if
    /// it fails validation. The response carries a `passed=false`
    /// outcome and per-candidate validator reports so the caller can
    /// reason about the failure without losing the proposal.
    Warn,
}