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 @@
{
"approved": true,
"reason": "Code-path review and run-001 evidence confirm the triage findings and demonstrate user-surface audit gaps despite green build/test gates.",
"revisedRootCause": "Missing runtime parity for decision and evidence/audit data paths in Findings Ledger WebService."
}

View File

@@ -0,0 +1 @@
10.0.200-preview.0.26103.119

View File

@@ -0,0 +1,34 @@
Checked files:
src/Findings/StellaOps.Findings.Ledger/Services/LedgerEventWriteService.cs
src/Findings/StellaOps.Findings.Ledger.WebService/Services/EvidenceGraphBuilder.cs
src/Findings/StellaOps.Findings.Ledger/Services/AttestationPointerService.cs
src/Findings/StellaOps.Findings.Ledger/Infrastructure/Attestation/AttestationStatusCalculator.cs
src/Findings/StellaOps.Findings.Ledger/Services/DecisionService.cs
src/Findings/StellaOps.Findings.Ledger/Services/IDecisionHook.cs
src/Findings/StellaOps.Findings.Ledger.Tests/Incident/LedgerIncidentCoordinatorTests.cs
src/Findings/StellaOps.Findings.Ledger/Observability/LedgerTelemetry.cs
src/Findings/StellaOps.Findings.Ledger/Observability/LedgerTimeline.cs
src/Findings/StellaOps.Findings.Ledger.Tests/FindingsLedgerIntegrationTests.cs
src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/LedgerEventWriteServiceTests.cs
src/Findings/StellaOps.Findings.Ledger.Tests/Services/LedgerEventWriteServiceIncidentTests.cs
src/Findings/StellaOps.Findings.Ledger.Tests/Observability/LedgerTelemetryTests.cs
src/Findings/StellaOps.Findings.Ledger.Tests/Observability/LedgerTimelineTests.cs
Found:
src/Findings/StellaOps.Findings.Ledger/Services/LedgerEventWriteService.cs
src/Findings/StellaOps.Findings.Ledger.WebService/Services/EvidenceGraphBuilder.cs
src/Findings/StellaOps.Findings.Ledger/Services/AttestationPointerService.cs
src/Findings/StellaOps.Findings.Ledger/Infrastructure/Attestation/AttestationStatusCalculator.cs
src/Findings/StellaOps.Findings.Ledger/Services/DecisionService.cs
src/Findings/StellaOps.Findings.Ledger/Services/IDecisionHook.cs
src/Findings/StellaOps.Findings.Ledger.Tests/Incident/LedgerIncidentCoordinatorTests.cs
src/Findings/StellaOps.Findings.Ledger/Observability/LedgerTelemetry.cs
src/Findings/StellaOps.Findings.Ledger/Observability/LedgerTimeline.cs
src/Findings/StellaOps.Findings.Ledger.Tests/FindingsLedgerIntegrationTests.cs
src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/LedgerEventWriteServiceTests.cs
src/Findings/StellaOps.Findings.Ledger.Tests/Services/LedgerEventWriteServiceIncidentTests.cs
src/Findings/StellaOps.Findings.Ledger.Tests/Observability/LedgerTelemetryTests.cs
src/Findings/StellaOps.Findings.Ledger.Tests/Observability/LedgerTimelineTests.cs
Missing:

View File

