save checkpoint

This commit is contained in:
master
2026-02-14 09:11:48 +02:00
parent 9ca2de05df
commit e9aeadc040
1512 changed files with 30863 additions and 4728 deletions

View File

@@ -0,0 +1,69 @@
{
"type": "integration",
"capturedAtUtc": "2026-02-13T07:43:00Z",
"testCommand": "dotnet test src/Policy/__Tests/StellaOps.Policy.Determinization.Tests/StellaOps.Policy.Determinization.Tests.csproj --no-restore -v normal && dotnet test src/Policy/__Tests/StellaOps.Policy.Unknowns.Tests/StellaOps.Policy.Unknowns.Tests.csproj --no-restore -v normal",
"testFilter": "ObservationDecay|DecayedConfidence|Triage|UnknownRanker",
"testsRun": 497,
"testsPassed": 497,
"testsFailed": 0,
"targetedTestMethods": [
"ObservationDecayTests.Fresh_Should_CreateZeroAgeDecay",
"ObservationDecayTests.CalculateDecay_Should_ApplyHalfLifeFormula",
"ObservationDecayTests.CalculateDecay_Should_NotDropBelowFloor",
"ObservationDecayTests.IsStale_Should_DetectStaleObservations",
"ObservationDecayTests.CalculateDecay_Should_ReturnOneForFutureDates",
"DecayedConfidenceCalculatorTests (exponential half-life formula, histogram metrics)",
"DecayPropertyTests (10 FsCheck: monotonicity, half-life, floor, range, strict-100d-decreasing, shorter-halflife-faster)",
"TriageQueueEvaluatorTests.EvaluateSingle_FreshObservation_ReturnsNull",
"TriageQueueEvaluatorTests.EvaluateSingle_SlightlyAged_ReturnsNull",
"TriageQueueEvaluatorTests.EvaluateSingle_ApproachingStaleness_ReturnsLowPriority",
"TriageQueueEvaluatorTests.EvaluateSingle_Stale_ReturnsMediumPriority",
"TriageQueueEvaluatorTests.EvaluateSingle_HeavilyDecayed_ReturnsHighPriority",
"TriageQueueEvaluatorTests.EvaluateSingle_AtFloor_ReturnsCriticalPriority",
"TriageQueueEvaluatorTests.EvaluateSingle_WithSignalGaps_SetsRecommendedAction",
"TriageQueueEvaluatorTests.EvaluateAsync_MixedObservations_SortsByPriorityThenUrgency",
"TriageQueueEvaluatorTests.EvaluateAsync_Deterministic_SameInputsSameOutput",
"TriageQueueEvaluatorTests.ClassifyPriority_ReturnsExpectedTier (Theory, 7 cases)",
"TriageQueueEvaluatorTests.CalculateDaysUntilStale_FreshObservation_ReturnsPositive",
"TriageQueueEvaluatorTests.CalculateDaysUntilStale_AlreadyStale_ReturnsNegative",
"UnknownTriageQueueServiceTests.ExecuteCycleAsync_NoCandidates_ReturnsEmptySnapshot",
"UnknownTriageQueueServiceTests.ExecuteCycleAsync_StaleObservations_EnqueuedToSink",
"UnknownTriageQueueServiceTests.ExecuteCycleAsync_OnlyApproaching_NotEnqueued",
"UnknownTriageQueueServiceTests.ExecuteCycleAsync_MixedStaleAndFresh_OnlyStaleEnqueued",
"UnknownTriageQueueServiceTests.ExecuteCycleAsync_WithTenantFilter_PassesToSource",
"UnknownTriageQueueServiceTests.EvaluateOnDemandAsync_DoesNotEnqueue",
"UnknownTriageQueueServiceTests.InMemorySink_EnqueueAndDrain",
"UnknownTriageQueueServiceTests.InMemorySink_TryDequeue_EmptyQueue_ReturnsFalse",
"UnknownTriageQueueServiceTests.InMemorySink_PeekAll_DoesNotRemove",
"UnknownRankerTests.ComputeDecay_AgeBuckets_ReturnsCorrectMultiplier (Theory, 11 cases)"
],
"behaviorVerified": [
"DecayedConfidenceCalculator: exponential decay formula max(floor, baseConfidence * exp(-ln(2) * ageDays / halfLifeDays))",
"ObservationDecay: per-observation decay state with BaseConfidence, ObservedAt, HalfLifeDays=14, Floor=0.35, StalenessThreshold=0.50",
"ObservationDecay.CalculateDecay(now) computes current decayed confidence correctly",
"ObservationDecay.CheckIsStale(now) returns true when decayed confidence falls below 0.50 staleness threshold",
"ObservationDecay factory methods: Create(), Fresh(), WithSettings()",
"UnknownTriageQueueService: periodically evaluates observations and enqueues stale items for re-analysis",
"UnknownTriageQueueService.ExecuteCycleAsync: fetch candidates -> evaluate via TriageQueueEvaluator -> enqueue Medium/High/Critical to ITriageReanalysisSink",
"TriageQueueEvaluator: priority classification Critical/High/Medium/Low/None based on decay multiplier thresholds",
"TriageQueueEvaluator: deterministic sorting by Priority desc, DaysUntilStale asc, CVE asc, Purl asc",
"TriageQueueEvaluator.CalculateDaysUntilStale: formula using half-life and staleness threshold; negative = already stale",
"TriageQueueEvaluator: recommended action per priority level with missing signal information",
"OpenTelemetry metrics: stellaops_determinization_decay_multiplier, stellaops_triage_items_evaluated_total, stellaops_triage_items_queued_total, stellaops_triage_reanalysis_enqueued_total, stellaops_triage_cycle_duration_seconds",
"InMemoryTriageReanalysisSink: enqueue, dequeue, peekAll for testing",
"UnknownRanker decay: configurable decay buckets (7d/30d/90d/180d/365d/max) with basis-point multipliers"
],
"assertionTypes": [
"equality",
"boolean",
"approximation",
"range-bound",
"collection-ordering",
"determinism",
"FsCheck-property"
],
"newTestsWritten": [],
"bugsFixed": [],
"rawOutput": "Determinization.Tests: Passed! - Failed: 0, Passed: 438, Skipped: 0, Total: 438, Duration: 1s 181ms. Unknowns.Tests: Passed! - Failed: 0, Passed: 59, Skipped: 0, Total: 59, Duration: 533ms. Source files verified: DecayedConfidenceCalculator.cs (76 lines, exp(-ln(2)*age/halfLife) + histogram metric), ObservationDecay.cs (123 lines, per-observation decay with CheckIsStale), TriageQueueEvaluator.cs (228 lines, priority classification + deterministic sorting + DaysUntilStale formula), UnknownTriageQueueService.cs (139 lines, cycle-based re-analysis triggering with ITriageReanalysisSink), InMemoryTriageReanalysisSink.cs, TriageModels.cs, UnknownRanker.cs (369 lines, decay buckets with basis-point multipliers). Feature notes: DecayedConfidenceCalculator and ObservationDecay are fully implemented. TriageQueueEvaluator and UnknownTriageQueueService provide automated triage. What's Missing items (triage queue UI, real containment data sources, decay notification, historical decay ledger) are future enhancements not blocking core decay+triage functionality.",
"verdict": "pass"
}