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
}