// 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
);