trustformers_debug/simulation_tools/
edge_case_discovery.rs1use super::types::*;
7use chrono::{DateTime, Utc};
8use serde::{Deserialize, Serialize};
9use std::collections::HashMap;
10
11#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct EdgeCaseDiscoveryResult {
14 pub timestamp: DateTime<Utc>,
16 pub edge_cases: Vec<EdgeCase>,
18 pub classification: EdgeCaseClassification,
20 pub coverage_analysis: CoverageAnalysis,
22 pub risk_assessment: EdgeCaseRiskAssessment,
24}
25
26#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct EdgeCase {
29 pub id: String,
31 pub description: String,
33 pub trigger_input: HashMap<String, f64>,
35 pub model_output: f64,
37 pub expected_output: Option<f64>,
39 pub edge_case_type: EdgeCaseType,
41 pub severity: EdgeCaseSeverity,
43 pub likelihood: f64,
45 pub detection_method: String,
47}
48
49#[derive(Debug, Clone, Serialize, Deserialize)]
51pub struct EdgeCaseClassification {
52 pub by_type: HashMap<EdgeCaseType, usize>,
54 pub by_severity: HashMap<EdgeCaseSeverity, usize>,
56 pub common_patterns: Vec<EdgeCasePattern>,
58 pub systematic_issues: Vec<SystematicIssue>,
60}
61
62#[derive(Debug, Clone, Serialize, Deserialize)]
64pub struct EdgeCasePattern {
65 pub pattern: String,
67 pub frequency: usize,
69 pub involved_features: Vec<String>,
71 pub pattern_severity: f64,
73}
74
75#[derive(Debug, Clone, Serialize, Deserialize)]
77pub struct SystematicIssue {
78 pub issue: String,
80 pub affected_regions: Vec<String>,
82 pub impact: SystematicIssueImpact,
84 pub recommended_fixes: Vec<String>,
86}
87
88#[derive(Debug, Clone, Serialize, Deserialize)]
90pub struct CoverageAnalysis {
91 pub feature_space_coverage: f64,
93 pub boundary_coverage: f64,
95 pub uncovered_regions: Vec<UncoveredRegion>,
97 pub coverage_gaps: Vec<CoverageGap>,
99}
100
101#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct UncoveredRegion {
104 pub region: String,
106 pub boundaries: HashMap<String, (f64, f64)>,
108 pub risk_level: f64,
110 pub coverage_reason: String,
112}
113
114#[derive(Debug, Clone, Serialize, Deserialize)]
116pub struct CoverageGap {
117 pub gap: String,
119 pub location: HashMap<String, f64>,
121 pub size: f64,
123 pub potential_edge_cases: usize,
125}
126
127#[derive(Debug, Clone, Serialize, Deserialize)]
129pub struct EdgeCaseRiskAssessment {
130 pub overall_risk: f64,
132 pub risk_by_type: HashMap<EdgeCaseType, f64>,
134 pub high_risk_cases: Vec<String>,
136 pub mitigation_priorities: Vec<RiskMitigationPriority>,
138}
139
140#[derive(Debug, Clone, Serialize, Deserialize)]
142pub struct RiskMitigationPriority {
143 pub priority: usize,
145 pub edge_cases: Vec<String>,
147 pub actions: Vec<String>,
149 pub risk_reduction: f64,
151}