@@ -0,0 +1,41 @@
class LedgerEventWriteService
src/Findings\StellaOps.Findings.Ledger.Tests\Services\LedgerEventWriteServiceIncidentTests.cs:16:public class LedgerEventWriteServiceIncidentTests src/Findings\__Tests\StellaOps.Findings.Ledger.Tests\LedgerEventWriteServiceTests.cs:16:public sealed class LedgerEventWriteServiceTests src/Findings\StellaOps.Findings.Ledger\Services\LedgerEventWriteService.cs:18:public sealed class LedgerEventWriteService : ILedgerEventWriteService
class EvidenceGraphBuilder
src/Findings\StellaOps.Findings.Ledger.WebService\Services\EvidenceGraphBuilder.cs:10:public sealed class EvidenceGraphBuilder : IEvidenceGraphBuilder src/Findings\__Tests\StellaOps.Findings.Ledger.Tests\Services\EvidenceGraphBuilderTests.cs:9:public class EvidenceGraphBuilderTests
class AttestationPointerService
src/Findings\StellaOps.Findings.Ledger.Tests\Attestation\AttestationPointerServiceTests.cs:11:public class AttestationPointerServiceTests src/Findings\StellaOps.Findings.Ledger\Services\AttestationPointerService.cs:14:public sealed class AttestationPointerService
class AttestationStatusCalculator
src/Findings\__Tests\StellaOps.Findings.Ledger.Tests\AttestationStatusCalculatorTests.cs:7:public class AttestationStatusCalculatorTests src/Findings\StellaOps.Findings.Ledger\Infrastructure\Attestation\AttestationStatusCalculator.cs:6:public static class AttestationStatusCalculator
class DecisionService
src/Findings\StellaOps.Findings.Ledger\Services\DecisionService.cs:14:public sealed class DecisionService : IDecisionService
interface IDecisionHook
src/Findings\StellaOps.Findings.Ledger\Services\IDecisionHook.cs:17:public interface IDecisionHook
class LedgerTelemetry
src/Findings\StellaOps.Findings.Ledger\Observability\LedgerTelemetry.cs:11:internal static class LedgerTelemetry src/Findings\StellaOps.Findings.Ledger.Tests\Observability\LedgerTelemetryTests.cs:10:public class LedgerTelemetryTests
class LedgerTimeline
src/Findings\StellaOps.Findings.Ledger\Observability\LedgerTimeline.cs:15:internal static class LedgerTimeline src/Findings\StellaOps.Findings.Ledger.Tests\Observability\LedgerTimelineTests.cs:11:public class LedgerTimelineTests
class FindingsLedgerIntegrationTests
src/Findings\StellaOps.Findings.Ledger.Tests\FindingsLedgerIntegrationTests.cs:20:public sealed class FindingsLedgerIntegrationTests
class LedgerEventWriteServiceTests
src/Findings\__Tests\StellaOps.Findings.Ledger.Tests\LedgerEventWriteServiceTests.cs:16:public sealed class LedgerEventWriteServiceTests
class LedgerEventWriteServiceIncidentTests
src/Findings\StellaOps.Findings.Ledger.Tests\Services\LedgerEventWriteServiceIncidentTests.cs:16:public class LedgerEventWriteServiceIncidentTests
class LedgerTelemetryTests
src/Findings\StellaOps.Findings.Ledger.Tests\Observability\LedgerTelemetryTests.cs:10:public class LedgerTelemetryTests
class LedgerTimelineTests
src/Findings\StellaOps.Findings.Ledger.Tests\Observability\LedgerTimelineTests.cs:11:public class LedgerTimelineTests
class LedgerIncidentCoordinatorTests
src/Findings\StellaOps.Findings.Ledger.Tests\Incident\LedgerIncidentCoordinatorTests.cs:10:public class LedgerIncidentCoordinatorTests

View File

@@ -0,0 +1,24 @@
Claim parity review summary for admin-audit-trails (run-001):
1) Decision event append sequence contract mismatch:
- File: src/Findings/StellaOps.Findings.Ledger/Services/DecisionService.cs
- Observation: RecordAsync creates LedgerEventDraft with SequenceNumber: 0 and comment "Will be determined by write service".
- Counter-evidence: src/Findings/StellaOps.Findings.Ledger/Services/LedgerEventWriteService.cs enforces sequence == expectedSequence (>=1), returning conflict on mismatch.
- Impact: Decision recording cannot reliably append as implemented; audit timeline behavior for decisions is not fully operational.
2) Decision history retrieval is stubbed:
- File: src/Findings/StellaOps.Findings.Ledger/Services/DecisionService.cs
- Observation: GetHistoryAsync returns Array.Empty<DecisionEvent>() with "For now" / additional repository support TODO comments.
- Impact: Audit timeline retrieval endpoint does not provide persisted decision timeline behavior.
3) Runtime evidence graph data sources are null stubs:
- File: src/Findings/StellaOps.Findings.Ledger.WebService/Program.cs
- Observation: DI registers IEvidenceRepository as NullEvidenceRepository and IFindingRepository as InMemoryFindingRepository.
- File: src/Findings/StellaOps.Findings.Ledger.WebService/Services/StubEndpointServices.cs
- Observation: NullEvidenceRepository returns null and InMemoryFindingRepository returns no findings.
- Impact: User-surface evidence graph and related audit views are scaffolded but not backed by live persistence data.
Conclusion:
- Tier 0 source presence and Tier 1 build/tests pass.
- Tier 2 targeted tests execute successfully, but runtime claim parity for comprehensive admin audit trails is incomplete.
- Terminal classification: not_implemented.

