1crate::ix!();
3
4#[derive(Copy,EnumIter,Debug, Clone, PartialEq, Eq, Hash)]
5pub enum WarriorCyberDefenseCapability {
6 CybersecuritySavvyAndDigitallyVigilant,
9
10 ProactivelyResponsiveToDigitalThreats,
13
14 CapableOfRealTimeMalwareNeutralization,
17
18 ProficientInCommunicationEncryption,
21
22 AdeptAtDeployingAutonomousIntrusionCountermeasures,
25
26 SkilledAtAdaptiveSystemHardening,
29
30 VigilantInOperationalSecurityUnderCyberAttack,
33
34 CompetentAtZeroDayVulnerabilityMitigation,
37
38 ExpertAtDigitalThreatIntelligenceGathering,
41
42 SkilledInSecurePostIncidentRecovery,
45}
46
47impl WarriorCyberDefenseCapability {
48 #[instrument(level = "trace", skip(self))]
49 pub fn intrinsic_dimension_ratings(&self) -> WarriorCapabilityIntrinsicDimensionRatings {
50 use WarriorCyberDefenseCapability::*;
51 tracing::trace!(
52 target: "intrinsic_ratings",
53 ?self,
54 "Generating ratings for cyber‑defense capability"
55 );
56 match self {
57 CybersecuritySavvyAndDigitallyVigilant => wc_ratings!(
58 0.00, 0.00, 0.40, 0.20, 0.00, 0.40, 0.00, 0.60, 0.70, 0.40,
59 0.20, 0.50, 0.60, 0.00, 0.30, 0.40, 0.50, 0.20, 0.60, 0.00,
60 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.20, 0.55, 0.00,
61 0.60, 0.30, 0.00, 0.00, 0.00, 0.60, 0.80, 0.00, 0.70, 0.00,
62 0.00, 0.00, 0.60, 0.00, 0.00, 0.60, 0.30, 0.00, 0.00, 0.00,
63 0.60, 0.50, 0.50, 0.40, 0.50, 0.00, 0.60, 0.50, 0.75, 0.60,
64 0.60, 0.40, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50,
65 0.60, 0.65, 0.00, 0.75, 0.50, 0.00, 0.00, 0.00, 0.30, 0.40,
66 0.00, 0.40, 0.55, 0.60, 0.70, 0.85, 0.55, 0.50, 0.60, 0.50,
67 0.00, 0.20, 0.50, 0.40, 0.60, 0.00, 0.20, 0.60, 0.40, 0.40,
68 0.60, 0.30, 0.30, 0.30, 0.60, 0.40, 0.50, 0.60, 0.60, 0.70,
69 0.60, 0.60, 0.55, 0.60, 0.70
70 ),
71
72 ProactivelyResponsiveToDigitalThreats => wc_ratings!(
73 0.00, 0.00, 0.50, 0.00, 0.00, 0.50, 0.00, 0.60, 0.00, 0.70,
74 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00,
75 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.60, 0.00,
76 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.70, 0.00, 0.70, 0.00,
77 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
78 0.60, 0.55, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00,
79 0.80, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
80 0.00, 0.60, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
81 0.00, 0.00, 0.60, 0.60, 0.60, 0.70, 0.90, 0.70, 0.00, 0.70,
82 0.00, 0.20, 0.40, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00,
83 0.00, 0.00, 0.00, 0.00, 0.60, 0.40, 0.50, 0.60, 0.60, 0.70,
84 0.60, 0.60, 0.00, 0.00, 0.65
85 ),
86
87 CapableOfRealTimeMalwareNeutralization => wc_ratings!(
88 0.00, 0.00, 0.45, 0.00, 0.00, 0.55, 0.00, 0.65, 0.00, 0.00,
89 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00,
90 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00,
91 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00,
92 0.00, 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00, 0.00, 0.00,
93 0.60, 0.55, 0.35, 0.00, 0.00, 0.00, 0.00, 0.00, 0.55, 0.00,
94 0.85, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
95 0.00, 0.60, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
96 0.00, 0.00, 0.70, 0.60, 0.60, 0.65, 0.75, 0.95, 0.00, 0.60,
97 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00,
98 0.00, 0.00, 0.00, 0.00, 0.60, 0.50, 0.50, 0.60, 0.60, 0.60,
99 0.00, 0.00, 0.00, 0.00, 0.60
100 ),
101
102 ProficientInCommunicationEncryption => wc_ratings!(
103 0.00, 0.00, 0.45, 0.00, 0.00, 0.50, 0.00, 0.60, 0.00, 0.00,
104 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
105 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
106 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00,
107 0.00, 0.00, 0.00, 0.00, 0.00, 0.55, 0.00, 0.00, 0.00, 0.00,
108 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00,
109 0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
110 0.00, 0.55, 0.00, 0.75, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
111 0.00, 0.00, 0.60, 0.55, 0.70, 0.65, 0.55, 0.00, 0.90, 0.60,
112 0.00, 0.00, 0.00, 0.00, 0.55, 0.00, 0.00, 0.00, 0.00, 0.00,
113 0.00, 0.00, 0.00, 0.00, 0.60, 0.40, 0.50, 0.55, 0.55, 0.55,
114 0.00, 0.00, 0.00, 0.00, 0.55
115 ),
116
117 AdeptAtDeployingAutonomousIntrusionCountermeasures => wc_ratings!(
118 0.00, 0.00, 0.40, 0.00, 0.00, 0.60, 0.00, 0.70, 0.00, 0.00,
119 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
120 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.60, 0.00,
121 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00,
122 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
123 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00,
124 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
125 0.00, 0.60, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
126 0.00, 0.00, 0.75, 0.60, 0.70, 0.70, 0.65, 0.00, 0.00, 0.90,
127 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00, 0.00, 0.00, 0.00,
128 0.00, 0.00, 0.00, 0.00, 0.60, 0.40, 0.50, 0.65, 0.65, 0.65,
129 0.60, 0.60, 0.55, 0.60, 0.65
130 ),
131
132 SkilledAtAdaptiveSystemHardening => wc_ratings!(
133 0.00, 0.00, 0.00, 0.00, 0.00, 0.80, 0.00, 0.60, 0.00, 0.00,
134 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
135 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.75, 0.00,
136 0.00, 0.00, 0.00, 0.00, 0.00, 0.80, 0.60, 0.00, 0.00, 0.00,
137 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
138 0.00, 0.60, 0.00, 0.00, 0.80, 0.00, 0.70, 0.00, 0.60, 0.00,
139 0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
140 0.00, 0.75, 0.00, 0.75, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
141 0.00, 0.00, 0.85, 0.60, 0.75, 0.00, 0.00, 0.00, 0.00, 0.00,
142 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00,
143 0.00, 0.00, 0.00, 0.00, 0.60, 0.50, 0.55, 0.70, 0.70, 0.70,
144 0.60, 0.60, 0.60, 0.60, 0.70
145 ),
146
147 VigilantInOperationalSecurityUnderCyberAttack => wc_ratings!(
148 0.00, 0.00, 0.50, 0.00, 0.00, 0.75, 0.00, 0.60, 0.00, 0.00,
149 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
150 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00,
151 0.00, 0.00, 0.00, 0.00, 0.00, 0.65, 0.70, 0.00, 0.75, 0.00,
152 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
153 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.65, 0.00,
154 0.65, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
155 0.00, 0.65, 0.00, 0.75, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
156 0.00, 0.00, 0.80, 0.60, 0.90, 0.75, 0.00, 0.00, 0.00, 0.60,
157 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00,
158 0.00, 0.00, 0.00, 0.00, 0.60, 0.50, 0.55, 0.70, 0.70, 0.80,
159 0.60, 0.70, 0.60, 0.60, 0.80
160 ),
161
162 CompetentAtZeroDayVulnerabilityMitigation => wc_ratings!(
163 0.00, 0.00, 0.70, 0.00, 0.00, 0.70, 0.00, 0.70, 0.00, 0.00,
164 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
165 0.00, 0.00, 0.00, 0.00, 0.75, 0.00, 0.00, 0.00, 0.75, 0.00,
166 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00, 0.00,
167 0.00, 0.00, 0.00, 0.00, 0.00, 0.75, 0.00, 0.00, 0.00, 0.00,
168 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.70, 0.00,
169 0.80, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
170 0.00, 0.70, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
171 0.00, 0.00, 0.80, 0.85, 0.75, 0.80, 0.80, 0.70, 0.00, 0.00,
172 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00, 0.00, 0.00, 0.00,
173 0.00, 0.00, 0.00, 0.00, 0.60, 0.55, 0.60, 0.70, 0.70, 0.80,
174 0.60, 0.60, 0.60, 0.60, 0.65
175 ),
176
177 ExpertAtDigitalThreatIntelligenceGathering => wc_ratings!(
178 0.00, 0.00, 0.80, 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00,
179 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.40, 0.00, 0.00,
180 0.00, 0.00, 0.00, 0.00, 0.80, 0.00, 0.00, 0.00, 0.00, 0.00,
181 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00,
182 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
183 0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.80, 0.00,
184 0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
185 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
186 0.00, 0.00, 0.70, 0.70, 0.70, 0.90, 0.00, 0.00, 0.65, 0.00,
187 0.00, 0.40, 0.75, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00,
188 0.00, 0.00, 0.00, 0.00, 0.75, 0.60, 0.55, 0.70, 0.70, 0.75,
189 0.60, 0.70, 0.60, 0.60, 0.60
190 ),
191
192 SkilledInSecurePostIncidentRecovery => wc_ratings!(
193 0.00, 0.00, 0.60, 0.00, 0.00, 0.85, 0.00, 0.00, 0.00, 0.00,
194 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
195 0.00, 0.00, 0.00, 0.00, 0.80, 0.00, 0.00, 0.00, 0.60, 0.00,
196 0.00, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00,
197 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00,
198 0.70, 0.00, 0.00, 0.00, 0.80, 0.00, 0.80, 0.00, 0.70, 0.00,
199 0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
200 0.00, 0.70, 0.00, 0.80, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
201 0.00, 0.00, 0.85, 0.60, 0.75, 0.00, 0.65, 0.60, 0.00, 0.00,
202 0.00, 0.00, 0.00, 0.00, 0.75, 0.60, 0.55, 0.70, 0.70, 0.80,
203 0.60, 0.70, 0.60, 0.60, 0.60, 0.60, 0.60, 0.60, 0.60, 0.75,
204 0.60, 0.75, 0.60, 0.60, 0.85
205 ),
206 }
207 }
208}