crate::ix!();
#[derive(Copy,EnumIter,Debug, Clone, PartialEq, Eq, Hash)]
pub enum WarriorCyberDefenseCapability {
CybersecuritySavvyAndDigitallyVigilant,
ProactivelyResponsiveToDigitalThreats,
CapableOfRealTimeMalwareNeutralization,
ProficientInCommunicationEncryption,
AdeptAtDeployingAutonomousIntrusionCountermeasures,
SkilledAtAdaptiveSystemHardening,
VigilantInOperationalSecurityUnderCyberAttack,
CompetentAtZeroDayVulnerabilityMitigation,
ExpertAtDigitalThreatIntelligenceGathering,
SkilledInSecurePostIncidentRecovery,
}
impl WarriorCyberDefenseCapability {
#[instrument(level = "trace", skip(self))]
pub fn intrinsic_dimension_ratings(&self) -> WarriorCapabilityIntrinsicDimensionRatings {
use WarriorCyberDefenseCapability::*;
tracing::trace!(
target: "intrinsic_ratings",
?self,
"Generating ratings for cyber‑defense capability"
);
match self {
CybersecuritySavvyAndDigitallyVigilant => wc_ratings!(
0.00, 0.00, 0.40, 0.20, 0.00, 0.40, 0.00, 0.60, 0.70, 0.40,
0.20, 0.50, 0.60, 0.00, 0.30, 0.40, 0.50, 0.20, 0.60, 0.00,
0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.20, 0.55, 0.00,
0.60, 0.30, 0.00, 0.00, 0.00, 0.60, 0.80, 0.00, 0.70, 0.00,
0.00, 0.00, 0.60, 0.00, 0.00, 0.60, 0.30, 0.00, 0.00, 0.00,
0.60, 0.50, 0.50, 0.40, 0.50, 0.00, 0.60, 0.50, 0.75, 0.60,
0.60, 0.40, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50,
0.60, 0.65, 0.00, 0.75, 0.50, 0.00, 0.00, 0.00, 0.30, 0.40,
0.00, 0.40, 0.55, 0.60, 0.70, 0.85, 0.55, 0.50, 0.60, 0.50,
0.00, 0.20, 0.50, 0.40, 0.60, 0.00, 0.20, 0.60, 0.40, 0.40,
0.60, 0.30, 0.30, 0.30, 0.60, 0.40, 0.50, 0.60, 0.60, 0.70,
0.60, 0.60, 0.55, 0.60, 0.70
),
ProactivelyResponsiveToDigitalThreats => wc_ratings!(
0.00, 0.00, 0.50, 0.00, 0.00, 0.50, 0.00, 0.60, 0.00, 0.70,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.60, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.70, 0.00, 0.70, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.60, 0.55, 0.30, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00,
0.80, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.60, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.60, 0.60, 0.60, 0.70, 0.90, 0.70, 0.00, 0.70,
0.00, 0.20, 0.40, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.60, 0.40, 0.50, 0.60, 0.60, 0.70,
0.60, 0.60, 0.00, 0.00, 0.65
),
CapableOfRealTimeMalwareNeutralization => wc_ratings!(
0.00, 0.00, 0.45, 0.00, 0.00, 0.55, 0.00, 0.65, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.50, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00, 0.00, 0.00,
0.60, 0.55, 0.35, 0.00, 0.00, 0.00, 0.00, 0.00, 0.55, 0.00,
0.85, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.60, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.70, 0.60, 0.60, 0.65, 0.75, 0.95, 0.00, 0.60,
0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.60, 0.50, 0.50, 0.60, 0.60, 0.60,
0.00, 0.00, 0.00, 0.00, 0.60
),
ProficientInCommunicationEncryption => wc_ratings!(
0.00, 0.00, 0.45, 0.00, 0.00, 0.50, 0.00, 0.60, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.55, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00,
0.50, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.55, 0.00, 0.75, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.60, 0.55, 0.70, 0.65, 0.55, 0.00, 0.90, 0.60,
0.00, 0.00, 0.00, 0.00, 0.55, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.60, 0.40, 0.50, 0.55, 0.55, 0.55,
0.00, 0.00, 0.00, 0.00, 0.55
),
AdeptAtDeployingAutonomousIntrusionCountermeasures => wc_ratings!(
0.00, 0.00, 0.40, 0.00, 0.00, 0.60, 0.00, 0.70, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.60, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00,
0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.60, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.75, 0.60, 0.70, 0.70, 0.65, 0.00, 0.00, 0.90,
0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.60, 0.40, 0.50, 0.65, 0.65, 0.65,
0.60, 0.60, 0.55, 0.60, 0.65
),
SkilledAtAdaptiveSystemHardening => wc_ratings!(
0.00, 0.00, 0.00, 0.00, 0.00, 0.80, 0.00, 0.60, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.75, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.80, 0.60, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.60, 0.00, 0.00, 0.80, 0.00, 0.70, 0.00, 0.60, 0.00,
0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.75, 0.00, 0.75, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.85, 0.60, 0.75, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.60, 0.50, 0.55, 0.70, 0.70, 0.70,
0.60, 0.60, 0.60, 0.60, 0.70
),
VigilantInOperationalSecurityUnderCyberAttack => wc_ratings!(
0.00, 0.00, 0.50, 0.00, 0.00, 0.75, 0.00, 0.60, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.65, 0.70, 0.00, 0.75, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.65, 0.00,
0.65, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.65, 0.00, 0.75, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.80, 0.60, 0.90, 0.75, 0.00, 0.00, 0.00, 0.60,
0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.60, 0.50, 0.55, 0.70, 0.70, 0.80,
0.60, 0.70, 0.60, 0.60, 0.80
),
CompetentAtZeroDayVulnerabilityMitigation => wc_ratings!(
0.00, 0.00, 0.70, 0.00, 0.00, 0.70, 0.00, 0.70, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.75, 0.00, 0.00, 0.00, 0.75, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.75, 0.00, 0.00, 0.00, 0.00,
0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.70, 0.00,
0.80, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.70, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.80, 0.85, 0.75, 0.80, 0.80, 0.70, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.60, 0.55, 0.60, 0.70, 0.70, 0.80,
0.60, 0.60, 0.60, 0.60, 0.65
),
ExpertAtDigitalThreatIntelligenceGathering => wc_ratings!(
0.00, 0.00, 0.80, 0.00, 0.00, 0.00, 0.00, 0.65, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.40, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.80, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.80, 0.00,
0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.70, 0.70, 0.70, 0.90, 0.00, 0.00, 0.65, 0.00,
0.00, 0.40, 0.75, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.75, 0.60, 0.55, 0.70, 0.70, 0.75,
0.60, 0.70, 0.60, 0.60, 0.60
),
SkilledInSecurePostIncidentRecovery => wc_ratings!(
0.00, 0.00, 0.60, 0.00, 0.00, 0.85, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.80, 0.00, 0.00, 0.00, 0.60, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.70, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.00, 0.60, 0.00, 0.00, 0.00, 0.00,
0.70, 0.00, 0.00, 0.00, 0.80, 0.00, 0.80, 0.00, 0.70, 0.00,
0.60, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.70, 0.00, 0.80, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00,
0.00, 0.00, 0.85, 0.60, 0.75, 0.00, 0.65, 0.60, 0.00, 0.00,
0.00, 0.00, 0.00, 0.00, 0.75, 0.60, 0.55, 0.70, 0.70, 0.80,
0.60, 0.70, 0.60, 0.60, 0.60, 0.60, 0.60, 0.60, 0.60, 0.75,
0.60, 0.75, 0.60, 0.60, 0.85
),
}
}
}