documentation cleanse, sprints work and planning. remaining non EF DAL migration to EF

This commit is contained in:
master
2026-02-25 01:24:07 +02:00
parent b07d27772e
commit 4db038123b
9090 changed files with 4836 additions and 2909 deletions

View File

@@ -0,0 +1,5 @@
capturedAtUtc=2026-02-10T23:12:21Z
request=POST /api/v1/timeline/qa-correlation-013/replay
headers=Content-Type: application/json
---
HTTP/1.1 202 Accepted Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:12:21 GMT Server: Kestrel Location: /api/v1/timeline/replay/5b05a21210ba4e7c Transfer-Encoding: chunked {"replayId":"5b05a21210ba4e7c","correlationId":"qa-correlation-013","mode":"dry-run","status":"INITIATED","estimatedDurationMs":500}

View File

@@ -0,0 +1,4 @@
capturedAtUtc=2026-02-10T23:12:37Z
request=GET /api/v1/timeline/replay/5b05a21210ba4e7c
---
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:12:36 GMT Server: Kestrel Transfer-Encoding: chunked {"replayId":"5b05a21210ba4e7c","correlationId":"qa-correlation-013","mode":"dry-run","status":"COMPLETED","progress":1,"eventsProcessed":0,"totalEvents":0,"startedAt":"2026-02-10T23:12:21.8140622+00:00","completedAt":"2026-02-10T23:12:21.8142249+00:00","originalDigest":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","replayDigest":"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855","deterministicMatch":true,"error":null}

View File

@@ -0,0 +1,5 @@
capturedAtUtc=2026-02-10T23:11:57Z
request=POST /api/v1/timeline/qa-correlation-013/replay
headers=Content-Type: application/json
---
HTTP/1.1 400 Bad Request Content-Type: application/json; charset=utf-8 Date: Tue, 10 Feb 2026 23:11:56 GMT Server: Kestrel Transfer-Encoding: chunked "Mode must be either 'dry-run' or 'verify'."

View File

@@ -0,0 +1,4 @@
capturedAtUtc=2026-02-10T23:11:57Z
request=GET /api/v1/timeline/replay/does-not-exist-013
---
HTTP/1.1 404 Not Found Content-Length: 0 Date: Tue, 10 Feb 2026 23:11:56 GMT Server: Kestrel

View File

@@ -0,0 +1,4 @@
capturedAtUtc=2026-02-10T23:12:37Z
request=POST /api/v1/timeline/replay/does-not-exist-013/cancel
---
HTTP/1.1 404 Not Found Content-Length: 0 Date: Tue, 10 Feb 2026 23:12:37 GMT Server: Kestrel

View File

@@ -0,0 +1,16 @@
{
"filesChecked": [
"src/Timeline/StellaOps.Timeline.WebService/Endpoints/ReplayEndpoints.cs",
"src/Timeline/__Libraries/StellaOps.Timeline.Core/Replay/TimelineReplayOrchestrator.cs",
"src/Timeline/__Libraries/StellaOps.Timeline.Core/ServiceCollectionExtensions.cs",
"src/Timeline/__Tests/StellaOps.Timeline.WebService.Tests/TimelineApiIntegrationTests.cs"
],
"found": [
"src/Timeline/StellaOps.Timeline.WebService/Endpoints/ReplayEndpoints.cs",
"src/Timeline/__Libraries/StellaOps.Timeline.Core/Replay/TimelineReplayOrchestrator.cs",
"src/Timeline/__Libraries/StellaOps.Timeline.Core/ServiceCollectionExtensions.cs",
"src/Timeline/__Tests/StellaOps.Timeline.WebService.Tests/TimelineApiIntegrationTests.cs"
],
"missing": [],
"verdict": "pass"
}

View File

@@ -0,0 +1,16 @@
{
"project": "src/Timeline (__Tests matrix)",
"buildResult": "pass",
"testResult": "pass",
"command": "dotnet test src/Timeline/__Tests/StellaOps.Timeline.Core.Tests/StellaOps.Timeline.Core.Tests.csproj -c Release --nologo; dotnet test src/Timeline/__Tests/StellaOps.Timeline.WebService.Tests/StellaOps.Timeline.WebService.Tests.csproj -c Release --nologo",
"testProjects": [
"src/Timeline/__Tests/StellaOps.Timeline.Core.Tests/StellaOps.Timeline.Core.Tests.csproj",
"src/Timeline/__Tests/StellaOps.Timeline.WebService.Tests/StellaOps.Timeline.WebService.Tests.csproj"
],
"testsRun": 26,
"testsPassed": 26,
"testsFailed": 0,
"errors": [],
"warnings": [],
"runAtUtc": "2026-02-10T23:13:14Z"
}

View File

@@ -0,0 +1,73 @@
{
"type": "api",
"module": "timeline",
"feature": "timeline-replay-api",
"runId": "run-013",
"dateUtc": "2026-02-10T23:13:14Z",
"baseUrl": "https://127.1.0.24",
"transport": "curl -k (dev TLS, Eventing__UseInMemoryStore=true)",
"capturedAtUtc": "2026-02-10T23:12:37Z",
"requests": [
{
"description": "Replay initiation returns accepted operation",
"method": "POST",
"path": "/api/v1/timeline/qa-correlation-013/replay",
"expectedStatus": 202,
"actualStatus": 202,
"assertion": "response contains replayId and accepted location header",
"requestCapturedAtUtc": "2026-02-10T23:12:21Z",
"evidenceFile": "evidence/01-initiate-replay.txt",
"responseSnippet": "\"replayId\":\"5b05a21210ba4e7c\"",
"result": "pass"
},
{
"description": "Replay status endpoint remains reachable across requests",
"method": "GET",
"path": "/api/v1/timeline/replay/5b05a21210ba4e7c",
"expectedStatus": 200,
"actualStatus": 200,
"assertion": "status payload resolves initiated replay id and reports deterministic match for processed events",
"requestCapturedAtUtc": "2026-02-10T23:12:37Z",
"evidenceFile": "evidence/02-replay-status.txt",
"responseSnippet": "\"status\":\"COMPLETED\",\"deterministicMatch\":true",
"result": "pass"
},
{
"description": "Invalid replay mode is client-error validated",
"method": "POST",
"path": "/api/v1/timeline/qa-correlation-013/replay",
"expectedStatus": 400,
"actualStatus": 400,
"assertion": "invalid mode returns explicit validation message",
"requestCapturedAtUtc": "2026-02-10T23:11:57Z",
"evidenceFile": "evidence/03-invalid-mode.txt",
"responseSnippet": "\"Mode must be either 'dry-run' or 'verify'.\"",
"result": "pass"
},
{
"description": "Unknown replay status returns not found",
"method": "GET",
"path": "/api/v1/timeline/replay/does-not-exist-013",
"expectedStatus": 404,
"actualStatus": 404,
"assertion": "missing replay id does not return synthetic success",
"requestCapturedAtUtc": "2026-02-10T23:11:57Z",
"evidenceFile": "evidence/04-unknown-replay-status.txt",
"responseSnippet": "HTTP/1.1 404 Not Found",
"result": "pass"
},
{
"description": "Cancel endpoint rejects unknown replay id",
"method": "POST",
"path": "/api/v1/timeline/replay/does-not-exist-013/cancel",
"expectedStatus": 404,
"actualStatus": 404,
"assertion": "unknown replay cancel is rejected with 404",
"requestCapturedAtUtc": "2026-02-10T23:12:37Z",
"evidenceFile": "evidence/05-cancel-unknown.txt",
"responseSnippet": "HTTP/1.1 404 Not Found",
"result": "pass"
}
],
"verdict": "pass"
}