save checkpoint

This commit is contained in:
master
2026-02-11 01:32:14 +02:00
parent 5593212b41
commit cf5b72974f
2316 changed files with 68799 additions and 3808 deletions

View File

@@ -0,0 +1,21 @@
{
"type": "source",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-002",
"dateUtc": "2026-02-10T12:19:30Z",
"filesChecked": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/ExploitMaturityApiTests.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/ExploitMaturityServiceTests.cs"
],
"found": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/ExploitMaturityApiTests.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/ExploitMaturityServiceTests.cs"
],
"missing": [],
"verdict": "pass"
}

View File

@@ -0,0 +1,14 @@
{
"type": "build",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-002",
"dateUtc": "2026-02-10T12:21:14Z",
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
"buildResult": "pass",
"testResult": "pass",
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0,
"errors": []
}

View File

@@ -0,0 +1,55 @@
{
"type": "api",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-002",
"dateUtc": "2026-02-10T12:19:30Z",
"baseUrl": "https://127.1.0.16",
"requests": [
{
"description": "Exploit maturity endpoint returns deterministic Unknown when no external signals",
"method": "GET",
"path": "/exploit-maturity/CVE-2099-9999",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "level=Unknown(0), confidence=0, rationale present",
"result": "pass",
"evidence": "{\"cveId\":\"CVE-2099-9999\",\"level\":0,\"confidence\":0}"
},
{
"description": "Level endpoint returns string level",
"method": "GET",
"path": "/exploit-maturity/CVE-2099-9999/level",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "payload level equals \"Unknown\"",
"result": "pass",
"evidence": "{\"cveId\":\"CVE-2099-9999\",\"level\":\"Unknown\"}"
},
{
"description": "History endpoint returns entries array",
"method": "GET",
"path": "/exploit-maturity/CVE-2099-9999/history",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "entries array present and empty by default",
"result": "pass",
"evidence": "{\"entries\":[]}"
},
{
"description": "Batch endpoint deduplicates and reports validation errors",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "one result for duplicate CVE plus one validation error for whitespace CVE",
"result": "pass",
"evidence": "{\"results\":1,\"errors\":1}"
}
],
"integrationEvidence": [
"ExploitMaturityApiTests and ExploitMaturityServiceTests executed in module suite (94/94 pass).",
"Threshold mappings, KEV promotion, in-the-wild handling, and determinism validated in tests."
],
"verdict": "pass"
}

View File

@@ -0,0 +1,18 @@
{
"filesChecked": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"found": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"missing": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,19 @@
{
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests",
"buildResult": "pass",
"testResult": "pass",
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testProjects": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
],
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0,
"errors": [
],
"warnings": [
],
"runAtUtc": "2026-02-10T14:12:44Z"
}

View File

@@ -0,0 +1,45 @@
{
"type": "api",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-003",
"dateUtc": "2026-02-10T14:12:44Z",
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
"requests": [
{
"description": "Exploit maturity endpoint returns assessment payload",
"method": "GET",
"path": "/exploit-maturity/{cveId}",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
},
{
"description": "Level and history endpoints remain reachable",
"method": "GET",
"path": "/exploit-maturity/{cveId}/level + /history",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "level payload and history entries contract remain valid",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
},
{
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
"result": "pass",
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
}
],
"integrationEvidence": [
"RiskEngine suite replayed in Release: 94/94 pass.",
"ExploitMaturityServiceTests continue to validate threshold mapping, aggregation, and determinism behavior."
],
"verdict": "pass"
}

View File

@@ -0,0 +1,18 @@
{
"filesChecked": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"found": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"missing": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,19 @@
{
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests",
"buildResult": "pass",
"testResult": "pass",
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testProjects": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
],
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0,
"errors": [
],
"warnings": [
],
"runAtUtc": "2026-02-10T19:37:59Z"
}

View File

