Fix build and code structure improvements. New but essential UI functionality. CI improvements. Documentation improvements. AI module improvements.

This commit is contained in:
StellaOps Bot
2025-12-26 21:54:17 +02:00
parent 335ff7da16
commit c2b9cd8d1f
3717 changed files with 264714 additions and 48202 deletions

View File

@@ -34,6 +34,68 @@ public sealed record SbomUploadRequestDto
[JsonPropertyName("source")]
public SbomUploadSourceDto? Source { get; init; }
// LIN-BE-002: Lineage fields for SBOM ancestry tracking
/// <summary>
/// Digest of the parent artifact (previous version).
/// Format: "sha256:{hex}".
/// Used to establish parent-child version succession.
/// </summary>
[JsonPropertyName("parentArtifactDigest")]
public string? ParentArtifactDigest { get; init; }
/// <summary>
/// Reference to the base image (e.g., "docker.io/library/alpine:3.19").
/// Extracted from OCI manifest or Dockerfile FROM instruction.
/// </summary>
[JsonPropertyName("baseImageRef")]
public string? BaseImageRef { get; init; }
/// <summary>
/// Digest of the base image.
/// Format: "sha256:{hex}".
/// Used to establish base image lineage.
/// </summary>
[JsonPropertyName("baseImageDigest")]
public string? BaseImageDigest { get; init; }
/// <summary>
/// OCI ancestry information extracted from image manifest.
/// </summary>
[JsonPropertyName("ancestry")]
public SbomAncestryDto? Ancestry { get; init; }
}
/// <summary>
/// OCI ancestry information for lineage tracking.
/// Sprint: SPRINT_20251228_005_BE_sbom_lineage_graph_i (LIN-BE-002)
/// </summary>
public sealed record SbomAncestryDto
{
/// <summary>
/// Ordered list of layer digests from bottom to top.
/// </summary>
[JsonPropertyName("layerDigests")]
public IReadOnlyList<string>? LayerDigests { get; init; }
/// <summary>
/// Number of layers inherited from base image.
/// </summary>
[JsonPropertyName("inheritedLayerCount")]
public int InheritedLayerCount { get; init; }
/// <summary>
/// Image creation timestamp.
/// </summary>
[JsonPropertyName("createdAt")]
public DateTimeOffset? CreatedAt { get; init; }
/// <summary>
/// Image labels.
/// </summary>
[JsonPropertyName("labels")]
public IReadOnlyDictionary<string, string>? Labels { get; init; }
}
/// <summary>