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": "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."
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
10.0.200-preview.0.26103.119
|
||||
@@ -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:
|
||||
|
||||
@@ -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
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -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.
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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": [
|
||||
|
||||
]
|
||||
}
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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