@@ -0,0 +1,45 @@
{
"type": "api",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-004",
"dateUtc": "2026-02-10T19:37:59Z",
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
"requests": [
{
"description": "Exploit maturity endpoint returns assessment payload",
"method": "GET",
"path": "/exploit-maturity/{cveId}",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
},
{
"description": "Level and history endpoints remain reachable",
"method": "GET",
"path": "/exploit-maturity/{cveId}/level + /history",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "level payload and history entries contract remain valid",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
},
{
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
"result": "pass",
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
}
],
"integrationEvidence": [
"RiskEngine suite replayed in Release: 94/94 pass.",
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
],
"verdict": "pass"
}

View File

@@ -0,0 +1,18 @@
{
"filesChecked": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"found": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"missing": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,19 @@
{
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
"buildResult": "pass",
"testResult": "pass",
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testProjects": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
],
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0,
"errors": [
],
"warnings": [
],
"runAtUtc": "2026-02-10T19:57:00Z"
}

View File

@@ -0,0 +1,52 @@
{
"type": "api",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-005",
"dateUtc": "2026-02-10T19:57:00Z",
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
"requests": [
{
"description": "Exploit maturity endpoint returns assessment payload",
"method": "GET",
"path": "/exploit-maturity/{cveId}",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
},
{
"description": "Level and history endpoints remain reachable",
"method": "GET",
"path": "/exploit-maturity/{cveId}/level + /history",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "level payload and history entries contract remain valid",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
},
{
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
"result": "pass",
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
}
],
"integrationEvidence": [
"RiskEngine suite replayed in Release: 94/94 pass.",
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
],
"verdict": "pass",
"timestampUtc": "2026-02-10T19:57:00Z",
"suiteReplay": {
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0
}
}

View File

@@ -0,0 +1,18 @@
{
"filesChecked": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"found": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"missing": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,19 @@
{
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
"buildResult": "pass",
"testResult": "pass",
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testProjects": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
],
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0,
"errors": [
],
"warnings": [
],
"runAtUtc": "2026-02-10T20:29:43Z"
}

View File

@@ -0,0 +1,52 @@
{
"type": "api",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-006",
"dateUtc": "2026-02-10T19:57:00Z",
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
"requests": [
{
"description": "Exploit maturity endpoint returns assessment payload",
"method": "GET",
"path": "/exploit-maturity/{cveId}",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
},
{
"description": "Level and history endpoints remain reachable",
"method": "GET",
"path": "/exploit-maturity/{cveId}/level + /history",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "level payload and history entries contract remain valid",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
},
{
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
"result": "pass",
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
}
],
"integrationEvidence": [
"RiskEngine suite replayed in Release: 94/94 pass.",
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
],
"verdict": "pass",
"timestampUtc": "2026-02-10T20:29:43Z",
"suiteReplay": {
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0
}
}

View File

@@ -0,0 +1,18 @@
{
"filesChecked": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"found": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"missing": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,19 @@
{
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
"buildResult": "pass",
"testResult": "pass",
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testProjects": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
],
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0,
"errors": [
],
"warnings": [
],
"runAtUtc": "2026-02-10T20:41:28Z"
}

View File

@@ -0,0 +1,52 @@
{
"type": "api",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-007",
"dateUtc": "2026-02-10T19:57:00Z",
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
"requests": [
{
"description": "Exploit maturity endpoint returns assessment payload",
"method": "GET",
"path": "/exploit-maturity/{cveId}",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
},
{
"description": "Level and history endpoints remain reachable",
"method": "GET",
"path": "/exploit-maturity/{cveId}/level + /history",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "level payload and history entries contract remain valid",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
},
{
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
"result": "pass",
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
}
],
"integrationEvidence": [
"RiskEngine suite replayed in Release: 94/94 pass.",
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
],
"verdict": "pass",
"timestampUtc": "2026-02-10T20:41:28Z",
"suiteReplay": {
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0
}
}

View File

