// Licensed to StellaOps under the AGPL-3.0-or-later license. using System.Collections.Immutable; namespace StellaOps.ReachGraph.Schema; /// /// Provenance information for a reachability graph. /// public sealed record ReachGraphProvenance { /// /// Gets the in-toto attestation links. /// public ImmutableArray? Intoto { get; init; } /// /// Gets the input artifact digests. /// public required ReachGraphInputs Inputs { get; init; } /// /// Gets when this graph was computed (UTC). /// public required DateTimeOffset ComputedAt { get; init; } /// /// Gets the analyzer that produced this graph. /// public required ReachGraphAnalyzer Analyzer { get; init; } } /// /// Input artifact digests for provenance tracking. /// public sealed record ReachGraphInputs { /// /// Gets the SBOM digest (sha256:...). /// public required string Sbom { get; init; } /// /// Gets the VEX digest if available. /// public string? Vex { get; init; } /// /// Gets the call graph digest. /// public string? Callgraph { get; init; } /// /// Gets the runtime facts batch digest. /// public string? RuntimeFacts { get; init; } /// /// Gets the policy digest used for filtering. /// public string? Policy { get; init; } } /// /// Analyzer metadata for reproducibility. /// public sealed record ReachGraphAnalyzer( string Name, string Version, string ToolchainDigest );