Files
git.stella-ops.org/src/__Libraries/StellaOps.AuditPack/Services/VerdictReplayPredicate.DivergenceHelpers.cs

46 lines
1.5 KiB
C#

namespace StellaOps.AuditPack.Services;
public sealed partial class VerdictReplayPredicate
{
private static DivergenceCategory MapDriftTypeToCategory(DriftType driftType)
{
return driftType switch
{
DriftType.Decision => DivergenceCategory.Decision,
DriftType.VerdictDigest => DivergenceCategory.VerdictHash,
DriftType.VerdictField => DivergenceCategory.VerdictField,
DriftType.InputDigest => DivergenceCategory.Input,
_ => DivergenceCategory.Other
};
}
private static string GenerateDivergenceSummary(List<DivergenceItem> divergences)
{
if (divergences.Count == 0)
{
return "Replay matched original verdict exactly.";
}
var hasDecisionChange = divergences.Any(d => d.Category == DivergenceCategory.Decision);
var hasVerdictChange = divergences.Any(d => d.Category == DivergenceCategory.VerdictHash);
var hasInputChange = divergences.Any(d => d.Category == DivergenceCategory.Input);
if (hasDecisionChange)
{
return "Replay produced a different policy decision.";
}
if (hasVerdictChange)
{
return "Replay verdict differs in content but decision is the same.";
}
if (hasInputChange)
{
return "Input digests differ but verdict is unchanged.";
}
return $"Replay detected {divergences.Count} divergence(s).";
}
}