using System.Collections.Immutable; namespace StellaOps.Scanner.ChangeTrace.Builder; /// /// Options for change trace building. /// public sealed record ChangeTraceBuilderOptions { /// /// Include package-level diffing. Default: true. /// public bool IncludePackageDiff { get; init; } = true; /// /// Include symbol-level diffing. Default: true. /// public bool IncludeSymbolDiff { get; init; } = true; /// /// Include byte-level diffing. Default: false. /// public bool IncludeByteDiff { get; init; } = false; /// /// Minimum confidence threshold for symbol matches. /// Default: 0.75. /// public double MinSymbolConfidence { get; init; } = 0.75; /// /// Rolling hash window size for byte diffing. /// Default: 2048 bytes. /// public int ByteDiffWindowSize { get; init; } = 2048; /// /// Maximum binary size for byte-level analysis (bytes). /// Default: 10MB. /// public long MaxBinarySize { get; init; } = 10 * 1024 * 1024; /// /// Lattice policies to apply during trust delta computation. /// Default: ["lattice:default@v3"]. /// public ImmutableArray Policies { get; init; } = ["lattice:default@v3"]; /// /// Gets the diff methods enabled based on options. /// public ImmutableArray GetDiffMethods() { var methods = ImmutableArray.CreateBuilder(); if (IncludePackageDiff) methods.Add("pkg"); if (IncludeSymbolDiff) methods.Add("symbol"); if (IncludeByteDiff) methods.Add("byte"); return methods.ToImmutable(); } /// /// Default options instance. /// public static ChangeTraceBuilderOptions Default { get; } = new(); }