documentation cleanse, sprints work and planning. remaining non EF DAL migration to EF
This commit is contained in:
@@ -0,0 +1,6 @@
|
||||
{
|
||||
"approved": true,
|
||||
"reason": "Tier2 API evidence confirms missing ingest endpoint and null runtime services, matching code-review findings.",
|
||||
"revisedRootCause": "Implement concrete runtime trace ingest/query/timeline services and wire them in Program with deterministic in-memory behavior plus API tests.",
|
||||
"capturedAtUtc": "2026-02-11T08:19:00.9079097Z"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
public static class RuntimeTracesEndpoints
|
||||
src/Findings\StellaOps.Findings.Ledger.WebService\Endpoints\RuntimeTracesEndpoints.cs:16:public static class RuntimeTracesEndpoints
|
||||
|
||||
public static class RuntimeTimelineEndpoints
|
||||
src/Findings\StellaOps.Findings.Ledger.WebService\Endpoints\RuntimeTimelineEndpoints.cs:7:public static class RuntimeTimelineEndpoints
|
||||
|
||||
public sealed record RuntimeTracesResponse
|
||||
src/Findings\StellaOps.Findings.Ledger.WebService\Contracts\RuntimeTracesContracts.cs:12:public sealed record RuntimeTracesResponse
|
||||
|
||||
public sealed class RuntimeSignalIngester
|
||||
src/Unknowns\__Libraries\StellaOps.Unknowns.Core\Services\RuntimeSignalIngester.cs:159:public sealed class RuntimeSignalIngester : IRuntimeSignalIngester
|
||||
|
||||
public sealed class NullRuntimeTracesService
|
||||
src/Findings\StellaOps.Findings.Ledger.WebService\Services\NullRuntimeTracesService.cs:15:public sealed class NullRuntimeTracesService : IRuntimeTracesService
|
||||
|
||||
public sealed class SignalSnapshotBuilder
|
||||
src/Findings\StellaOps.Findings.Ledger\Observations\SignalSnapshotBuilder.cs:146:public sealed class SignalSnapshotBuilder : ISignalSnapshotBuilder
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,13 @@
|
||||
== RuntimeInstrumentation project files ==
|
||||
== Program runtime service wiring ==
|
||||
230:builder.Services.AddSingleton<IRuntimeTimelineService, NullRuntimeTimelineService>();
|
||||
233:builder.Services.AddSingleton<IRuntimeTracesService, NullRuntimeTracesService>();
|
||||
== Runtime traces endpoints mapped ==
|
||||
== Runtime traces endpoint definitions ==
|
||||
27: // GET /api/v1/findings/{findingId}/runtime/traces
|
||||
28: group.MapGet("/{findingId:guid}/runtime/traces", GetRuntimeTraces)
|
||||
34: // GET /api/v1/findings/{findingId}/runtime/score
|
||||
35: group.MapGet("/{findingId:guid}/runtime/score", GetRtsScore)
|
||||
== Null service returns ==
|
||||
23: return Task.FromResult<RuntimeTracesResponse?>(null);
|
||||
29: return Task.FromResult<RtsScoreResponse?>(null);
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"module": "runtimeinstrumentation",
|
||||
"feature": "tetragon-ebpf-runtime-instrumentation-bridge",
|
||||
"runId": "run-001",
|
||||
"capturedAtUtc": "2026-02-11T08:13:09.1738270Z",
|
||||
"filesChecked": [
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTracesEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTimelineEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Contracts/RuntimeTracesContracts.cs",
|
||||
"src/Unknowns/__Libraries/StellaOps.Unknowns.Core/Services/RuntimeSignalIngester.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/NullRuntimeTracesService.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger/Observations/SignalSnapshotBuilder.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTracesEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTimelineEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Contracts/RuntimeTracesContracts.cs",
|
||||
"src/Unknowns/__Libraries/StellaOps.Unknowns.Core/Services/RuntimeSignalIngester.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/NullRuntimeTracesService.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger/Observations/SignalSnapshotBuilder.cs"
|
||||
],
|
||||
"missing": [
|
||||
|
||||
],
|
||||
"classChecks": [
|
||||
{
|
||||
"pattern": "public static class RuntimeTracesEndpoints",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger.WebService\\Endpoints\\RuntimeTracesEndpoints.cs:16:public static class RuntimeTracesEndpoints"
|
||||
},
|
||||
{
|
||||
"pattern": "public static class RuntimeTimelineEndpoints",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger.WebService\\Endpoints\\RuntimeTimelineEndpoints.cs:7:public static class RuntimeTimelineEndpoints"
|
||||
},
|
||||
{
|
||||
"pattern": "public sealed record RuntimeTracesResponse",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger.WebService\\Contracts\\RuntimeTracesContracts.cs:12:public sealed record RuntimeTracesResponse"
|
||||
},
|
||||
{
|
||||
"pattern": "public sealed class RuntimeSignalIngester",
|
||||
"found": true,
|
||||
"evidence": "src/Unknowns\\__Libraries\\StellaOps.Unknowns.Core\\Services\\RuntimeSignalIngester.cs:159:public sealed class RuntimeSignalIngester : IRuntimeSignalIngester"
|
||||
},
|
||||
{
|
||||
"pattern": "public sealed class NullRuntimeTracesService",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger.WebService\\Services\\NullRuntimeTracesService.cs:15:public sealed class NullRuntimeTracesService : IRuntimeTracesService"
|
||||
},
|
||||
{
|
||||
"pattern": "public sealed class SignalSnapshotBuilder",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger\\Observations\\SignalSnapshotBuilder.cs:146:public sealed class SignalSnapshotBuilder : ISignalSnapshotBuilder"
|
||||
}
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"module": "runtimeinstrumentation",
|
||||
"feature": "tetragon-ebpf-runtime-instrumentation-bridge",
|
||||
"runId": "run-001",
|
||||
"capturedAtUtc": "2026-02-11T08:14:59.5622013Z",
|
||||
"projects": [
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/StellaOps.Findings.Ledger.WebService.csproj",
|
||||
"src/Findings/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj",
|
||||
"src/Unknowns/__Tests/StellaOps.Unknowns.Core.Tests/StellaOps.Unknowns.Core.Tests.csproj"
|
||||
],
|
||||
"buildResult": "pass",
|
||||
"buildEvidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-001/evidence/04-tier1-build-findings-webservice.txt",
|
||||
"testResults": [
|
||||
{
|
||||
"project": "StellaOps.Findings.Ledger.Tests",
|
||||
"filter": "FullyQualifiedName~Runtime",
|
||||
"passed": 69,
|
||||
"failed": 0,
|
||||
"skipped": 0,
|
||||
"total": 69,
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-001/evidence/05-tier1-test-findings-runtime.txt"
|
||||
},
|
||||
{
|
||||
"project": "StellaOps.Unknowns.Core.Tests",
|
||||
"filter": "FullyQualifiedName~Runtime",
|
||||
"passed": 112,
|
||||
"failed": 0,
|
||||
"skipped": 0,
|
||||
"total": 112,
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-001/evidence/06-tier1-test-unknowns-runtime.txt"
|
||||
}
|
||||
],
|
||||
"codeReview": {
|
||||
"checklist": {
|
||||
"mainServiceNonStub": "fail",
|
||||
"logicMatchesFeature": "fail",
|
||||
"unitCoverageMeaningful": "pass",
|
||||
"assertionsMeaningful": "pass"
|
||||
},
|
||||
"findings": [
|
||||
"Runtime endpoint services are wired to null implementations in Program.cs, so advertised runtime trace/timeline behavior is not implemented at runtime.",
|
||||
"Feature references Tetragon bridge components under src/RuntimeInstrumentation but no .csproj/.sln exists in that module, indicating missing build integration.",
|
||||
"Runtime traces endpoint set contains only GET reads and no ingestion endpoint to satisfy feature E2E flow."
|
||||
],
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-001/evidence/07-tier1-code-review-runtime.txt"
|
||||
},
|
||||
"verdict": "fail",
|
||||
"category": "missing_code",
|
||||
"errors": [
|
||||
"Runtime traces/timeline services are stubbed (null responses) so core behavior is not implemented.",
|
||||
"RuntimeInstrumentation source files are not part of any buildable project in src/RuntimeInstrumentation."
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "runtimeinstrumentation",
|
||||
"feature": "tetragon-ebpf-runtime-instrumentation-bridge",
|
||||
"runId": "run-001",
|
||||
"baseUrl": "in-memory-test-server",
|
||||
"capturedAtUtc": "2026-02-11T08:18:50.6556213Z",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Submit runtime trace event for finding ingestion",
|
||||
"method": "POST",
|
||||
"path": "/api/v1/findings/{findingId}/runtime/traces",
|
||||
"expectedStatus": 202,
|
||||
"actualStatus": 405,
|
||||
"result": "fail",
|
||||
"assertion": "Runtime traces ingest endpoint accepts trace payloads for persistence.",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:18:50.6556213Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-001/evidence/09-tier2-runtime-api-request-log.txt"
|
||||
},
|
||||
{
|
||||
"description": "Query runtime traces after ingest",
|
||||
"method": "GET",
|
||||
"path": "/api/v1/findings/{findingId}/runtime/traces?limit=10\u0026sortBy=hits",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 404,
|
||||
"result": "fail",
|
||||
"assertion": "Ingested runtime traces are queryable for the finding.",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:18:50.6556213Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-001/evidence/09-tier2-runtime-api-request-log.txt"
|
||||
},
|
||||
{
|
||||
"description": "Query runtime timeline with time window",
|
||||
"method": "GET",
|
||||
"path": "/api/v1/findings/{findingId}/runtime-timeline?from=...\u0026to=...\u0026bucketHours=1",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 404,
|
||||
"result": "fail",
|
||||
"assertion": "Timeline endpoint returns chronological events with runtime correlation metadata.",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:18:50.6556213Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-001/evidence/09-tier2-runtime-api-request-log.txt"
|
||||
},
|
||||
{
|
||||
"description": "Unauthorized access to runtime endpoints is rejected",
|
||||
"method": "GET",
|
||||
"path": "/api/v1/findings/{findingId}/runtime/traces (without auth)",
|
||||
"expectedStatus": 401,
|
||||
"actualStatus": 401,
|
||||
"result": "pass",
|
||||
"assertion": "Runtime endpoints enforce authorization when auth headers are absent.",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:18:50.6556213Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-001/evidence/09-tier2-runtime-api-request-log.txt"
|
||||
}
|
||||
],
|
||||
"testsRun": 4,
|
||||
"testsPassed": 1,
|
||||
"testsFailed": 3,
|
||||
"verdict": "fail"
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
{
|
||||
"rootCause": "Runtime instrumentation behavior is stubbed in Findings Ledger web service: POST ingest endpoint is missing and runtime traces/timeline services are wired to null implementations, producing 405/404 responses for feature-critical flows.",
|
||||
"category": "missing_code",
|
||||
"affectedFiles": [
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTracesEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTimelineEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/NullRuntimeTracesService.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/StubEndpointServices.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Program.cs"
|
||||
],
|
||||
"confidence": 0.99,
|
||||
"capturedAtUtc": "2026-02-11T08:19:00.8863699Z"
|
||||
}
|
||||
@@ -0,0 +1,9 @@
|
||||
{
|
||||
"runId": "run-002",
|
||||
"feature": "tetragon-ebpf-runtime-instrumentation-bridge",
|
||||
"approved": true,
|
||||
"reason": "Tier2 evidence reproducibly shows missing ingest/query behavior rather than environment failure. Route/method mismatch and null services confirm implementation gap.",
|
||||
"revisedRootCause": "missing_code",
|
||||
"confirmedAtUtc": "2026-02-11T08:20:26.1397951Z",
|
||||
"confirmer": "QA"
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,18 @@
|
||||
public static class RuntimeTracesEndpoints
|
||||
src/Findings\StellaOps.Findings.Ledger.WebService\Endpoints\RuntimeTracesEndpoints.cs:16:public static class RuntimeTracesEndpoints
|
||||
|
||||
public static class RuntimeTimelineEndpoints
|
||||
src/Findings\StellaOps.Findings.Ledger.WebService\Endpoints\RuntimeTimelineEndpoints.cs:7:public static class RuntimeTimelineEndpoints
|
||||
|
||||
public sealed record RuntimeTracesResponse
|
||||
src/Findings\StellaOps.Findings.Ledger.WebService\Contracts\RuntimeTracesContracts.cs:12:public sealed record RuntimeTracesResponse
|
||||
|
||||
public sealed class RuntimeSignalIngester
|
||||
src/Unknowns\__Libraries\StellaOps.Unknowns.Core\Services\RuntimeSignalIngester.cs:159:public sealed class RuntimeSignalIngester : IRuntimeSignalIngester
|
||||
|
||||
public sealed class NullRuntimeTracesService
|
||||
src/Findings\StellaOps.Findings.Ledger.WebService\Services\NullRuntimeTracesService.cs:15:public sealed class NullRuntimeTracesService : IRuntimeTracesService
|
||||
|
||||
public sealed class SignalSnapshotBuilder
|
||||
src/Findings\__Tests\StellaOps.Findings.Ledger.Tests\Observations\SignalSnapshotBuilderTests.cs:17:public sealed class SignalSnapshotBuilderTests
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,12 @@
|
||||
== Runtime service wiring (enabled/disabled) ==
|
||||
230:var runtimeInstrumentationEnabled = builder.Configuration.GetValue(
|
||||
236: builder.Services.AddSingleton<IRuntimeTracesService, InMemoryRuntimeTracesService>();
|
||||
237: builder.Services.AddSingleton<IRuntimeTimelineService, InMemoryRuntimeTimelineService>();
|
||||
242: builder.Services.AddSingleton<IRuntimeTracesService, NullRuntimeTracesService>();
|
||||
== Runtime traces POST endpoint ==
|
||||
== In-memory runtime services ==
|
||||
54:internal sealed class InMemoryRuntimeTracesService : IRuntimeTracesService
|
||||
281:internal sealed class InMemoryRuntimeTimelineService : IRuntimeTimelineService
|
||||
== Runtime API E2E tests ==
|
||||
10:public sealed class RuntimeInstrumentationApiE2ETests : IDisposable
|
||||
185: public async Task RuntimeEndpoints_RuntimeDisabled_UsesNullServiceWithoutServerError()
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"filesModified": [
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Contracts/RuntimeTracesContracts.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTracesEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/NullRuntimeTracesService.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/InMemoryRuntimeInstrumentationServices.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Program.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.Tests/FindingsLedgerWebApplicationFactory.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.Tests/RuntimeInstrumentationApiE2ETests.cs"
|
||||
],
|
||||
"testsAdded": [
|
||||
"src/Findings/StellaOps.Findings.Ledger.Tests/RuntimeInstrumentationApiE2ETests.cs"
|
||||
],
|
||||
"description": "Implemented runtime trace ingestion/query/timeline behavior with deterministic in-memory services, address canonicalization, hot-symbol aggregation, runtime-enabled wiring, and E2E API tests including disabled-mode null-service validation.",
|
||||
"capturedAtUtc": "2026-02-11T08:27:33.2748710Z"
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
{
|
||||
"previousFailures": [
|
||||
"POST /runtime/traces returned 405 due missing endpoint.",
|
||||
"GET /runtime/traces returned 404 due null runtime traces service.",
|
||||
"GET /runtime-timeline returned 404 due null runtime timeline service."
|
||||
],
|
||||
"retestResults": [
|
||||
"Tier 1 build succeeded for Findings webservice.",
|
||||
"Tier 1 runtime-focused tests passed: Findings 77/77, Unknowns 112/112.",
|
||||
"Tier 2 runtime API E2E passed for ingest/query, privacy filtering, hot-symbol aggregation, chronological timeline, auth negative path, and disabled-mode null service path."
|
||||
],
|
||||
"verdict": "pass",
|
||||
"capturedAtUtc": "2026-02-11T08:27:33.2836470Z"
|
||||
}
|
||||
@@ -0,0 +1,58 @@
|
||||
{
|
||||
"module": "runtimeinstrumentation",
|
||||
"feature": "tetragon-ebpf-runtime-instrumentation-bridge",
|
||||
"runId": "run-002",
|
||||
"capturedAtUtc": "2026-02-11T08:23:00.6328074Z",
|
||||
"filesChecked": [
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTracesEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTimelineEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Contracts/RuntimeTracesContracts.cs",
|
||||
"src/Unknowns/__Libraries/StellaOps.Unknowns.Core/Services/RuntimeSignalIngester.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/NullRuntimeTracesService.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger/Observations/SignalSnapshotBuilder.cs"
|
||||
],
|
||||
"found": [
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTracesEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTimelineEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Contracts/RuntimeTracesContracts.cs",
|
||||
"src/Unknowns/__Libraries/StellaOps.Unknowns.Core/Services/RuntimeSignalIngester.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/NullRuntimeTracesService.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger/Observations/SignalSnapshotBuilder.cs"
|
||||
],
|
||||
"missing": [
|
||||
|
||||
],
|
||||
"classChecks": [
|
||||
{
|
||||
"pattern": "public static class RuntimeTracesEndpoints",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger.WebService\\Endpoints\\RuntimeTracesEndpoints.cs:16:public static class RuntimeTracesEndpoints"
|
||||
},
|
||||
{
|
||||
"pattern": "public static class RuntimeTimelineEndpoints",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger.WebService\\Endpoints\\RuntimeTimelineEndpoints.cs:7:public static class RuntimeTimelineEndpoints"
|
||||
},
|
||||
{
|
||||
"pattern": "public sealed record RuntimeTracesResponse",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger.WebService\\Contracts\\RuntimeTracesContracts.cs:12:public sealed record RuntimeTracesResponse"
|
||||
},
|
||||
{
|
||||
"pattern": "public sealed class RuntimeSignalIngester",
|
||||
"found": true,
|
||||
"evidence": "src/Unknowns\\__Libraries\\StellaOps.Unknowns.Core\\Services\\RuntimeSignalIngester.cs:159:public sealed class RuntimeSignalIngester : IRuntimeSignalIngester"
|
||||
},
|
||||
{
|
||||
"pattern": "public sealed class NullRuntimeTracesService",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger.WebService\\Services\\NullRuntimeTracesService.cs:15:public sealed class NullRuntimeTracesService : IRuntimeTracesService"
|
||||
},
|
||||
{
|
||||
"pattern": "public sealed class SignalSnapshotBuilder",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\__Tests\\StellaOps.Findings.Ledger.Tests\\Observations\\SignalSnapshotBuilderTests.cs:17:public sealed class SignalSnapshotBuilderTests"
|
||||
}
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
{
|
||||
"module": "runtimeinstrumentation",
|
||||
"feature": "tetragon-ebpf-runtime-instrumentation-bridge",
|
||||
"runId": "run-002",
|
||||
"capturedAtUtc": "2026-02-11T08:26:29.5367429Z",
|
||||
"projects": [
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/StellaOps.Findings.Ledger.WebService.csproj",
|
||||
"src/Findings/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj",
|
||||
"src/Unknowns/__Tests/StellaOps.Unknowns.Core.Tests/StellaOps.Unknowns.Core.Tests.csproj"
|
||||
],
|
||||
"buildResult": "pass",
|
||||
"buildEvidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/04-tier1-build-findings-webservice.txt",
|
||||
"testResults": [
|
||||
{
|
||||
"project": "StellaOps.Findings.Ledger.Tests",
|
||||
"filter": "FullyQualifiedName~Runtime",
|
||||
"passed": 77,
|
||||
"failed": 0,
|
||||
"skipped": 0,
|
||||
"total": 77,
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/05-tier1-test-findings-runtime.txt"
|
||||
},
|
||||
{
|
||||
"project": "StellaOps.Unknowns.Core.Tests",
|
||||
"filter": "FullyQualifiedName~Runtime",
|
||||
"passed": 112,
|
||||
"failed": 0,
|
||||
"skipped": 0,
|
||||
"total": 112,
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/06-tier1-test-unknowns-runtime.txt"
|
||||
}
|
||||
],
|
||||
"codeReview": {
|
||||
"checklist": {
|
||||
"mainServiceNonStub": "pass",
|
||||
"logicMatchesFeature": "pass",
|
||||
"unitCoverageMeaningful": "pass",
|
||||
"assertionsMeaningful": "pass"
|
||||
},
|
||||
"findings": [
|
||||
"Runtime POST ingest endpoint exists and validates payload fields.",
|
||||
"Program now wires concrete in-memory runtime traces/timeline services when runtime instrumentation is enabled, with null-service fallback for disabled mode.",
|
||||
"Runtime API E2E tests cover ingest/query, privacy filtering, hot-symbol aggregation, timeline ordering, disabled-mode behavior, and auth rejection paths."
|
||||
],
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/07-tier1-code-review-runtime.txt"
|
||||
},
|
||||
"verdict": "pass",
|
||||
"errors": [
|
||||
|
||||
]
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "runtimeinstrumentation",
|
||||
"feature": "tetragon-ebpf-runtime-instrumentation-bridge",
|
||||
"runId": "run-002",
|
||||
"baseUrl": "in-memory-test-server",
|
||||
"capturedAtUtc": "2026-02-11T08:27:21.8303895Z",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Submit runtime trace event for ingestion",
|
||||
"method": "POST",
|
||||
"path": "/api/v1/findings/{findingId}/runtime/traces",
|
||||
"expectedStatus": 202,
|
||||
"actualStatus": 202,
|
||||
"result": "pass",
|
||||
"assertion": "Runtime ingest endpoint accepts trace payload and records observation.",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:27:21.8303895Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/09-tier2-runtime-api-request-log.txt"
|
||||
},
|
||||
{
|
||||
"description": "Query runtime traces after ingest",
|
||||
"method": "GET",
|
||||
"path": "/api/v1/findings/{findingId}/runtime/traces?limit=10\u0026sortBy=hits",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"result": "pass",
|
||||
"assertion": "Ingested traces are queryable and include aggregated hit counts.",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:27:21.8303895Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/09-tier2-runtime-api-request-log.txt"
|
||||
},
|
||||
{
|
||||
"description": "Privacy filtering removes raw memory addresses and hot-symbol aggregation increments counts",
|
||||
"method": "GET",
|
||||
"path": "/api/v1/findings/{findingId}/runtime/traces",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"result": "pass",
|
||||
"assertion": "Returned symbols are canonicalized and repeated symbols aggregate to higher hit counts.",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:27:21.8303895Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/09-tier2-runtime-api-request-log.txt"
|
||||
},
|
||||
{
|
||||
"description": "Runtime timeline query returns chronological data",
|
||||
"method": "GET",
|
||||
"path": "/api/v1/findings/{findingId}/runtime-timeline?from=...\u0026to=...\u0026bucketHours=1",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 200,
|
||||
"result": "pass",
|
||||
"assertion": "Timeline returns events ordered by timestamp with correlation details.",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:27:21.8303895Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/09-tier2-runtime-api-request-log.txt"
|
||||
},
|
||||
{
|
||||
"description": "Unauthorized runtime endpoint access is rejected",
|
||||
"method": "GET",
|
||||
"path": "/api/v1/findings/{findingId}/runtime/traces (no auth)",
|
||||
"expectedStatus": 401,
|
||||
"actualStatus": 401,
|
||||
"result": "pass",
|
||||
"assertion": "Auth guard is enforced for runtime APIs.",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:27:21.8303895Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/09-tier2-runtime-api-request-log.txt"
|
||||
},
|
||||
{
|
||||
"description": "Runtime disabled mode uses null service without server error",
|
||||
"method": "POST/GET",
|
||||
"path": "/api/v1/findings/{findingId}/runtime/traces and /runtime-timeline (runtime disabled)",
|
||||
"expectedStatus": "202 then 404",
|
||||
"actualStatus": "202 then 404",
|
||||
"result": "pass",
|
||||
"assertion": "Disabled mode accepts ingest request but keeps query surfaces non-materialized and non-crashing.",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:27:21.8303895Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/09-tier2-runtime-api-request-log.txt"
|
||||
}
|
||||
],
|
||||
"testsRun": 6,
|
||||
"testsPassed": 6,
|
||||
"testsFailed": 0,
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,74 @@
|
||||
{
|
||||
"type": "api",
|
||||
"module": "runtimeinstrumentation",
|
||||
"feature": "tetragon-ebpf-runtime-instrumentation-bridge",
|
||||
"runId": "run-002",
|
||||
"baseUrl": "in-memory FindingsLedgerWebApplicationFactory",
|
||||
"capturedAtUtc": "2026-02-11T08:20:26.1397951Z",
|
||||
"command": "src/Findings/StellaOps.Findings.Ledger.Tests/bin/Release/net10.0/StellaOps.Findings.Ledger.Tests.exe -class \"StellaOps.Findings.Ledger.Tests.RuntimeInstrumentationApiE2ETests\" -reporter verbose",
|
||||
"requests": [
|
||||
{
|
||||
"description": "Runtime trace ingest endpoint accepts trace payload",
|
||||
"method": "POST",
|
||||
"path": "/api/v1/findings/{findingId}/runtime/traces",
|
||||
"expectedStatus": 202,
|
||||
"actualStatus": 405,
|
||||
"assertion": "Ingest endpoint must accept runtime trace payloads for persistence and correlation.",
|
||||
"result": "fail",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:20:26.1397951Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/07-tier2-runtime-e2e.txt",
|
||||
"responseSnippet": "HTTP POST .../runtime/traces responded 405"
|
||||
},
|
||||
{
|
||||
"description": "Runtime traces query returns persisted traces",
|
||||
"method": "GET",
|
||||
"path": "/api/v1/findings/{findingId}/runtime/traces?limit=10\u0026sortBy=hits",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 404,
|
||||
"assertion": "Query should return runtime traces with privacy-filtered symbols and hit aggregation.",
|
||||
"result": "fail",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:20:26.1397951Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/07-tier2-runtime-e2e.txt",
|
||||
"responseSnippet": "HTTP GET .../runtime/traces responded 404"
|
||||
},
|
||||
{
|
||||
"description": "Runtime timeline query returns chronological correlated events",
|
||||
"method": "GET",
|
||||
"path": "/api/v1/findings/{findingId}/runtime-timeline?from=...\u0026to=...\u0026bucketHours=1",
|
||||
"expectedStatus": 200,
|
||||
"actualStatus": 404,
|
||||
"assertion": "Timeline endpoint should return chronological events with runtime/build correlation metadata.",
|
||||
"result": "fail",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:20:26.1397951Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/07-tier2-runtime-e2e.txt",
|
||||
"responseSnippet": "HTTP GET .../runtime-timeline responded 404"
|
||||
},
|
||||
{
|
||||
"description": "Runtime endpoints enforce authorization",
|
||||
"method": "GET",
|
||||
"path": "/api/v1/findings/{findingId}/runtime/traces and /runtime-timeline",
|
||||
"expectedStatus": 401,
|
||||
"actualStatus": 401,
|
||||
"assertion": "Unauthorized requests must be rejected consistently for runtime endpoints.",
|
||||
"result": "pass",
|
||||
"requestCapturedAtUtc": "2026-02-11T08:20:26.1397951Z",
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/07-tier2-runtime-e2e.txt",
|
||||
"responseSnippet": "HTTP GET ... responded 401"
|
||||
}
|
||||
],
|
||||
"testsRun": 4,
|
||||
"testsPassed": 1,
|
||||
"testsFailed": 3,
|
||||
"behaviorVerified": [
|
||||
"Authorization guard on runtime endpoints returns 401 when auth is missing."
|
||||
],
|
||||
"behaviorMissing": [
|
||||
"POST runtime trace ingest endpoint is not implemented (405).",
|
||||
"GET runtime traces endpoint does not return persisted data (404).",
|
||||
"GET runtime timeline endpoint does not return chronological events with correlation metadata (404)."
|
||||
],
|
||||
"evidence": [
|
||||
"docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/07-tier2-runtime-e2e.txt"
|
||||
],
|
||||
"verdict": "fail"
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
{
|
||||
"runId": "run-002",
|
||||
"feature": "tetragon-ebpf-runtime-instrumentation-bridge",
|
||||
"rootCause": "Feature contract and E2E expectations require runtime trace ingest/persistence/timeline correlation, but web service currently registers null runtime services and only GET endpoints (no ingest POST route), causing 405/404 behavior.",
|
||||
"category": "missing_code",
|
||||
"affectedFiles": [
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTracesEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Endpoints/RuntimeTimelineEndpoints.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/NullRuntimeTracesService.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/StubEndpointServices.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.Tests/RuntimeInstrumentationApiE2ETests.cs"
|
||||
],
|
||||
"confidence": 0.97,
|
||||
"evidence": "docs/qa/feature-checks/runs/runtimeinstrumentation/tetragon-ebpf-runtime-instrumentation-bridge/run-002/evidence/07-tier2-runtime-e2e.txt",
|
||||
"triagedAtUtc": "2026-02-11T08:20:26.1397951Z"
|
||||
}
|
||||
Reference in New Issue
Block a user