using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using StellaOps.Scheduler.Models; namespace StellaOps.Scheduler.Worker.Execution; public interface IScannerReportClient { Task ExecuteAsync(ScannerReportRequest request, CancellationToken cancellationToken = default); } public sealed record ScannerReportRequest( string TenantId, string RunId, string ImageDigest, ScheduleMode Mode, bool UsageOnly, IReadOnlyDictionary Attributes); public sealed record RunnerImageResult( string ImageDigest, DeltaSummary? Delta, bool ContentRefreshed, RunnerReportSnapshot Report, RunnerDsseEnvelope? Dsse); public sealed record RunnerReportSnapshot( string ReportId, string ImageDigest, string Verdict, DateTimeOffset GeneratedAt, RunnerReportSummary Summary, string? PolicyRevisionId, string? PolicyDigest); public sealed record RunnerReportSummary( int Total, int Blocked, int Warned, int Ignored, int Quieted); public sealed record RunnerDsseEnvelope( string PayloadType, string Payload, IReadOnlyList Signatures); public sealed record RunnerDsseSignature( string KeyId, string Algorithm, string Signature);