Skip to content

[P2.1-T02] Add RuleMetadata struct #39

@RichardHightower

Description

@RichardHightower

Task: Add RuleMetadata struct

Phase: 2.1 - Core Governance
Estimated: 0.5 day
File: cch_cli/src/models/mod.rs

Description

Create the RuleMetadata struct to support rule provenance tracking.

Acceptance Criteria

  • Create RuleMetadata struct in models/mod.rs
  • Fields: author, created_by, reason, confidence, last_reviewed, ticket, tags
  • All fields are Option<T>
  • Create Confidence enum: High, Medium, Low
  • Implement Deserialize and Serialize
  • Add unit tests

Code Reference

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
pub struct RuleMetadata {
    #[serde(skip_serializing_if = "Option::is_none")]
    pub author: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub created_by: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub reason: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub confidence: Option<Confidence>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub last_reviewed: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub ticket: Option<String>,
    #[serde(skip_serializing_if = "Option::is_none")]
    pub tags: Option<Vec<String>>,
}

#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "lowercase")]
pub enum Confidence {
    High,
    Medium,
    Low,
}

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions