This commit is contained in:
StellaOps Bot
2025-12-14 23:20:14 +02:00
parent 3411e825cd
commit b058dbe031
356 changed files with 68310 additions and 1108 deletions

View File

@@ -0,0 +1,92 @@
namespace StellaOps.Signals.Options;
/// <summary>
/// Configuration for unknowns scoring algorithm.
/// </summary>
public sealed class UnknownsScoringOptions
{
public const string SectionName = "Signals:UnknownsScoring";
// ===== FACTOR WEIGHTS =====
// Must sum to 1.0
/// <summary>
/// Weight for popularity factor (wP). Default: 0.25
/// </summary>
public double WeightPopularity { get; set; } = 0.25;
/// <summary>
/// Weight for exploit potential factor (wE). Default: 0.25
/// </summary>
public double WeightExploitPotential { get; set; } = 0.25;
/// <summary>
/// Weight for uncertainty density factor (wU). Default: 0.25
/// </summary>
public double WeightUncertainty { get; set; } = 0.25;
/// <summary>
/// Weight for graph centrality factor (wC). Default: 0.15
/// </summary>
public double WeightCentrality { get; set; } = 0.15;
/// <summary>
/// Weight for evidence staleness factor (wS). Default: 0.10
/// </summary>
public double WeightStaleness { get; set; } = 0.10;
// ===== POPULARITY NORMALIZATION =====
/// <summary>
/// Maximum deployments for normalization. Default: 100
/// </summary>
public int PopularityMaxDeployments { get; set; } = 100;
// ===== UNCERTAINTY FLAG WEIGHTS =====
public double FlagWeightNoProvenance { get; set; } = 0.30;
public double FlagWeightVersionRange { get; set; } = 0.25;
public double FlagWeightConflictingFeeds { get; set; } = 0.20;
public double FlagWeightMissingVector { get; set; } = 0.15;
public double FlagWeightUnreachableSource { get; set; } = 0.10;
public double FlagWeightDynamicTarget { get; set; } = 0.25;
public double FlagWeightExternalAssembly { get; set; } = 0.20;
// ===== CENTRALITY NORMALIZATION =====
/// <summary>
/// Maximum betweenness for normalization. Default: 1000
/// </summary>
public double CentralityMaxBetweenness { get; set; } = 1000.0;
// ===== STALENESS NORMALIZATION =====
/// <summary>
/// Maximum days for staleness normalization. Default: 14
/// </summary>
public int StalenessMaxDays { get; set; } = 14;
// ===== BAND THRESHOLDS =====
/// <summary>
/// Score threshold for HOT band. Default: 0.70
/// </summary>
public double HotThreshold { get; set; } = 0.70;
/// <summary>
/// Score threshold for WARM band. Default: 0.40
/// </summary>
public double WarmThreshold { get; set; } = 0.40;
// ===== RESCAN SCHEDULING =====
/// <summary>
/// Hours until WARM items are rescanned. Default: 24
/// </summary>
public int WarmRescanHours { get; set; } = 24;
/// <summary>
/// Days until COLD items are rescanned. Default: 7
/// </summary>
public int ColdRescanDays { get; set; } = 7;
}