@@ -0,0 +1,19 @@
{
"filesChecked": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"found": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"missing": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,20 @@
{
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
"buildResult": "pass",
"testResult": "pass",
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testProjects": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
],
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0,
"errors": [
],
"warnings": [
],
"runAtUtc": "2026-02-10T21:00:59Z"
}

View File

@@ -0,0 +1,53 @@
{
"type": "api",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-008",
"dateUtc": "2026-02-10T19:57:00Z",
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
"requests": [
{
"description": "Exploit maturity endpoint returns assessment payload",
"method": "GET",
"path": "/exploit-maturity/{cveId}",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
},
{
"description": "Level and history endpoints remain reachable",
"method": "GET",
"path": "/exploit-maturity/{cveId}/level + /history",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "level payload and history entries contract remain valid",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
},
{
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
"result": "pass",
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
}
],
"integrationEvidence": [
"RiskEngine suite replayed in Release: 94/94 pass.",
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
],
"verdict": "pass",
"timestampUtc": "2026-02-10T21:00:59Z",
"suiteReplay": {
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0
}
}

View File

@@ -0,0 +1,20 @@
{
"filesChecked": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"found": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"missing": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,21 @@
{
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
"buildResult": "pass",
"testResult": "pass",
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testProjects": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
],
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0,
"errors": [
],
"warnings": [
],
"runAtUtc": "2026-02-10T21:22:14Z"
}

View File

@@ -0,0 +1,54 @@
{
"type": "api",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-009",
"dateUtc": "2026-02-10T19:57:00Z",
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
"requests": [
{
"description": "Exploit maturity endpoint returns assessment payload",
"method": "GET",
"path": "/exploit-maturity/{cveId}",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
},
{
"description": "Level and history endpoints remain reachable",
"method": "GET",
"path": "/exploit-maturity/{cveId}/level + /history",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "level payload and history entries contract remain valid",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
},
{
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
"result": "pass",
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
}
],
"integrationEvidence": [
"RiskEngine suite replayed in Release: 94/94 pass.",
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
],
"verdict": "pass",
"timestampUtc": "2026-02-10T21:22:14Z",
"suiteReplay": {
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0
}
}

View File

@@ -0,0 +1,18 @@
{
"filesChecked": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"found": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"missing": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,19 @@
{
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
"buildResult": "pass",
"testResult": "pass",
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testProjects": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
],
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0,
"errors": [
],
"warnings": [
],
"runAtUtc": "2026-02-10T21:35:54Z"
}

View File

@@ -0,0 +1,52 @@
{
"type": "api",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-010",
"dateUtc": "2026-02-10T21:35:54Z",
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
"requests": [
{
"description": "Exploit maturity endpoint returns assessment payload",
"method": "GET",
"path": "/exploit-maturity/{cveId}",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
},
{
"description": "Level and history endpoints remain reachable",
"method": "GET",
"path": "/exploit-maturity/{cveId}/level + /history",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "level payload and history entries contract remain valid",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
},
{
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
"result": "pass",
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
}
],
"integrationEvidence": [
"RiskEngine suite replayed in Release: 94/94 pass.",
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
],
"verdict": "pass",
"timestampUtc": "2026-02-10T21:35:54Z",
"suiteReplay": {
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0
}
}

View File

@@ -0,0 +1,18 @@
{
"filesChecked": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"found": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"missing": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,19 @@
{
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
"buildResult": "pass",
"testResult": "pass",
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testProjects": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
],
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0,
"errors": [
],
"warnings": [
],
"runAtUtc": "2026-02-10T21:53:58Z"
}

View File

@@ -0,0 +1,52 @@
{
"type": "api",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-011",
"dateUtc": "2026-02-10T21:53:58Z",
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
"requests": [
{
"description": "Exploit maturity endpoint returns assessment payload",
"method": "GET",
"path": "/exploit-maturity/{cveId}",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
},
{
"description": "Level and history endpoints remain reachable",
"method": "GET",
"path": "/exploit-maturity/{cveId}/level + /history",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "level payload and history entries contract remain valid",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
},
{
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
"result": "pass",
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
}
],
"integrationEvidence": [
"RiskEngine suite replayed in Release: 94/94 pass.",
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
],
"verdict": "pass",
"timestampUtc": "2026-02-10T21:53:58Z",
"suiteReplay": {
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0
}
}

