29 lines
2.2 KiB
Markdown
29 lines
2.2 KiB
Markdown
# Reachability Fallback Mechanisms
|
|
|
|
## Module
|
|
ReachGraph
|
|
|
|
## Status
|
|
IMPLEMENTED
|
|
|
|
## Description
|
|
ReachGraph service with slice and replay capabilities for reachability analysis with deterministic replay support.
|
|
|
|
## Implementation Details
|
|
- **IReachGraphStoreService**: `src/ReachGraph/StellaOps.ReachGraph.WebService/Services/IReachGraphStoreService.cs` -- `UpsertAsync`, `GetByDigestAsync`, `ListByArtifactAsync`, `DeleteAsync` for graph storage with fallback
|
|
- **ReachGraphStoreService**: `src/ReachGraph/StellaOps.ReachGraph.WebService/Services/ReachGraphStoreService.cs` -- coordinates between `IReachGraphRepository` (persistence), `IReachGraphCache` (caching), and `IReachGraphSignerService` (signing); supports digest-based idempotent upserts
|
|
- **IReachGraphSliceService**: `src/ReachGraph/StellaOps.ReachGraph.WebService/Services/IReachGraphSliceService.cs` -- multi-dimensional slice queries (by-package, by-CVE, by-entrypoint, by-file) with configurable depth and direction
|
|
- **ReachGraphSliceService**: `src/ReachGraph/StellaOps.ReachGraph.WebService/Services/ReachGraphSliceService.cs` -- cached slice computation; falls back to full graph loading when cache misses
|
|
- **IReachGraphReplayService**: `src/ReachGraph/StellaOps.ReachGraph.WebService/Services/IReachGraphReplayService.cs` -- deterministic replay as fallback verification mechanism
|
|
- **ReachGraphReplayService**: `src/ReachGraph/StellaOps.ReachGraph.WebService/Services/ReachGraphReplayService.cs` -- replays computation from SBOM, VEX, callgraph, and runtime facts inputs; compares computed digest against expected
|
|
- **PaginationService**: `src/ReachGraph/StellaOps.ReachGraph.WebService/Services/PaginationService.cs` -- cursor-based pagination for large result sets
|
|
- **Tests**: `src/ReachGraph/__Tests/StellaOps.ReachGraph.WebService.Tests/ReachGraphApiIntegrationTests.cs`
|
|
- **Source**: Feature matrix scan
|
|
|
|
## E2E Test Plan
|
|
- [ ] Verify graph retrieval falls back from cache to database when cache misses
|
|
- [ ] Test slice queries degrade gracefully when full graph is not available
|
|
- [ ] Verify replay verification provides fallback for determinism validation
|
|
- [ ] Test idempotent upsert handles concurrent writes without data loss
|
|
- [ ] Verify pagination handles large result sets with cursor-based navigation
|