Stabilize U
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
{
|
||||
"tier": 0,
|
||||
"feature": "admin-audit-trails",
|
||||
"timestamp": "2026-02-15T20:55:00.000Z",
|
||||
"sourceFiles": [
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Services/DecisionService.cs", "exists": true},
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Services/IDecisionService.cs", "exists": true},
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Services/IAuditService.cs", "exists": true},
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Services/IDecisionHook.cs", "exists": true},
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Services/LedgerEventWriteService.cs", "exists": true},
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Domain/DecisionModels.cs", "exists": true},
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Observability/LedgerTelemetry.cs", "exists": true},
|
||||
{"path": "src/Findings/StellaOps.Findings.Ledger/Observability/LedgerTimeline.cs", "exists": true},
|
||||
{"path": "src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/LedgerEventWriteServiceTests.cs", "exists": true},
|
||||
{"path": "src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/Integration/EvidenceDecisionApiIntegrationTests.cs", "exists": true},
|
||||
{"path": "src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/FindingWorkflowServiceTests.cs", "exists": true}
|
||||
],
|
||||
"missingRatio": 0.0,
|
||||
"sourceVerified": true
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
{
|
||||
"tier": 2,
|
||||
"feature": "admin-audit-trails",
|
||||
"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)",
|
||||
"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": "adequate",
|
||||
"codeReviewFindings": {
|
||||
"DecisionService_RecordAsync": "Creates LedgerEventDraft with SequenceNumber=0 and delegates to LedgerEventWriteService.AppendAsync. LedgerEventWriteService expects strict sequence ordering. However DecisionService always passes 0, relying on auto-sequence at write time. RecordAsync properly validates, builds canonical envelope, and fires hooks. FUNCTIONAL for single-event chains.",
|
||||
"DecisionService_GetHistoryAsync": "Returns Array.Empty<DecisionEvent>(). This is a STUB - audit timeline retrieval is NOT implemented.",
|
||||
"IAuditService": "Interface declares GetTimelineAsync but NO implementation class was found in the codebase. Pure interface stub.",
|
||||
"LedgerEventWriteServiceTests": "3 tests verify hash computation, sequence conflict detection, and idempotent append. All assert actual computed values (hashes, statuses, errors). DEEP assertion quality.",
|
||||
"EvidenceDecisionApiIntegrationTests": "8 tests exercise HTTP endpoints but use StatusCode.Should().BeOneOf(OK, Unauthorized, NotFound, BadRequest) patterns. SHALLOW - these tests pass regardless of actual behavior because they accept any status code.",
|
||||
"FindingWorkflowServiceTests": "3 tests verify workflow operations (assign, accept risk, comment) with deep assertions on payload structure, event types, and status values. DEEP assertion quality.",
|
||||
"RuntimeWiring": "Program.cs registers InMemoryFindingRepository (returns null for all queries) and NullEvidenceRepository (returns null). Evidence graph builder and admin audit views are scaffolded but backed by empty data sources."
|
||||
},
|
||||
"classification": "not_implemented",
|
||||
"classificationRationale": "Previous run-001 classification of not_implemented is CONFIRMED. Key gaps remain: (1) DecisionService.GetHistoryAsync is a stub returning empty array, (2) IAuditService has no implementation, (3) Runtime DI uses NullEvidenceRepository and InMemoryFindingRepository returning null/empty for all queries. The append-only write path works (LedgerEventWriteService is well-tested) but the read-side audit trail (history, timeline, evidence graph) is not wired. Integration tests use shallow StatusCode.Should().BeOneOf() patterns that accept any response.",
|
||||
"reclassificationWarranted": false,
|
||||
"notes": "The write path (DecisionService.RecordAsync -> LedgerEventWriteService.AppendAsync) IS functional and well-tested. The read path for audit trails is entirely stubbed. Classification should remain not_implemented until GetHistoryAsync, IAuditService implementation, and real repository wiring are completed."
|
||||
}
|
||||
Reference in New Issue
Block a user