View File

@@ -0,0 +1,40 @@
{
"type": "source",
"capturedAtUtc": "2026-02-11T18:20:11.9327724Z",
"filesChecked": [
"src/Findings/StellaOps.Findings.Ledger/Services/LedgerEventWriteService.cs",
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/EvidenceGraphBuilder.cs",
"src/Findings/StellaOps.Findings.Ledger/Services/AttestationPointerService.cs",
"src/Findings/StellaOps.Findings.Ledger/Infrastructure/Attestation/AttestationStatusCalculator.cs",
"src/Findings/StellaOps.Findings.Ledger/Services/DecisionService.cs",
"src/Findings/StellaOps.Findings.Ledger/Services/IDecisionHook.cs",
"src/Findings/StellaOps.Findings.Ledger.Tests/Incident/LedgerIncidentCoordinatorTests.cs",
"src/Findings/StellaOps.Findings.Ledger/Observability/LedgerTelemetry.cs",
"src/Findings/StellaOps.Findings.Ledger/Observability/LedgerTimeline.cs",
"src/Findings/StellaOps.Findings.Ledger.Tests/FindingsLedgerIntegrationTests.cs",
"src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/LedgerEventWriteServiceTests.cs",
"src/Findings/StellaOps.Findings.Ledger.Tests/Services/LedgerEventWriteServiceIncidentTests.cs",
"src/Findings/StellaOps.Findings.Ledger.Tests/Observability/LedgerTelemetryTests.cs",
"src/Findings/StellaOps.Findings.Ledger.Tests/Observability/LedgerTimelineTests.cs"
],
"found": [
"src/Findings/StellaOps.Findings.Ledger/Services/LedgerEventWriteService.cs",
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/EvidenceGraphBuilder.cs",
"src/Findings/StellaOps.Findings.Ledger/Services/AttestationPointerService.cs",
"src/Findings/StellaOps.Findings.Ledger/Infrastructure/Attestation/AttestationStatusCalculator.cs",
"src/Findings/StellaOps.Findings.Ledger/Services/DecisionService.cs",
"src/Findings/StellaOps.Findings.Ledger/Services/IDecisionHook.cs",
"src/Findings/StellaOps.Findings.Ledger.Tests/Incident/LedgerIncidentCoordinatorTests.cs",
"src/Findings/StellaOps.Findings.Ledger/Observability/LedgerTelemetry.cs",
"src/Findings/StellaOps.Findings.Ledger/Observability/LedgerTimeline.cs",
"src/Findings/StellaOps.Findings.Ledger.Tests/FindingsLedgerIntegrationTests.cs",
"src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/LedgerEventWriteServiceTests.cs",
"src/Findings/StellaOps.Findings.Ledger.Tests/Services/LedgerEventWriteServiceIncidentTests.cs",
"src/Findings/StellaOps.Findings.Ledger.Tests/Observability/LedgerTelemetryTests.cs",
"src/Findings/StellaOps.Findings.Ledger.Tests/Observability/LedgerTimelineTests.cs"
],
"missing": [
],
"verdict": "pass"
}

View File

