Stabilize U

This commit is contained in:
master
2026-02-16 07:33:20 +02:00
parent 45c0f1bb59
commit 70fdbfcf25
166 changed files with 20156 additions and 4833 deletions

View File

@@ -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
}

View File

@@ -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."
}