Skip to main content

trustformers_debug/simulation_tools/
edge_case_discovery.rs

1//! Edge Case Discovery and Risk Assessment
2//!
3//! This module provides comprehensive edge case discovery capabilities including
4//! systematic edge case identification, classification, coverage analysis, and risk assessment.
5
6use super::types::*;
7use chrono::{DateTime, Utc};
8use serde::{Deserialize, Serialize};
9use std::collections::HashMap;
10
11/// Edge case discovery result
12#[derive(Debug, Clone, Serialize, Deserialize)]
13pub struct EdgeCaseDiscoveryResult {
14    /// Analysis timestamp
15    pub timestamp: DateTime<Utc>,
16    /// Discovered edge cases
17    pub edge_cases: Vec<EdgeCase>,
18    /// Edge case classification
19    pub classification: EdgeCaseClassification,
20    /// Coverage analysis
21    pub coverage_analysis: CoverageAnalysis,
22    /// Risk assessment
23    pub risk_assessment: EdgeCaseRiskAssessment,
24}
25
26/// Individual edge case
27#[derive(Debug, Clone, Serialize, Deserialize)]
28pub struct EdgeCase {
29    /// Edge case ID
30    pub id: String,
31    /// Edge case description
32    pub description: String,
33    /// Input that triggers edge case
34    pub trigger_input: HashMap<String, f64>,
35    /// Model output for edge case
36    pub model_output: f64,
37    /// Expected output (if known)
38    pub expected_output: Option<f64>,
39    /// Edge case type
40    pub edge_case_type: EdgeCaseType,
41    /// Severity level
42    pub severity: EdgeCaseSeverity,
43    /// Likelihood of occurrence
44    pub likelihood: f64,
45    /// Detection method
46    pub detection_method: String,
47}
48
49/// Classification of discovered edge cases
50#[derive(Debug, Clone, Serialize, Deserialize)]
51pub struct EdgeCaseClassification {
52    /// Edge cases by type
53    pub by_type: HashMap<EdgeCaseType, usize>,
54    /// Edge cases by severity
55    pub by_severity: HashMap<EdgeCaseSeverity, usize>,
56    /// Most common edge case patterns
57    pub common_patterns: Vec<EdgeCasePattern>,
58    /// Systematic issues identified
59    pub systematic_issues: Vec<SystematicIssue>,
60}
61
62/// Pattern in edge cases
63#[derive(Debug, Clone, Serialize, Deserialize)]
64pub struct EdgeCasePattern {
65    /// Pattern description
66    pub pattern: String,
67    /// Number of cases matching pattern
68    pub frequency: usize,
69    /// Features involved in pattern
70    pub involved_features: Vec<String>,
71    /// Pattern severity
72    pub pattern_severity: f64,
73}
74
75/// Systematic issue identified
76#[derive(Debug, Clone, Serialize, Deserialize)]
77pub struct SystematicIssue {
78    /// Issue description
79    pub issue: String,
80    /// Affected feature regions
81    pub affected_regions: Vec<String>,
82    /// Issue impact
83    pub impact: SystematicIssueImpact,
84    /// Recommended fixes
85    pub recommended_fixes: Vec<String>,
86}
87
88/// Coverage analysis for edge case discovery
89#[derive(Debug, Clone, Serialize, Deserialize)]
90pub struct CoverageAnalysis {
91    /// Feature space coverage
92    pub feature_space_coverage: f64,
93    /// Boundary coverage
94    pub boundary_coverage: f64,
95    /// Uncovered regions
96    pub uncovered_regions: Vec<UncoveredRegion>,
97    /// Coverage gaps
98    pub coverage_gaps: Vec<CoverageGap>,
99}
100
101/// Region not covered by edge case discovery
102#[derive(Debug, Clone, Serialize, Deserialize)]
103pub struct UncoveredRegion {
104    /// Region description
105    pub region: String,
106    /// Region boundaries
107    pub boundaries: HashMap<String, (f64, f64)>,
108    /// Estimated risk level
109    pub risk_level: f64,
110    /// Reason for lack of coverage
111    pub coverage_reason: String,
112}
113
114/// Gap in edge case coverage
115#[derive(Debug, Clone, Serialize, Deserialize)]
116pub struct CoverageGap {
117    /// Gap description
118    pub gap: String,
119    /// Gap location
120    pub location: HashMap<String, f64>,
121    /// Gap size
122    pub size: f64,
123    /// Potential edge cases in gap
124    pub potential_edge_cases: usize,
125}
126
127/// Risk assessment for edge cases
128#[derive(Debug, Clone, Serialize, Deserialize)]
129pub struct EdgeCaseRiskAssessment {
130    /// Overall risk score
131    pub overall_risk: f64,
132    /// Risk by edge case type
133    pub risk_by_type: HashMap<EdgeCaseType, f64>,
134    /// High-risk edge cases
135    pub high_risk_cases: Vec<String>,
136    /// Risk mitigation priorities
137    pub mitigation_priorities: Vec<RiskMitigationPriority>,
138}
139
140/// Priority for risk mitigation
141#[derive(Debug, Clone, Serialize, Deserialize)]
142pub struct RiskMitigationPriority {
143    /// Priority level
144    pub priority: usize,
145    /// Edge cases to address
146    pub edge_cases: Vec<String>,
147    /// Recommended actions
148    pub actions: Vec<String>,
149    /// Expected risk reduction
150    pub risk_reduction: f64,
151}