up
Some checks failed
AOC Guard CI / aoc-guard (push) Has been cancelled
AOC Guard CI / aoc-verify (push) Has been cancelled
Docs CI / lint-and-preview (push) Has been cancelled
Notify Smoke Test / Notify Unit Tests (push) Has been cancelled
Notify Smoke Test / Notifier Service Tests (push) Has been cancelled
Notify Smoke Test / Notification Smoke Test (push) Has been cancelled
Policy Lint & Smoke / policy-lint (push) Has been cancelled
Scanner Analyzers / Discover Analyzers (push) Has been cancelled
Scanner Analyzers / Build Analyzers (push) Has been cancelled
Scanner Analyzers / Test Language Analyzers (push) Has been cancelled
Scanner Analyzers / Validate Test Fixtures (push) Has been cancelled
Scanner Analyzers / Verify Deterministic Output (push) Has been cancelled
Signals CI & Image / signals-ci (push) Has been cancelled
Signals Reachability Scoring & Events / reachability-smoke (push) Has been cancelled
Signals Reachability Scoring & Events / sign-and-upload (push) Has been cancelled
Manifest Integrity / Validate Schema Integrity (push) Has been cancelled
Manifest Integrity / Validate Contract Documents (push) Has been cancelled
Manifest Integrity / Validate Pack Fixtures (push) Has been cancelled
Manifest Integrity / Audit SHA256SUMS Files (push) Has been cancelled
Manifest Integrity / Verify Merkle Roots (push) Has been cancelled
devportal-offline / build-offline (push) Has been cancelled
Mirror Thin Bundle Sign & Verify / mirror-sign (push) Has been cancelled

This commit is contained in:
StellaOps Bot
2025-12-13 18:08:55 +02:00
parent 6e45066e37
commit f1a39c4ce3
234 changed files with 24038 additions and 6910 deletions

View File

@@ -2443,6 +2443,29 @@ internal sealed class BackendOperationsClient : IBackendOperationsClient
var updatedAt = document.UpdatedAt ?? DateTimeOffset.MinValue;
PolicyFindingUncertainty? uncertainty = null;
if (document.Uncertainty is not null)
{
IReadOnlyList<PolicyFindingUncertaintyState>? states = null;
if (document.Uncertainty.States is not null)
{
states = document.Uncertainty.States
.Where(s => s is not null)
.Select(s => new PolicyFindingUncertaintyState(
string.IsNullOrWhiteSpace(s!.Code) ? null : s.Code,
string.IsNullOrWhiteSpace(s.Name) ? null : s.Name,
s.Entropy,
string.IsNullOrWhiteSpace(s.Tier) ? null : s.Tier))
.ToList();
}
uncertainty = new PolicyFindingUncertainty(
string.IsNullOrWhiteSpace(document.Uncertainty.AggregateTier) ? null : document.Uncertainty.AggregateTier,
document.Uncertainty.RiskScore,
states,
document.Uncertainty.ComputedAt);
}
return new PolicyFindingDocument(
findingId,
status,
@@ -2450,6 +2473,7 @@ internal sealed class BackendOperationsClient : IBackendOperationsClient
sbomId,
advisoryIds,
vex,
uncertainty,
document.PolicyVersion ?? 0,
updatedAt,
string.IsNullOrWhiteSpace(document.RunId) ? null : document.RunId);

View File

@@ -10,4 +10,36 @@ internal sealed record EntryTraceResponseModel(
DateTimeOffset GeneratedAt,
EntryTraceGraph Graph,
IReadOnlyList<string> Ndjson,
EntryTracePlan? BestPlan);
EntryTracePlan? BestPlan,
SemanticEntrypointSummary? Semantic = null);
/// <summary>
/// Summary of semantic entrypoint analysis for CLI display.
/// </summary>
internal sealed record SemanticEntrypointSummary
{
public string Intent { get; init; } = "Unknown";
public IReadOnlyList<string> Capabilities { get; init; } = Array.Empty<string>();
public IReadOnlyList<ThreatVectorSummary> Threats { get; init; } = Array.Empty<ThreatVectorSummary>();
public IReadOnlyList<DataBoundarySummary> DataBoundaries { get; init; } = Array.Empty<DataBoundarySummary>();
public string? Framework { get; init; }
public string? Language { get; init; }
public double ConfidenceScore { get; init; }
public string ConfidenceTier { get; init; } = "Unknown";
public string AnalyzedAt { get; init; } = string.Empty;
}
internal sealed record ThreatVectorSummary
{
public string Type { get; init; } = string.Empty;
public double Confidence { get; init; }
public string? CweId { get; init; }
public string? OwaspCategory { get; init; }
}
internal sealed record DataBoundarySummary
{
public string Type { get; init; } = string.Empty;
public string Direction { get; init; } = string.Empty;
public string Sensitivity { get; init; } = string.Empty;
}

View File

@@ -25,6 +25,7 @@ internal sealed record PolicyFindingDocument(
string SbomId,
IReadOnlyList<string> AdvisoryIds,
PolicyFindingVexMetadata? Vex,
PolicyFindingUncertainty? Uncertainty,
int PolicyVersion,
DateTimeOffset UpdatedAt,
string? RunId);
@@ -33,6 +34,18 @@ internal sealed record PolicyFindingSeverity(string Normalized, double? Score);
internal sealed record PolicyFindingVexMetadata(string? WinningStatementId, string? Source, string? Status);
internal sealed record PolicyFindingUncertainty(
string? AggregateTier,
double? RiskScore,
IReadOnlyList<PolicyFindingUncertaintyState>? States,
DateTimeOffset? ComputedAt);
internal sealed record PolicyFindingUncertaintyState(
string? Code,
string? Name,
double? Entropy,
string? Tier);
internal sealed record PolicyFindingExplainResult(
string FindingId,
int PolicyVersion,

View File

@@ -27,6 +27,8 @@ internal sealed class PolicyFindingDocumentDocument
public PolicyFindingVexDocument? Vex { get; set; }
public PolicyFindingUncertaintyDocument? Uncertainty { get; set; }
public int? PolicyVersion { get; set; }
public DateTimeOffset? UpdatedAt { get; set; }
@@ -34,6 +36,28 @@ internal sealed class PolicyFindingDocumentDocument
public string? RunId { get; set; }
}
internal sealed class PolicyFindingUncertaintyDocument
{
public string? AggregateTier { get; set; }
public double? RiskScore { get; set; }
public List<PolicyFindingUncertaintyStateDocument>? States { get; set; }
public DateTimeOffset? ComputedAt { get; set; }
}
internal sealed class PolicyFindingUncertaintyStateDocument
{
public string? Code { get; set; }
public string? Name { get; set; }
public double? Entropy { get; set; }
public string? Tier { get; set; }
}
internal sealed class PolicyFindingSeverityDocument
{
public string? Normalized { get; set; }