dpm-model 0.1.0

Domain model for DPM execution planning
Documentation
use serde::{Deserialize, Serialize};

/// Author-supplied procedure and scope for an executable task, not execution authorization.
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct WorkInstructions {
    /// Ordered actions; their array order defines the suggested procedure.
    pub steps: Vec<ExecutionStep>,
    /// Deliverables and changes permitted by this contract.
    pub in_scope: Vec<String>,
    /// Explicit exclusions to prevent unapproved scope expansion.
    pub out_of_scope: Vec<String>,
    /// Checks and evidence to collect against the task's acceptance criteria.
    pub verification: Vec<String>,
}

/// One inspectable action and the observable result it should produce.
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct ExecutionStep {
    /// Concrete action for the worker.
    pub action: String,
    /// Observable output used to assess completion of this step.
    pub expected_result: String,
}