using System.Collections.Generic; namespace StellaOps.Cli.Services.Models; // CLI-POLICY-27-003: Enhanced simulation modes internal enum PolicySimulationMode { Quick, Batch } /// /// Input for policy simulation. /// Per CLI-EXC-25-002, supports exception preview via WithExceptions/WithoutExceptions. /// Per CLI-POLICY-27-003, supports mode (quick/batch), SBOM selectors, heatmap, and manifest download. /// Per CLI-SIG-26-002, supports reachability overrides for vulnerability/package state and score. /// internal sealed record PolicySimulationInput( int? BaseVersion, int? CandidateVersion, IReadOnlyList SbomSet, IReadOnlyDictionary Environment, bool Explain, IReadOnlyList? WithExceptions = null, IReadOnlyList? WithoutExceptions = null, PolicySimulationMode? Mode = null, IReadOnlyList? SbomSelectors = null, bool IncludeHeatmap = false, bool IncludeManifest = false, IReadOnlyList? ReachabilityOverrides = null); internal sealed record PolicySimulationResult( PolicySimulationDiff Diff, string? ExplainUri, PolicySimulationHeatmap? Heatmap = null, string? ManifestDownloadUri = null, string? ManifestDigest = null); internal sealed record PolicySimulationDiff( string? SchemaVersion, int Added, int Removed, int Unchanged, IReadOnlyDictionary BySeverity, IReadOnlyList RuleHits); internal sealed record PolicySimulationSeverityDelta(int? Up, int? Down); internal sealed record PolicySimulationRuleDelta(string RuleId, string RuleName, int? Up, int? Down); // CLI-POLICY-27-003: Heatmap summary for quick severity visualization internal sealed record PolicySimulationHeatmap( int Critical, int High, int Medium, int Low, int Info, IReadOnlyList Buckets); internal sealed record PolicySimulationHeatmapBucket( string Label, int Count, string? Color);