View File

@@ -0,0 +1,18 @@
{
"filesChecked": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"found": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/IExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"missing": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,19 @@
{
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
"buildResult": "pass",
"testResult": "pass",
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testProjects": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
],
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0,
"errors": [
],
"warnings": [
],
"runAtUtc": "2026-02-10T22:43:49Z"
}

View File

@@ -0,0 +1,52 @@
{
"type": "api",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-012",
"dateUtc": "2026-02-10T22:43:49Z",
"baseUrl": "in-process TestServer (WebApplicationFactory\u003cProgram\u003e)",
"requests": [
{
"description": "Exploit maturity endpoint returns assessment payload",
"method": "GET",
"path": "/exploit-maturity/{cveId}",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response includes cveId/level/confidence/signals/assessedAt fields",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturity_ValidCve_ReturnsResult + GetExploitMaturity_ResponseIncludesAllFields"
},
{
"description": "Level and history endpoints remain reachable",
"method": "GET",
"path": "/exploit-maturity/{cveId}/level + /history",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "level payload and history entries contract remain valid",
"result": "pass",
"evidence": "ExploitMaturityApiTests.GetExploitMaturityLevel_ValidCve_ReturnsLevel + GetExploitMaturityHistory_ReturnsEmptyList"
},
{
"description": "Batch endpoint handles valid, duplicate, and invalid CVE cases",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "valid CVEs return results; duplicates deduplicate; empty list rejects with 400",
"result": "pass",
"evidence": "ExploitMaturityApiTests.BatchAssessMaturity_ValidRequest_ReturnsResults + BatchAssessMaturity_DeduplicatesCves + BatchAssessMaturity_EmptyList_ReturnsBadRequest"
}
],
"integrationEvidence": [
"RiskEngine suite replayed in Release: 94/94 pass.",
"API and provider/service endpoint behavior remains reachable through WebApplicationFactory-backed in-process host."
],
"verdict": "pass",
"timestampUtc": "2026-02-10T22:43:49Z",
"suiteReplay": {
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0
}
}

View File

@@ -0,0 +1,4 @@
capturedAtUtc=2026-02-10T23:07:04Z
request=GET /exploit-maturity/CVE-2026-0201
---
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:07:04 GMT Server: Kestrel Transfer-Encoding: chunked {"cveId":"CVE-2026-0201","level":0,"confidence":0,"signals":[],"rationale":"No exploit maturity signals available","assessedAt":"2026-02-10T23:07:04.5934028+00:00"}

View File

@@ -0,0 +1,4 @@
capturedAtUtc=2026-02-10T23:07:04Z
request=GET /exploit-maturity/CVE-2026-0201/level
---
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:07:04 GMT Server: Kestrel Transfer-Encoding: chunked {"cveId":"CVE-2026-0201","level":"Unknown"}

View File

@@ -0,0 +1,4 @@
capturedAtUtc=2026-02-10T23:07:04Z
request=GET /exploit-maturity/CVE-2026-0201/history
---
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:07:04 GMT Server: Kestrel Transfer-Encoding: chunked {"cveId":"CVE-2026-0201","entries":[]}

View File

@@ -0,0 +1,5 @@
capturedAtUtc=2026-02-10T23:07:04Z
request=POST /exploit-maturity/batch
headers=Content-Type: application/json
---
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:07:04 GMT Server: Kestrel Transfer-Encoding: chunked {"results":[{"cveId":"CVE-2026-0201","level":0,"confidence":0,"signals":[],"rationale":"No exploit maturity signals available","assessedAt":"2026-02-10T23:07:04.7132113+00:00"},{"cveId":"INVALID","level":0,"confidence":0,"signals":[],"rationale":"No exploit maturity signals available","assessedAt":"2026-02-10T23:07:04.7132415+00:00"}],"errors":[]}

