using System.Text.Json.Serialization; namespace StellaOps.Policy.Determinization.Models; /// /// Describes a missing signal that contributes to uncertainty. /// public sealed record SignalGap { /// /// Signal name (e.g., "epss", "vex", "reachability"). /// [JsonPropertyName("signal")] public required string Signal { get; init; } /// /// Reason the signal is missing. /// [JsonPropertyName("reason")] public required SignalGapReason Reason { get; init; } /// /// Prior assumption used in absence of signal. /// [JsonPropertyName("prior")] public double? Prior { get; init; } /// /// Weight this signal contributes to total uncertainty. /// [JsonPropertyName("weight")] public double Weight { get; init; } /// /// Human-readable description. /// [JsonPropertyName("description")] public string? Description { get; init; } } /// /// Reason a signal is missing. /// public enum SignalGapReason { /// Signal not yet queried. NotQueried, /// Signal legitimately does not exist (e.g., EPSS not published yet). NotAvailable, /// Signal query failed due to external error. QueryFailed, /// Signal not applicable for this artifact type. NotApplicable }