namespace StellaOps.AdvisoryAI.Explanation; /// /// Citation linking an explanation claim to evidence. /// public sealed record ExplanationCitation { /// /// Claim text from the explanation. /// public required string ClaimText { get; init; } /// /// Evidence node ID supporting this claim. /// public required string EvidenceId { get; init; } /// /// Type of evidence (sbom, reachability, runtime, vex, patch). /// public required string EvidenceType { get; init; } /// /// Whether the citation was verified against the evidence. /// public required bool Verified { get; init; } /// /// Excerpt from the evidence supporting the claim. /// public string? EvidenceExcerpt { get; init; } } /// /// Authority level of the explanation. /// public enum ExplanationAuthority { /// /// All claims are evidence-backed (≥80% citation rate, all verified). /// EvidenceBacked, /// /// AI suggestion requiring human review. /// Suggestion } /// /// Result of explanation generation. /// Sprint: SPRINT_20251226_015_AI_zastava_companion /// Task: ZASTAVA-07 /// public sealed record ExplanationResult { /// /// Unique ID for this explanation. /// public required string ExplanationId { get; init; } /// /// The explanation content (markdown supported). /// public required string Content { get; init; } /// /// 3-line summary for compact display. /// public required ExplanationSummary Summary { get; init; } /// /// Citations linking claims to evidence. /// public required IReadOnlyList Citations { get; init; } /// /// Overall confidence score (0.0-1.0). /// public required double ConfidenceScore { get; init; } /// /// Citation rate (verified citations / total claims). /// public required double CitationRate { get; init; } /// /// Authority classification. /// public required ExplanationAuthority Authority { get; init; } /// /// Evidence node IDs used in this explanation. /// public required IReadOnlyList EvidenceRefs { get; init; } /// /// Model ID used for generation. /// public required string ModelId { get; init; } /// /// Prompt template version. /// public required string PromptTemplateVersion { get; init; } /// /// Input hashes for replay. /// public required IReadOnlyList InputHashes { get; init; } /// /// Generation timestamp (UTC ISO-8601). /// public required string GeneratedAt { get; init; } /// /// Output hash for verification. /// public required string OutputHash { get; init; } } /// /// 3-line summary following the AI UX pattern. /// public sealed record ExplanationSummary { /// /// Line 1: What changed/what is it. /// public required string Line1 { get; init; } /// /// Line 2: Why it matters. /// public required string Line2 { get; init; } /// /// Line 3: Next action. /// public required string Line3 { get; init; } }