// // Copyright (c) StellaOps. Licensed under BUSL-1.1. // namespace StellaOps.Facet; /// /// Represents a trackable slice of an image. /// /// /// /// A facet defines a logical grouping of files within a container image /// that can be tracked independently for sealing and drift detection. /// /// /// Examples of facets: OS packages, language dependencies, binaries, config files. /// /// public interface IFacet { /// /// Gets the unique identifier for this facet type. /// /// /// Format: "{category}-{specifics}" e.g., "os-packages-dpkg", "lang-deps-npm". /// string FacetId { get; } /// /// Gets the human-readable name. /// string Name { get; } /// /// Gets the facet category for grouping. /// FacetCategory Category { get; } /// /// Gets the glob patterns or path selectors for files in this facet. /// /// /// Selectors support: /// /// Glob patterns: "**/*.json", "/usr/bin/*" /// Exact paths: "/var/lib/dpkg/status" /// Directory patterns: "/etc/**" /// /// IReadOnlyList Selectors { get; } /// /// Gets the priority for conflict resolution when files match multiple facets. /// /// /// Lower values = higher priority. A file matching multiple facets /// will be assigned to the facet with the lowest priority value. /// int Priority { get; } }