main-spex 0.19.1

AI-first development framework that turns specifications into deterministic, verifiable code
use serde::Deserialize;

use super::id::{AcId, SpecId};
use super::spec::{ContractLevel, CoverageIgnore, Statement, Status};

#[cfg(test)]
#[path = "spec_config_test.rs"]
mod spec_config_test;

#[derive(Debug, Deserialize)]
pub struct SpecConfig {
    pub id: SpecId,
    #[serde(default)]
    pub description: String,
    #[serde(default)]
    pub acceptance_criteria: Vec<AcceptanceCriterionConfig>,
    #[serde(default)]
    pub blocked_by: Vec<SpecId>,
    #[serde(default)]
    pub scope: Vec<String>,
    #[serde(default)]
    pub status: Status,
    pub contract: ContractLevel,
    #[serde(default)]
    pub coverage_ignore: Vec<CoverageIgnore>,
}

#[derive(Debug, Deserialize)]
pub struct AcceptanceCriterionConfig {
    pub id: AcId,
    #[serde(flatten)]
    pub statement: Statement,
    #[serde(default)]
    pub is_done: Option<bool>,
}