save checkpoint
This commit is contained in:
@@ -0,0 +1,37 @@
|
||||
# Outbox Pattern for Event Dispatch
|
||||
|
||||
## Module
|
||||
Scanner
|
||||
|
||||
## Status
|
||||
VERIFIED
|
||||
|
||||
## Description
|
||||
Outbox pattern for reliable event dispatch with idempotent processing, dispatch tracking, and retry logic.
|
||||
|
||||
## Implementation Details
|
||||
- **Event Dispatcher**:
|
||||
- `src/Scanner/StellaOps.Scanner.WebService/Services/IReportEventDispatcher.cs` - `IReportEventDispatcher` interface for reliable event dispatch with idempotent processing
|
||||
- `src/Scanner/StellaOps.Scanner.WebService/Services/ReportEventDispatcher.cs` - `ReportEventDispatcher` implements the outbox pattern for reliable event dispatch with dispatch tracking and retry logic
|
||||
- **OCI Attestation Publisher**:
|
||||
- `src/Scanner/StellaOps.Scanner.WebService/Services/IOciAttestationPublisher.cs` - `IOciAttestationPublisher` interface for publishing attestation events to OCI registries
|
||||
- **Report Endpoints**:
|
||||
- `src/Scanner/StellaOps.Scanner.WebService/Endpoints/ReportEndpoints.cs` - `ReportEndpoints` triggers event dispatch for completed scan reports
|
||||
|
||||
## E2E Test Plan
|
||||
- [ ] Complete a scan and verify the report event dispatcher reliably publishes scan completion events
|
||||
- [ ] Simulate a transient failure during event dispatch and verify the retry logic reprocesses the event
|
||||
- [ ] Verify idempotent processing ensures duplicate events are not dispatched for the same scan
|
||||
- [ ] Verify dispatch tracking records the status of each dispatched event (pending, dispatched, failed)
|
||||
- [ ] Verify the outbox pattern guarantees at-least-once delivery for scan report events
|
||||
|
||||
---
|
||||
|
||||
## Verification
|
||||
|
||||
| Check | Result |
|
||||
|-------|--------|
|
||||
| Tier 0 - Source files exist | PASS |
|
||||
| Tier 1 - Build + code review | PASS |
|
||||
| Tier 2 - Integration tests | PASS |
|
||||
| Verified | 2026-02-13T18:10:00Z |
|
||||
Reference in New Issue
Block a user