idiolect-records 0.1.0

Rust record types mirroring the dev.idiolect.* Lexicon family.
Documentation
// @generated by idiolect-codegen. do not edit.
// source: dev.idiolect.recommendation

//! A community-published opinionated path with optional verification requirements. Recommendations are declarative guidance; orchestrators do not enforce them.

#![allow(
    missing_docs,
    clippy::doc_markdown,
    clippy::struct_excessive_bools,
    clippy::derive_partial_eq_without_eq
)]
use serde::{Deserialize, Serialize};

/// A community states: for this situation, we recommend this lens path, subject to these preconditions and caveats. Consumers adopt or ignore.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Recommendation {
    /// Why this path, how to use it, known strengths.
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub annotations: Option<String>,
    /// Known limitations and failure modes.
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub caveats: Option<String>,
    /// Free-text description of when this recommendation applies. Matching is community judgment, not machine logic.
    pub conditions: String,
    pub issuing_community: String,
    /// Ordered sequence of lenses to compose. Length 1 means a single recommended lens.
    pub lens_path: Vec<super::defs::LensRef>,
    pub occurred_at: String,
    /// Assumptions the consumer must check before adopting.
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub preconditions: Option<String>,
    /// Verification kinds this recommendation assumes are in place.
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub required_verifications: Option<Vec<RecommendationRequiredVerifications>>,
    /// Prior recommendation this one replaces.
    #[serde(default, skip_serializing_if = "Option::is_none")]
    pub supersedes: Option<String>,
}

impl crate::Record for Recommendation {
    const NSID: &'static str = "dev.idiolect.recommendation";
}

/// RecommendationRequiredVerifications.
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum RecommendationRequiredVerifications {
    RoundtripTest,
    PropertyTest,
    FormalProof,
    ConformanceTest,
    StaticCheck,
    ConvergencePreserving,
}