feat: Implement IsolatedReplayContext for deterministic audit replay
- Added IsolatedReplayContext class to provide an isolated environment for replaying audit bundles without external calls. - Introduced methods for initializing the context, verifying input digests, and extracting inputs for policy evaluation. - Created supporting interfaces and options for context configuration. feat: Create ReplayExecutor for executing policy re-evaluation and verdict comparison - Developed ReplayExecutor class to handle the execution of replay processes, including input verification and verdict comparison. - Implemented detailed drift detection and error handling during replay execution. - Added interfaces for policy evaluation and replay execution options. feat: Add ScanSnapshotFetcher for fetching scan data and snapshots - Introduced ScanSnapshotFetcher class to retrieve necessary scan data and snapshots for audit bundle creation. - Implemented methods to fetch scan metadata, advisory feeds, policy snapshots, and VEX statements. - Created supporting interfaces for scan data, feed snapshots, and policy snapshots.
This commit is contained in:
@@ -12,6 +12,7 @@ using Microsoft.Extensions.Logging;
|
||||
using StellaOps.AuditPack.Models;
|
||||
using StellaOps.AuditPack.Services;
|
||||
using StellaOps.Cli.Configuration;
|
||||
using StellaOps.Cli.Services;
|
||||
using StellaOps.Cli.Telemetry;
|
||||
using Spectre.Console;
|
||||
|
||||
@@ -153,9 +154,9 @@ internal static partial class CommandHandlers
|
||||
}
|
||||
|
||||
// Enforce offline mode if requested
|
||||
if (offline && !OfflineModeGuard.IsNetworkAllowed(options, "audit replay", forceOffline: true))
|
||||
if (offline)
|
||||
{
|
||||
// This is expected - we're in offline mode
|
||||
OfflineModeGuard.IsOffline = true;
|
||||
logger.LogDebug("Running in offline mode as requested.");
|
||||
}
|
||||
|
||||
@@ -462,7 +463,7 @@ public sealed record ImportOptions
|
||||
/// </summary>
|
||||
public interface IAuditPackImporter
|
||||
{
|
||||
Task<AuditPack> ImportAsync(string bundlePath, ImportOptions options, CancellationToken ct = default);
|
||||
Task<StellaOps.AuditPack.Models.AuditPack> ImportAsync(string bundlePath, ImportOptions options, CancellationToken ct = default);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -470,5 +471,5 @@ public interface IAuditPackImporter
|
||||
/// </summary>
|
||||
public interface IAuditPackReplayer
|
||||
{
|
||||
Task<AuditReplayResult> ReplayAsync(AuditPack pack, ReplayOptions options, CancellationToken ct = default);
|
||||
Task<AuditReplayResult> ReplayAsync(StellaOps.AuditPack.Models.AuditPack pack, ReplayOptions options, CancellationToken ct = default);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user