diffguard-types 0.2.0

Core types for diffguard governance linter
Documentation

diffguard-types

Serializable DTOs and schema-bound types shared across the diffguard workspace.

This crate intentionally contains data types and constants, not orchestration or I/O.

Primary Type Groups

Configuration:

  • ConfigFile
  • Defaults
  • RuleConfig
  • RuleTestCase
  • DirectoryOverrideConfig
  • RuleOverride

Check/receipt model:

  • CheckReceipt
  • Finding
  • Verdict
  • VerdictCounts
  • VerdictStatus (pass, warn, fail, skip)
  • DiffMeta, ToolMeta, TimingMetrics

Sensor model:

  • SensorReport
  • RunMeta
  • CapabilityStatus
  • SensorFinding
  • SensorLocation
  • Artifact

Enums/constants:

  • Severity, Scope, FailOn, MatchMode
  • CHECK_SCHEMA_V1
  • SENSOR_REPORT_SCHEMA_V1
  • stable reason/code/capability tokens

Built-In Rules

ConfigFile::built_in() returns the workspace default rule set and default settings used by the CLI pipeline.

Usage

use diffguard_types::{ConfigFile, RuleConfig, Severity};

let built_in = ConfigFile::built_in();

let custom_rule = RuleConfig {
    id: "example.no_todo".to_string(),
    severity: Severity::Warn,
    message: "Resolve TODO comments before merge".to_string(),
    languages: vec!["rust".to_string()],
    patterns: vec![r"\bTODO\b".to_string()],
    paths: vec!["**/*.rs".to_string()],
    exclude_paths: vec!["**/tests/**".to_string()],
    ignore_comments: false,
    ignore_strings: true,
    match_mode: Default::default(),
    multiline: false,
    multiline_window: None,
    context_patterns: vec![],
    context_window: None,
    escalate_patterns: vec![],
    escalate_window: None,
    escalate_to: None,
    depends_on: vec![],
    help: None,
    url: None,
    tags: vec![],
    test_cases: vec![],
};

let _json = serde_json::to_string_pretty(&built_in)?;
let _toml = toml::to_string_pretty(&custom_rule)?;

Determinism Notes

Schema IDs and vocabulary constants are stable integration contracts for downstream tooling.

License

Licensed under either of Apache License, Version 2.0 or MIT license at your option.