// // Copyright (c) StellaOps. Licensed under BUSL-1.1. // using System.Collections.Immutable; namespace StellaOps.Facet; /// /// A sealed facet entry within a . /// public sealed record FacetEntry { /// /// Gets the facet identifier (e.g., "os-packages-dpkg", "lang-deps-npm"). /// public required string FacetId { get; init; } /// /// Gets the human-readable name. /// public required string Name { get; init; } /// /// Gets the category for grouping. /// public required FacetCategory Category { get; init; } /// /// Gets the selectors used to identify files in this facet. /// public required ImmutableArray Selectors { get; init; } /// /// Gets the Merkle root of all files in this facet. /// /// /// Format: "sha256:{hex}" computed from sorted file entries. /// public required string MerkleRoot { get; init; } /// /// Gets the number of files in this facet. /// public required int FileCount { get; init; } /// /// Gets the total bytes across all files. /// public required long TotalBytes { get; init; } /// /// Gets the optional individual file entries (for detailed audit). /// /// /// May be null for compact seals that only store Merkle roots. /// public ImmutableArray? Files { get; init; } }