Complete batch 012 (golden set diff) and 013 (advisory chat), fix build errors

Sprints completed:
- SPRINT_20260110_012_* (golden set diff layer - 10 sprints)
- SPRINT_20260110_013_* (advisory chat - 4 sprints)

Build fixes applied:
- Fix namespace conflicts with Microsoft.Extensions.Options.Options.Create
- Fix VexDecisionReachabilityIntegrationTests API drift (major rewrite)
- Fix VexSchemaValidationTests FluentAssertions method name
- Fix FixChainGateIntegrationTests ambiguous type references
- Fix AdvisoryAI test files required properties and namespace aliases
- Add stub types for CveMappingController (ICveSymbolMappingService)
- Fix VerdictBuilderService static context issue

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
master
2026-01-11 10:09:07 +02:00
parent a3b2f30a11
commit 7f7eb8b228
232 changed files with 58979 additions and 91 deletions

View File

@@ -0,0 +1,124 @@
using System.ComponentModel.DataAnnotations;
namespace StellaOps.BinaryIndex.GoldenSet;
/// <summary>
/// Configuration options for the GoldenSet module.
/// </summary>
public sealed class GoldenSetOptions
{
/// <summary>
/// Configuration section name.
/// </summary>
public const string SectionName = "BinaryIndex:GoldenSet";
/// <summary>
/// Current schema version for golden set definitions.
/// </summary>
[Required]
public string SchemaVersion { get; set; } = GoldenSetConstants.CurrentSchemaVersion;
/// <summary>
/// Validation options.
/// </summary>
public GoldenSetValidationOptions Validation { get; set; } = new();
/// <summary>
/// Storage options.
/// </summary>
public GoldenSetStorageOptions Storage { get; set; } = new();
/// <summary>
/// Caching options.
/// </summary>
public GoldenSetCachingOptions Caching { get; set; } = new();
/// <summary>
/// Authoring options.
/// </summary>
public GoldenSetAuthoringOptions Authoring { get; set; } = new();
}
/// <summary>
/// Authoring options for golden sets.
/// </summary>
public sealed class GoldenSetAuthoringOptions
{
/// <summary>
/// Enable AI-assisted enrichment.
/// </summary>
public bool EnableAiEnrichment { get; set; } = true;
/// <summary>
/// Enable upstream commit analysis.
/// </summary>
public bool EnableCommitAnalysis { get; set; } = true;
/// <summary>
/// Maximum number of commits to analyze per vulnerability.
/// </summary>
public int MaxCommitsToAnalyze { get; set; } = 5;
/// <summary>
/// Minimum confidence threshold for auto-accepting AI suggestions.
/// </summary>
public decimal AutoAcceptConfidenceThreshold { get; set; } = 0.8m;
}
/// <summary>
/// Validation options for golden sets.
/// </summary>
public sealed class GoldenSetValidationOptions
{
/// <summary>
/// Validate that the CVE exists in NVD/OSV (requires network).
/// </summary>
public bool ValidateCveExists { get; set; } = true;
/// <summary>
/// Validate that sinks are in the registry.
/// </summary>
public bool ValidateSinks { get; set; } = true;
/// <summary>
/// Validate edge format strictly (must match bbN->bbM).
/// </summary>
public bool StrictEdgeFormat { get; set; } = true;
/// <summary>
/// Skip network calls (air-gap mode).
/// </summary>
public bool OfflineMode { get; set; } = false;
}
/// <summary>
/// Storage options for golden sets.
/// </summary>
public sealed class GoldenSetStorageOptions
{
/// <summary>
/// PostgreSQL schema name for golden sets.
/// </summary>
public string PostgresSchema { get; set; } = "golden_sets";
/// <summary>
/// Connection string name (from configuration).
/// </summary>
public string ConnectionStringName { get; set; } = "BinaryIndex";
}
/// <summary>
/// Caching options for golden sets.
/// </summary>
public sealed class GoldenSetCachingOptions
{
/// <summary>
/// Cache duration for sink registry lookups (minutes).
/// </summary>
public int SinkRegistryCacheMinutes { get; set; } = 60;
/// <summary>
/// Cache duration for golden set definitions (minutes).
/// </summary>
public int DefinitionCacheMinutes { get; set; } = 15;
}