documentation cleanse, sprints work and planning. remaining non EF DAL migration to EF
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
{
|
||||
"approved": true,
|
||||
"reason": "Source parity and deterministic replay tests confirm ordering is caller-controlled and not enforced in runtime projector path.",
|
||||
"revisedRootCause": "Projection pipeline does not reorder out-of-order events by sequence before reduction, contrary to the feature claim."
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
{
|
||||
"type": "source",
|
||||
"module": "findings",
|
||||
"feature": "ledger-projections",
|
||||
"runId": "run-001",
|
||||
"featureFile": "docs/features/unchecked/findings/ledger-projections.md",
|
||||
"capturedAtUtc": "2026-02-11T19:20:18.5538983Z",
|
||||
"files": [
|
||||
{
|
||||
"path": "src/Findings/StellaOps.Findings.Ledger/Infrastructure/Projection/LedgerProjectionWorker.cs",
|
||||
"exists": true
|
||||
},
|
||||
{
|
||||
"path": "src/Findings/StellaOps.Findings.Ledger/Services/LedgerProjectionReducer.cs",
|
||||
"exists": true
|
||||
},
|
||||
{
|
||||
"path": "src/Findings/StellaOps.Findings.Ledger/Domain/ProjectionModels.cs",
|
||||
"exists": true
|
||||
},
|
||||
{
|
||||
"path": "src/Findings/StellaOps.Findings.Ledger/Hashing/ProjectionHashing.cs",
|
||||
"exists": true
|
||||
},
|
||||
{
|
||||
"path": "src/Findings/StellaOps.Findings.Ledger/Infrastructure/IFindingProjectionRepository.cs",
|
||||
"exists": true
|
||||
},
|
||||
{
|
||||
"path": "src/Findings/StellaOps.Findings.Ledger/Infrastructure/Postgres/PostgresFindingProjectionRepository.cs",
|
||||
"exists": true
|
||||
},
|
||||
{
|
||||
"path": "src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/LedgerProjectionReducerTests.cs",
|
||||
"exists": true
|
||||
},
|
||||
{
|
||||
"path": "src/Findings/StellaOps.Findings.Ledger.Tests/ProjectionHashingTests.cs",
|
||||
"exists": true
|
||||
}
|
||||
],
|
||||
"missingFiles": [
|
||||
|
||||
],
|
||||
"classDeclarations": [
|
||||
{
|
||||
"symbol": "LedgerProjectionWorker",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger\\Infrastructure\\Projection\\LedgerProjectionWorker.cs:16:public sealed class LedgerProjectionWorker : BackgroundService"
|
||||
},
|
||||
{
|
||||
"symbol": "LedgerProjectionReducer",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger\\Services\\LedgerProjectionReducer.cs:10:public static class LedgerProjectionReducer"
|
||||
},
|
||||
{
|
||||
"symbol": "ProjectionModels",
|
||||
"found": false,
|
||||
"evidence": {
|
||||
|
||||
}
|
||||
},
|
||||
{
|
||||
"symbol": "ProjectionHashing",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger\\Hashing\\ProjectionHashing.cs:7:public static class ProjectionHashing"
|
||||
},
|
||||
{
|
||||
"symbol": "IFindingProjectionRepository",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger\\Infrastructure\\IFindingProjectionRepository.cs:17:public interface IFindingProjectionRepository"
|
||||
},
|
||||
{
|
||||
"symbol": "PostgresFindingProjectionRepository",
|
||||
"found": true,
|
||||
"evidence": "src/Findings\\StellaOps.Findings.Ledger\\Infrastructure\\Postgres\\PostgresFindingProjectionRepository.cs:14:public sealed class PostgresFindingProjectionRepository : IFindingProjectionRepository"
|
||||
}
|
||||
],
|
||||
"sourceVerified": true,
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"type": "build_and_test",
|
||||
"capturedAtUtc": "2026-02-11T19:25:39.6286983Z",
|
||||
"commandsFile": "docs/qa/feature-checks/runs/findings/ledger-projections/run-001/tier1-commands.json",
|
||||
"projects": [
|
||||
"src/Findings/StellaOps.Findings.Ledger/StellaOps.Findings.Ledger.csproj",
|
||||
"src/Findings/StellaOps.Findings.Ledger.WebService/StellaOps.Findings.Ledger.WebService.csproj",
|
||||
"src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj",
|
||||
"src/Findings/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj"
|
||||
],
|
||||
"buildResult": "pass",
|
||||
"testResult": "pass",
|
||||
"warnings": [
|
||||
"Microsoft.Testing.Platform warning MTP0001 indicates legacy VSTest filter arguments are ignored in this environment; full test assemblies executed and passed."
|
||||
],
|
||||
"errors": [
|
||||
|
||||
],
|
||||
"verdict": "pass"
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
[
|
||||
{
|
||||
"name": "build-ledger-lib",
|
||||
"command": "dotnet build src/Findings/StellaOps.Findings.Ledger/StellaOps.Findings.Ledger.csproj -c Release --nologo",
|
||||
"exitCode": 0,
|
||||
"startedAtUtc": "2026-02-11T19:20:31.1149504Z",
|
||||
"finishedAtUtc": "2026-02-11T19:20:32.7621218Z",
|
||||
"summary": "Build succeeded.",
|
||||
"log": "docs\\qa\\feature-checks\\runs\\findings\\ledger-projections\\run-001\\build-ledger-lib.log"
|
||||
},
|
||||
{
|
||||
"name": "build-webservice",
|
||||
"command": "dotnet build src/Findings/StellaOps.Findings.Ledger.WebService/StellaOps.Findings.Ledger.WebService.csproj -c Release --nologo",
|
||||
"exitCode": 0,
|
||||
"startedAtUtc": "2026-02-11T19:20:32.8011417Z",
|
||||
"finishedAtUtc": "2026-02-11T19:20:39.7585976Z",
|
||||
"summary": "Build succeeded.",
|
||||
"log": "docs\\qa\\feature-checks\\runs\\findings\\ledger-projections\\run-001\\build-webservice.log"
|
||||
},
|
||||
{
|
||||
"name": "test-underscore-projection",
|
||||
"command": "dotnet test src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj -c Release --nologo --filter \"FullyQualifiedName~LedgerProjectionReducerTests\"",
|
||||
"exitCode": 0,
|
||||
"startedAtUtc": "2026-02-11T19:20:39.7635726Z",
|
||||
"finishedAtUtc": "2026-02-11T19:20:53.9309447Z",
|
||||
"summary": " Passed! - Failed: 0, Passed: 141, Skipped: 0, Total: 141, Duration: 2s 120ms - StellaOps.Findings.Ledger.Tests.dll (net10.0|x64)",
|
||||
"log": "docs\\qa\\feature-checks\\runs\\findings\\ledger-projections\\run-001\\test-underscore-projection.log"
|
||||
},
|
||||
{
|
||||
"name": "test-projection-hashing",
|
||||
"command": "dotnet test src/Findings/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj -c Release --nologo --filter \"FullyQualifiedName~ProjectionHashingTests\"",
|
||||
"exitCode": 0,
|
||||
"startedAtUtc": "2026-02-11T19:20:53.9371834Z",
|
||||
"finishedAtUtc": "2026-02-11T19:21:10.7752721Z",
|
||||
"summary": " Passed! - Failed: 0, Passed: 77, Skipped: 0, Total: 77, Duration: 5s 293ms - StellaOps.Findings.Ledger.Tests.dll (net10.0|x64)",
|
||||
"log": "docs\\qa\\feature-checks\\runs\\findings\\ledger-projections\\run-001\\test-projection-hashing.log"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,20 @@
|
||||
[
|
||||
{
|
||||
"name": "tier2-projection-reducer-behavior",
|
||||
"command": "dotnet test src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj -c Release --no-build --nologo --filter \"FullyQualifiedName~LedgerProjectionReducerTests\"",
|
||||
"exitCode": 0,
|
||||
"startedAtUtc": "2026-02-11T19:23:45.0831508Z",
|
||||
"finishedAtUtc": "2026-02-11T19:23:47.9529049Z",
|
||||
"summary": "Passed! - Failed: 0, Passed: 141, Skipped: 0, Total: 141, Duration: 1s 858ms - StellaOps.Findings.Ledger.Tests.dll (net10.0|x64)",
|
||||
"log": "docs\\qa\\feature-checks\\runs\\findings\\ledger-projections\\run-001\\tier2-projection-reducer-behavior.log"
|
||||
},
|
||||
{
|
||||
"name": "tier2-projection-replay-and-ordering",
|
||||
"command": "dotnet test src/Findings/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj -c Release --no-build --nologo --filter \"FullyQualifiedName~LedgerReplayDeterminismTests|FullyQualifiedName~FindingsLedgerIntegrationTests\"",
|
||||
"exitCode": 0,
|
||||
"startedAtUtc": "2026-02-11T19:23:52.5137514Z",
|
||||
"finishedAtUtc": "2026-02-11T19:23:57.9332333Z",
|
||||
"summary": "Passed! - Failed: 0, Passed: 77, Skipped: 0, Total: 77, Duration: 4s 399ms - StellaOps.Findings.Ledger.Tests.dll (net10.0|x64)",
|
||||
"log": "docs\\qa\\feature-checks\\runs\\findings\\ledger-projections\\run-001\\tier2-projection-replay-and-ordering.log"
|
||||
}
|
||||
]
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"type": "integration",
|
||||
"capturedAtUtc": "2026-02-11T19:25:50.1971698Z",
|
||||
"commandsFile": "docs/qa/feature-checks/runs/findings/ledger-projections/run-001/tier2-commands.json",
|
||||
"tests": [
|
||||
{
|
||||
"behaviorObserved": [
|
||||
"Reducer builds projection state, history entry, and action entry from finding events.",
|
||||
"Projection hash generation remains deterministic for equivalent projection content."
|
||||
],
|
||||
"result": "pass",
|
||||
"name": "projection-reducer-behavior",
|
||||
"log": "tier2-projection-reducer-behavior.log",
|
||||
"behaviorGap": null
|
||||
},
|
||||
{
|
||||
"behaviorObserved": [
|
||||
"Replay/integration test suite validates deterministic projection for consistently ordered sequences.",
|
||||
"Contract/integration surfaces execute successfully under module test harness."
|
||||
],
|
||||
"result": "pass",
|
||||
"name": "projection-replay-and-ordering",
|
||||
"log": "tier2-projection-replay-and-ordering.log",
|
||||
"behaviorGap": "Out-of-order delivery handling claimed by feature is not implemented in runtime reducer/worker logic."
|
||||
}
|
||||
],
|
||||
"behaviorVerified": [
|
||||
"Projection reduction and deterministic cycle hashing behavior execute successfully in Tier 2 integration surfaces."
|
||||
],
|
||||
"behaviorMissing": [
|
||||
"Feature claim \"projection reducer correctly handles out-of-order event delivery by ordering events by sequence\" is not satisfied: runtime flow consumes batch order directly (LedgerProjectionWorker foreach over batch) and applies events without sequence reordering before LedgerProjectionReducer.Reduce."
|
||||
],
|
||||
"verdict": "fail"
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
{
|
||||
"type": "integration",
|
||||
"capturedAtUtc": "2026-02-11T19:25:50.1971698Z",
|
||||
"commandsFile": "docs/qa/feature-checks/runs/findings/ledger-projections/run-001/tier2-commands.json",
|
||||
"tests": [
|
||||
{
|
||||
"behaviorObserved": [
|
||||
"Reducer builds projection state, history entry, and action entry from finding events.",
|
||||
"Projection hash generation remains deterministic for equivalent projection content."
|
||||
],
|
||||
"result": "pass",
|
||||
"name": "projection-reducer-behavior",
|
||||
"log": "tier2-projection-reducer-behavior.log",
|
||||
"behaviorGap": null
|
||||
},
|
||||
{
|
||||
"behaviorObserved": [
|
||||
"Replay/integration test suite validates deterministic projection for consistently ordered sequences.",
|
||||
"Contract/integration surfaces execute successfully under module test harness."
|
||||
],
|
||||
"result": "pass",
|
||||
"name": "projection-replay-and-ordering",
|
||||
"log": "tier2-projection-replay-and-ordering.log",
|
||||
"behaviorGap": "Out-of-order delivery handling claimed by feature is not implemented in runtime reducer/worker logic."
|
||||
}
|
||||
],
|
||||
"behaviorVerified": [
|
||||
"Projection reduction and deterministic cycle hashing behavior execute successfully in Tier 2 integration surfaces."
|
||||
],
|
||||
"behaviorMissing": [
|
||||
"Feature claim \"projection reducer correctly handles out-of-order event delivery by ordering events by sequence\" is not satisfied: runtime flow consumes batch order directly (LedgerProjectionWorker foreach over batch) and applies events without sequence reordering before LedgerProjectionReducer.Reduce."
|
||||
],
|
||||
"verdict": "fail"
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
{
|
||||
"rootCause": "Projection pipeline does not reorder out-of-order events by sequence before reduction, contrary to the feature claim.",
|
||||
"category": "missing_code",
|
||||
"affectedFiles": [
|
||||
"src/Findings/StellaOps.Findings.Ledger/Infrastructure/Projection/LedgerProjectionWorker.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger/Services/LedgerProjectionReducer.cs",
|
||||
"src/Findings/StellaOps.Findings.Ledger.Tests/LedgerReplayDeterminismTests.cs"
|
||||
],
|
||||
"confidence": 0.96
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"tier": 0,
|
||||
"feature": "ledger-projections",
|
||||
"timestamp": "2026-02-15T20:55:00.000Z",
|
||||
"sourceFiles": [
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Infrastructure/Projection/LedgerProjectionWorker.cs", "exists": true},
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Services/LedgerProjectionReducer.cs", "exists": true},
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Hashing/ProjectionHashing.cs", "exists": true},
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Infrastructure/IFindingProjectionRepository.cs", "exists": true},
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Infrastructure/Postgres/PostgresFindingProjectionRepository.cs", "exists": true},
|
||||
{"path": "src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/LedgerProjectionReducerTests.cs", "exists": true}
|
||||
],
|
||||
"missingRatio": 0.0,
|
||||
"sourceVerified": true
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"tier": 2,
|
||||
"feature": "ledger-projections",
|
||||
"timestamp": "2026-02-15T20:55:00.000Z",
|
||||
"testProject": "src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj",
|
||||
"filter": "All tests (MTP runner ignores VSTest --filter; all 141 ran). Relevant: LedgerProjectionReducerTests (3 tests).",
|
||||
"testsRun": 141,
|
||||
"testsPassed": 141,
|
||||
"testsFailed": 0,
|
||||
"rawOutput": "Run tests: StellaOps.Findings.Ledger.Tests.dll [net10.0|x64]\nPassed! - Failed: 0, Passed: 141, Skipped: 0, Total: 141, Duration: 2s 891ms",
|
||||
"assertionQuality": "deep",
|
||||
"codeReviewFindings": {
|
||||
"LedgerProjectionReducer": "FULLY IMPLEMENTED static reducer. Reduce() takes a LedgerEventRecord, optional current FindingProjection, and PolicyEvaluationResult. Correctly determines status, severity, risk scores, merges labels (add/remove), determines explain references, creates history entries and triage action entries. Computes deterministic CycleHash via ProjectionHashing.",
|
||||
"LedgerProjectionWorker": "FULLY IMPLEMENTED BackgroundService. ExecuteAsync loads checkpoint, reads event batches, applies each event via ApplyAsync (get current projection -> evaluate policy -> reduce -> upsert projection + insert history + insert action + save checkpoint). Includes telemetry, incident diagnostics, error handling, and batch metrics.",
|
||||
"OutOfOrderHandling": "CONFIRMED MISSING. LedgerProjectionWorker iterates 'foreach (var record in batch)' at line 86 without sorting by sequence number. The batch is processed in received order. LedgerProjectionReducer.Reduce is a pure function that processes one event at a time and does not perform ordering. The feature claim for 'out-of-order event delivery by ordering events by sequence number before applying' is NOT satisfied.",
|
||||
"LedgerProjectionReducerTests": "3 tests with DEEP assertions: (1) Reduce_WhenFindingCreated verifies status, severity, labels, explainRef, rationale, cycleHash, and hash determinism. (2) Reduce_StatusChange verifies status transition, comment extraction, action entry creation. (3) Reduce_LabelUpdates verifies label merge (add/update/remove). All use FluentAssertions with specific value checks.",
|
||||
"ProjectionHashing": "Computes deterministic cycle hashes for projection state, enabling replay consistency verification.",
|
||||
"PostgresFindingProjectionRepository": "Full Postgres persistence implementation for projections with upsert, checkpoint, history, and action operations."
|
||||
},
|
||||
"classification": "not_implemented",
|
||||
"classificationRationale": "Previous run-001 classification of not_implemented is RECONSIDERED. The projection pipeline (worker + reducer + repository + hashing) is substantially implemented and well-tested. The ONLY gap is out-of-order event handling: LedgerProjectionWorker processes events in batch order without sequence reordering. All other projection claims (materialize events to read models, deterministic hashing, catch-up from checkpoint, policy evaluation) are implemented. However, since the feature file specifically claims out-of-order handling and this is not satisfied, the not_implemented classification is borderline. RECOMMEND reclassifying to 'partially_implemented' and moving feature file back to the appropriate location, since ~80% of the feature surface is functional.",
|
||||
"reclassificationWarranted": true,
|
||||
"suggestedStatus": "not_implemented",
|
||||
"notes": "The projection system is the most complete of the 4 investigated features. The reducer is well-tested with deep assertions. The worker correctly implements the projection loop with checkpoint management, telemetry, and error handling. The single gap (out-of-order sequence reordering before reduce) is a specific claimed behavior that is not enforced. If out-of-order handling were removed from the feature claims, this would pass. Current classification as not_implemented is slightly harsh but technically correct per the feature file's own E2E test plan item 4."
|
||||
}
|
||||
Reference in New Issue
Block a user