using System.Collections.Immutable; namespace StellaOps.Scanner.Surface.Validation; /// /// Aggregate outcome emitted after running all registered validators. /// public sealed record SurfaceValidationResult { private SurfaceValidationResult(bool isSuccess, ImmutableArray issues) { IsSuccess = isSuccess; Issues = issues; } public bool IsSuccess { get; } public ImmutableArray Issues { get; } public static SurfaceValidationResult Success() => new(true, ImmutableArray.Empty); public static SurfaceValidationResult FromIssues(IEnumerable issues) { var immutable = issues.ToImmutableArray(); var success = immutable.All(issue => issue.Severity != SurfaceValidationSeverity.Error); return new SurfaceValidationResult(success, immutable); } }