namespace StellaOps.Policy.Explainability; /// /// Renders verdict rationales in multiple formats. /// public interface IVerdictRationaleRenderer { /// /// Renders a complete verdict rationale from verdict components. /// VerdictRationale Render(VerdictRationaleInput input); /// /// Renders rationale as plain text (4-line format). /// string RenderPlainText(VerdictRationale rationale); /// /// Renders rationale as Markdown. /// string RenderMarkdown(VerdictRationale rationale); /// /// Renders rationale as canonical JSON (RFC 8785). /// string RenderJson(VerdictRationale rationale); } /// /// Input for verdict rationale rendering. /// public sealed record VerdictRationaleInput { public required VerdictReference VerdictRef { get; init; } public required string Cve { get; init; } public required ComponentIdentity Component { get; init; } public ReachabilityDetail? Reachability { get; init; } public required string PolicyClauseId { get; init; } public required string PolicyRuleDescription { get; init; } public required IReadOnlyList PolicyConditions { get; init; } public AttestationReference? PathWitness { get; init; } public IReadOnlyList? VexStatements { get; init; } public AttestationReference? Provenance { get; init; } public required string Verdict { get; init; } public double? Score { get; init; } public required string Recommendation { get; init; } public MitigationGuidance? Mitigation { get; init; } public required DateTimeOffset GeneratedAt { get; init; } public required string VerdictDigest { get; init; } public string? PolicyDigest { get; init; } public string? EvidenceDigest { get; init; } }