UI work to fill SBOM sourcing management gap. UI planning remaining functionality exposure. Work on CI/Tests stabilization

Introduces CGS determinism test runs to CI workflows for Windows, macOS, Linux, Alpine, and Debian, fulfilling CGS-008 cross-platform requirements. Updates local-ci scripts to support new smoke steps, test timeouts, progress intervals, and project slicing for improved test isolation and diagnostics.
This commit is contained in:
master
2025-12-29 19:12:38 +02:00
parent 41552d26ec
commit a4badc275e
286 changed files with 50918 additions and 992 deletions

View File

@@ -499,6 +499,8 @@ public sealed class ExplanationGeneratorIntegrationTests
{
var citations = new List<ExplanationCitation>();
var evidenceList = evidence.AllEvidence.ToList();
var verifiedCount = (int)Math.Round(evidenceList.Count * _verifiedRate, MidpointRounding.AwayFromZero);
verifiedCount = Math.Clamp(verifiedCount, 0, evidenceList.Count);
for (int i = 0; i < evidenceList.Count; i++)
{
@@ -508,7 +510,7 @@ public sealed class ExplanationGeneratorIntegrationTests
ClaimText = $"Claim about {ev.Type}",
EvidenceId = ev.Id,
EvidenceType = ev.Type,
Verified = i < (int)(evidenceList.Count * _verifiedRate),
Verified = i < verifiedCount,
EvidenceExcerpt = ev.Summary
});
}

View File

@@ -458,6 +458,7 @@ public sealed class PolicyStudioIntegrationTests
{
var intentId = $"intent-{Guid.NewGuid():N}";
var confidence = _ambiguous ? 0.7 : 0.95;
var verdict = ResolveVerdict(naturalLanguageInput);
var conditions = new List<PolicyCondition>();
@@ -500,7 +501,7 @@ public sealed class PolicyStudioIntegrationTests
Actions = [new PolicyAction
{
ActionType = "set_verdict",
Parameters = new Dictionary<string, object> { ["verdict"] = "block" }
Parameters = new Dictionary<string, object> { ["verdict"] = verdict }
}],
Scope = context?.DefaultScope ?? "all",
Priority = 100,
@@ -520,6 +521,21 @@ public sealed class PolicyStudioIntegrationTests
});
}
private static string ResolveVerdict(string input)
{
if (input.Contains("allow", StringComparison.OrdinalIgnoreCase))
{
return "allow";
}
if (input.Contains("warn", StringComparison.OrdinalIgnoreCase))
{
return "warn";
}
return "block";
}
public Task<PolicyParseResult> ClarifyAsync(
string intentId,
string clarification,