@@ -0,0 +1,41 @@
{
"type": "build_and_test",
"capturedAtUtc": "2026-02-11T18:20:34.7794325Z",
"projects": [
"src/Findings/StellaOps.Findings.Ledger.WebService/StellaOps.Findings.Ledger.WebService.csproj",
"src/Findings/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj",
"src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj"
],
"buildResult": "pass",
"testResult": "pass",
"commands": [
{
"exitCode": 0,
"command": "dotnet build src/Findings/StellaOps.Findings.Ledger.WebService/StellaOps.Findings.Ledger.WebService.csproj -c Release",
"log": "evidence/02-tier1-build-webservice.txt"
},
{
"exitCode": 0,
"command": "dotnet build src/Findings/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj -c Release",
"log": "evidence/02a-tier1-build-ledger-tests.txt"
},
{
"exitCode": 0,
"command": "dotnet build src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj -c Release",
"log": "evidence/02b-tier1-build-underscore-tests.txt"
},
{
"exitCode": 0,
"command": "dotnet test src/Findings/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj -c Release --filter \"FullyQualifiedName~FindingsLedgerIntegrationTests|FullyQualifiedName~LedgerEventWriteServiceIncidentTests|FullyQualifiedName~LedgerTelemetryTests|FullyQualifiedName~LedgerTimelineTests|FullyQualifiedName~LedgerIncidentCoordinatorTests\"",
"log": "evidence/03-tier1-test-ledger-focused.txt"
},
{
"exitCode": 0,
"command": "dotnet test src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj -c Release --filter \"FullyQualifiedName~LedgerEventWriteServiceTests|FullyQualifiedName~EvidenceGraphBuilderTests\"",
"log": "evidence/03a-tier1-test-underscore-focused.txt"
}
],
"errors": [
]
}

View File

@@ -0,0 +1,28 @@
{
"type": "integration",
"capturedAtUtc": "2026-02-11T18:24:14.8609549Z",
"commands": [
{
"description": "Append-only ledger writes, evidence graph construction, and decision API positive/negative integration checks",
"actualExitCode": 0,
"expectedExitCode": 0,
"log": "evidence/04-tier2-tests-api-and-service-behavior.txt",
"command": "dotnet test src/Findings/__Tests/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj -c Release --filter \"FullyQualifiedName~LedgerEventWriteServiceTests|FullyQualifiedName~EvidenceGraphBuilderTests|FullyQualifiedName~EvidenceDecisionApiIntegrationTests\""
},
{
"description": "Incident conflict snapshots plus telemetry/timeline emission checks",
"actualExitCode": 0,
"expectedExitCode": 0,
"log": "evidence/04a-tier2-tests-incident-telemetry-timeline.txt",
"command": "dotnet test src/Findings/StellaOps.Findings.Ledger.Tests/StellaOps.Findings.Ledger.Tests.csproj -c Release --filter \"FullyQualifiedName~LedgerEventWriteServiceIncidentTests|FullyQualifiedName~LedgerIncidentCoordinatorTests|FullyQualifiedName~LedgerTelemetryTests|FullyQualifiedName~LedgerTimelineTests\""
}
],
"behaviorVerified": [
"Append-only ledger write path computes hashes and rejects out-of-order sequence conflicts.",
"Evidence graph builder returns complete node/edge graph and handles missing findings with null response.",
"Decision API integration covers valid and invalid request paths (including bad rationale and malformed payload).",
"Incident coordinator emits incident mode and lag trace timeline events.",
"Ledger telemetry and timeline components emit structured tags/events for audit operations."
],
"verdict": "pass"
}

View File

@@ -0,0 +1,11 @@
{
"rootCause": "Admin audit trail runtime behavior is only partially wired: decision append sequence contract mismatch, decision history query stub, and null/in-memory evidence repositories in active WebService DI.",
"category": "missing_code",
"affectedFiles": [
"src/Findings/StellaOps.Findings.Ledger/Services/DecisionService.cs",
"src/Findings/StellaOps.Findings.Ledger/Services/LedgerEventWriteService.cs",
"src/Findings/StellaOps.Findings.Ledger.WebService/Program.cs",
"src/Findings/StellaOps.Findings.Ledger.WebService/Services/StubEndpointServices.cs"
],
"confidence": 0.96
}

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