namespace StellaOps.AuditPack.Services; /// /// Request for creating an audit bundle. /// public sealed record AuditBundleWriteRequest { /// /// Output path for the bundle (will add .tar.gz if not present). /// public required string OutputPath { get; init; } /// /// Unique bundle identifier (auto-generated if not provided). /// public string? BundleId { get; init; } /// /// Human-readable name for the bundle. /// public string? Name { get; init; } /// /// Scan ID this bundle was created from. /// public required string ScanId { get; init; } /// /// Image reference that was scanned. /// public required string ImageRef { get; init; } /// /// Image digest (sha256:...). /// public required string ImageDigest { get; init; } /// /// Decision from the verdict (pass, warn, block). /// public required string Decision { get; init; } /// /// SBOM document bytes (CycloneDX or SPDX JSON). /// public required byte[] Sbom { get; init; } /// /// Advisory feeds snapshot (NDJSON format). /// public required byte[] FeedsSnapshot { get; init; } /// /// Policy bundle (OPA tar.gz). /// public required byte[] PolicyBundle { get; init; } /// /// Verdict document bytes. /// public required byte[] Verdict { get; init; } /// /// VEX statements (OpenVEX JSON, optional). /// public byte[]? VexStatements { get; init; } /// /// Proof bundle bytes (optional). /// public byte[]? ProofBundle { get; init; } /// /// Trust roots document (optional). /// public byte[]? TrustRoots { get; init; } /// /// Scoring rules (optional). /// public byte[]? ScoringRules { get; init; } /// /// Triage-suppress predicates and source DSSEs (optional). /// Sprint: SPRINT_20260219_012 (MWS-03) /// public byte[]? TriageSuppressEvidence { get; init; } /// /// Execution evidence predicates (DSSE envelope, optional). /// Sprint: SPRINT_20260219_013 (SEE-04) /// public byte[]? ExecutionEvidence { get; init; } /// /// Beacon attestation predicates (DSSE envelope, optional). /// Sprint: SPRINT_20260219_014 (BEA-04) /// public byte[]? BeaconAttestation { get; init; } /// /// Time anchor for replay context (optional). /// public TimeAnchorInput? TimeAnchor { get; init; } /// /// Whether to sign the manifest. /// public bool Sign { get; init; } = true; /// /// Path to signing key file (PEM format). /// public string? SigningKeyPath { get; init; } /// /// Password for encrypted signing key. /// public string? SigningKeyPassword { get; init; } }