Files
git.stella-ops.org/src/Findings/StellaOps.Findings.Ledger/Infrastructure/AirGap/IEvidenceSnapshotRepository.cs
StellaOps Bot 2eaf0f699b
Some checks failed
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Concelier Attestation Tests / attestation-tests (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
devportal-offline / build-offline (push) Has been cancelled
Mirror Thin Bundle Sign & Verify / mirror-sign (push) Has been cancelled
feat: Implement air-gap functionality with timeline impact and evidence snapshot services
- Added AirgapTimelineImpact, AirgapTimelineImpactInput, and AirgapTimelineImpactResult records for managing air-gap bundle import impacts.
- Introduced EvidenceSnapshotRecord, EvidenceSnapshotLinkInput, and EvidenceSnapshotLinkResult records for linking findings to evidence snapshots.
- Created IEvidenceSnapshotRepository interface for managing evidence snapshot records.
- Developed StalenessValidationService to validate staleness and enforce freshness thresholds.
- Implemented AirgapTimelineService for emitting timeline events related to bundle imports.
- Added EvidenceSnapshotService for linking findings to evidence snapshots and verifying their validity.
- Introduced AirGapOptions for configuring air-gap staleness enforcement and thresholds.
- Added minimal jsPDF stub for offline/testing builds in the web application.
- Created TypeScript definitions for jsPDF to enhance type safety in the web application.
2025-12-06 01:30:08 +02:00

46 lines
1.4 KiB
C#

namespace StellaOps.Findings.Ledger.Infrastructure.AirGap;
/// <summary>
/// Repository for managing evidence snapshot links.
/// </summary>
public interface IEvidenceSnapshotRepository
{
/// <summary>
/// Inserts a new evidence snapshot record.
/// </summary>
Task InsertAsync(EvidenceSnapshotRecord record, CancellationToken cancellationToken);
/// <summary>
/// Gets evidence snapshots for a finding.
/// </summary>
Task<IReadOnlyList<EvidenceSnapshotRecord>> GetByFindingIdAsync(
string tenantId,
string findingId,
CancellationToken cancellationToken);
/// <summary>
/// Gets the latest evidence snapshot for a finding.
/// </summary>
Task<EvidenceSnapshotRecord?> GetLatestByFindingIdAsync(
string tenantId,
string findingId,
CancellationToken cancellationToken);
/// <summary>
/// Gets all evidence snapshots for a bundle.
/// </summary>
Task<IReadOnlyList<EvidenceSnapshotRecord>> GetByBundleUriAsync(
string tenantId,
string bundleUri,
CancellationToken cancellationToken);
/// <summary>
/// Checks if an evidence snapshot exists and is not expired.
/// </summary>
Task<bool> ExistsValidAsync(
string tenantId,
string findingId,
string dsseDigest,
CancellationToken cancellationToken);
}