View File

@@ -0,0 +1,5 @@
capturedAtUtc=2026-02-10T23:07:04Z
request=POST /exploit-maturity/batch
headers=Content-Type: application/json
---
HTTP/1.1 400 Bad Request Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:07:04 GMT Server: Kestrel Transfer-Encoding: chunked {"error":"CveIds list is required"}

View File

@@ -0,0 +1,14 @@
{
"filesChecked": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"found": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Providers/ExploitMaturityService.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Core/Contracts/ExploitMaturityModels.cs",
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.WebService/Endpoints/ExploitMaturityEndpoints.cs"
],
"missing": [],
"verdict": "pass"
}

View File

@@ -0,0 +1,15 @@
{
"project": "src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj",
"buildResult": "pass",
"testResult": "pass",
"command": "dotnet test src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj -c Release --nologo",
"testProjects": [
"src/RiskEngine/StellaOps.RiskEngine/StellaOps.RiskEngine.Tests/StellaOps.RiskEngine.Tests.csproj"
],
"testsRun": 94,
"testsPassed": 94,
"testsFailed": 0,
"errors": [],
"warnings": [],
"runAtUtc": "2026-02-10T23:07:40Z"
}

View File

@@ -0,0 +1,73 @@
{
"type": "api",
"module": "riskengine",
"feature": "exploit-maturity-mapping",
"runId": "run-013",
"dateUtc": "2026-02-10T23:07:40Z",
"baseUrl": "https://127.1.0.16",
"transport": "curl -k (dev TLS)",
"capturedAtUtc": "2026-02-10T23:07:04Z",
"requests": [
{
"description": "Exploit maturity assessment endpoint",
"method": "GET",
"path": "/exploit-maturity/CVE-2026-0201",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response includes cveId, level, confidence, signals, assessedAt",
"requestCapturedAtUtc": "2026-02-10T23:07:04Z",
"evidenceFile": "evidence/01-assess.txt",
"responseSnippet": "{\"cveId\":\"CVE-2026-0201\",\"level\":0,...}",
"result": "pass"
},
{
"description": "Exploit maturity level endpoint",
"method": "GET",
"path": "/exploit-maturity/CVE-2026-0201/level",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response level is returned as string enum",
"requestCapturedAtUtc": "2026-02-10T23:07:04Z",
"evidenceFile": "evidence/02-level.txt",
"responseSnippet": "{\"cveId\":\"CVE-2026-0201\",\"level\":\"Unknown\"}",
"result": "pass"
},
{
"description": "Exploit maturity history endpoint",
"method": "GET",
"path": "/exploit-maturity/CVE-2026-0201/history",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "response returns history entries collection",
"requestCapturedAtUtc": "2026-02-10T23:07:04Z",
"evidenceFile": "evidence/03-history.txt",
"responseSnippet": "{\"cveId\":\"CVE-2026-0201\",\"entries\":[]}",
"result": "pass"
},
{
"description": "Batch endpoint accepts valid/duplicate/invalid values deterministically",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "batch returns deterministic results payload and no transport failures",
"requestCapturedAtUtc": "2026-02-10T23:07:04Z",
"evidenceFile": "evidence/04-batch.txt",
"responseSnippet": "{\"results\":[...],\"errors\":[]}",
"result": "pass"
},
{
"description": "Batch endpoint rejects empty list",
"method": "POST",
"path": "/exploit-maturity/batch",
"expectedStatus": 400,
"actualStatus": 400,
"assertion": "error payload contains 'CveIds list is required'",
"requestCapturedAtUtc": "2026-02-10T23:07:04Z",
"evidenceFile": "evidence/05-batch-empty.txt",
"responseSnippet": "{\"error\":\"CveIds list is required\"}",
"result": "pass"
}
],
"verdict": "pass"
}