Files
git.stella-ops.org/docs/features/checked/graph/graph-analytics-engine.md
2026-02-12 10:27:23 +02:00

125 lines
8.0 KiB
Markdown

# Graph Analytics Engine
## Module
Graph
## Status
VERIFIED
## Description
Graph analytics with engine, pipeline, DI extensions, and Postgres persistence for analytics results.
## Implementation Details
- **Analytics engine**: `src/Graph/StellaOps.Graph.Indexer/Analytics/GraphAnalyticsEngine.cs` -- core graph analytics computation engine
- **Analytics pipeline**: `src/Graph/StellaOps.Graph.Indexer/Analytics/GraphAnalyticsPipeline.cs` -- multi-stage analytics pipeline orchestration
- **Hosted service**: `src/Graph/StellaOps.Graph.Indexer/Analytics/GraphAnalyticsHostedService.cs` -- background service running analytics on schedule
- **Analytics types**: `src/Graph/StellaOps.Graph.Indexer/Analytics/GraphAnalyticsTypes.cs` -- clustering, centrality, and analytics result types
- **Metrics**: `src/Graph/StellaOps.Graph.Indexer/Analytics/GraphAnalyticsMetrics.cs` -- Prometheus-compatible analytics execution metrics
- **Options**: `src/Graph/StellaOps.Graph.Indexer/Analytics/GraphAnalyticsOptions.cs` -- configurable analytics parameters
- **Writer options**: `src/Graph/StellaOps.Graph.Indexer/Analytics/GraphAnalyticsWriterOptions.cs` -- result persistence configuration
- **Overlay exporter**: `src/Graph/StellaOps.Graph.Indexer/Analytics/GraphOverlayExporter.cs` -- exports analytics results as graph overlays
- **In-memory writer**: `src/Graph/StellaOps.Graph.Indexer/Analytics/InMemoryGraphAnalyticsWriter.cs` -- test analytics writer
- **In-memory snapshot**: `src/Graph/StellaOps.Graph.Indexer/Analytics/InMemoryGraphSnapshotProvider.cs` -- test snapshot provider
- **DI extensions**: `src/Graph/StellaOps.Graph.Indexer/Analytics/GraphAnalyticsServiceCollectionExtensions.cs` -- DI registration
- **Postgres persistence**: `src/Graph/__Libraries/StellaOps.Graph.Indexer.Persistence/Postgres/Repositories/PostgresGraphAnalyticsWriter.cs` -- PostgreSQL analytics result storage
- **Tests**: `src/Graph/__Tests/StellaOps.Graph.Indexer.Tests/GraphAnalyticsEngineTests.cs`, `GraphAnalyticsPipelineTests.cs`, `GraphOverlayExporterTests.cs`, `GraphAnalyticsTestData.cs`
- **Source**: Feature matrix scan
## E2E Test Plan
- [x] Verify analytics engine computes clustering and centrality scores
- [x] Test pipeline executes multi-stage analytics in correct order
- [x] Verify hosted service runs analytics on configured schedule
- [x] Test Postgres persistence stores analytics results correctly
- [x] Verify overlay exporter generates valid overlay data from analytics
## Verification
- **Run ID**: run-001
- **Date**: 2026-02-09T16:00:00Z
- **Tier**: 1 (Build + Test)
- **Result**: PASS
- **Evidence**: Graph.Indexer.Tests 37/37 pass, Graph.Core.Tests 19/19 pass. Persistence tests skipped (Docker unavailable, env_issue). All source files verified (16/16).
### Tier 2 Recheck (Behavioral Integration)
- **Run ID**: run-002
- **Date**: 2026-02-10T11:41:00Z
- **Tier**: 2 (Behavioral integration verification)
- **Result**: PASS
- **Evidence**: Re-ran indexer and persistence suites (`Graph.Indexer.Tests` 37/37, `Graph.Indexer.Persistence.Tests` 17/17) including Postgres-backed analytics persistence paths. Artifact: `docs/qa/feature-checks/runs/graph/graph-analytics-engine/run-002/tier2-integration-check.json`.
### Tier 2 Recheck (Docker-Restored Persistence Replay)
- **Run ID**: run-003
- **Date**: 2026-02-10T16:37:52Z
- **Tier**: 2 (Behavioral integration verification)
- **Result**: PASS
- **Evidence**: Replayed indexer + persistence suites with Docker available (Graph.Indexer.Tests 37/37, Graph.Indexer.Persistence.Tests 17/17). Artifact: `docs/qa/feature-checks/runs/graph/graph-analytics-engine/run-003/tier2-integration-check.json`.
## Recheck (Run-005)
- **Verified**: 2026-02-10
- **Method**: Tier 2d deterministic integration replay.
- **Tests**: PASS (`src/Graph/__Tests/StellaOps.Graph.Indexer.Tests`: 37/37; `src/Graph/__Tests/StellaOps.Graph.Indexer.Persistence.Tests`: 17/17).
- **Tier 2 Evidence**: `docs/qa/feature-checks/runs/graph/graph-analytics-engine/run-005/tier2-integration-check.json`
- **Outcome**: Analytics pipeline and persistence-backed behaviors remain healthy.
## Recheck (Run-006)
- **Verified**: 2026-02-10
- **Method**: Tier 2 replay validated via Graph API/indexer suites.
- **Tests**: PASS (src/Graph/__Tests/StellaOps.Graph.Api.Tests: 66/66; src/Graph/__Tests/StellaOps.Graph.Indexer.Tests: 37/37; src/Graph/__Tests/StellaOps.Graph.Indexer.Persistence.Tests: 17/17).
- **Tier 2 Evidence**: docs/qa/feature-checks/runs/graph/graph-analytics-engine/run-006/tier2-integration-check.json
- **Outcome**: Analytics pipeline and persistence behavior remain healthy.
## Recheck (Run-007)
- **Verified**: 2026-02-10
- **Method**: Tier 2 replay validated via Graph API/indexer suites.
- **Tests**: PASS (src/Graph/__Tests/StellaOps.Graph.Api.Tests: 66/66; src/Graph/__Tests/StellaOps.Graph.Indexer.Tests: 37/37; src/Graph/__Tests/StellaOps.Graph.Indexer.Persistence.Tests: 17/17).
- **Tier 2 Evidence**: docs/qa/feature-checks/runs/graph/graph-analytics-engine/run-007/tier2-integration-check.json
- **Outcome**: Analytics pipeline and persistence behavior remain healthy.
## Recheck (Run-008)
- **Verified**: 2026-02-10
- **Method**: Tier 2 replay validated via Graph API/indexer suites.
- **Tests**: PASS (src/Graph/__Tests/StellaOps.Graph.Api.Tests: 66/66; src/Graph/__Tests/StellaOps.Graph.Indexer.Tests: 37/37; src/Graph/__Tests/StellaOps.Graph.Indexer.Persistence.Tests: 17/17).
- **Tier 2 Evidence**: docs/qa/feature-checks/runs/graph/graph-analytics-engine/run-008/tier2-integration-check.json
- **Outcome**: Analytics pipeline and persistence behavior remain healthy.
## Recheck (Run-009)
- **Verified**: 2026-02-10
- **Method**: Tier 2d deterministic integration replay.
- **Tests**: PASS (Graph.Api.Tests 66/66, Graph.Indexer.Tests 37/37, Graph.Indexer.Persistence.Tests 17/17).
- **Tier 2 Evidence**: docs/qa/feature-checks/runs/graph/graph-analytics-engine/run-009/tier2-integration-check.json
- **Outcome**: Checked Graph behavior remains healthy in continued replay.
## Recheck (Run-010)
- **Verified**: 2026-02-10
- **Method**: Tier 2d deterministic integration replay.
- **Tests**: PASS (Graph Api 66/66, Indexer 37/37, Indexer.Persistence 17/17; total 120/120).
- **Tier 2 Evidence**: docs/qa/feature-checks/runs/graph/graph-analytics-engine/run-010/tier2-integration-check.json
- **Outcome**: Checked graph behavior remains healthy in continued replay.
## Recheck (Run-011)
- **Verified**: 2026-02-10
- **Method**: Tier 2d deterministic integration replay.
- **Tests**: PASS (Graph Api 66/66, Indexer 37/37, Indexer.Persistence 17/17; total 120/120).
- **Tier 2 Evidence**: docs/qa/feature-checks/runs/graph/graph-analytics-engine/run-011/tier2-integration-check.json
- **Outcome**: Checked graph behavior remains healthy in continued replay.
## Recheck (Run-012)
- **Verified**: 2026-02-10
- **Method**: Tier 2 replay + deterministic Graph suite replay.
- **Tests**: PASS (Graph.Api 66/66, Graph.Indexer 37/37, Graph.Indexer.Persistence 17/17; total 120/120).
- **Tier 2 Evidence**: docs/qa/feature-checks/runs/graph/graph-analytics-engine/run-012/tier2-integration-check.json
- **Outcome**: Checked graph behavior remains healthy in continued replay.
## Recheck (Run-013)
- **Verified**: 2026-02-10
- **Method**: Tier 2d deterministic integration replay with fresh command-output evidence.
- **Tests**: PASS (Graph matrix 120/120: Api 66, Indexer 37, Indexer.Persistence 17.)
- **Tier 2 Evidence**: docs/qa/feature-checks/runs/graph/graph-analytics-engine/run-013/tier2-integration-check.json
- **Outcome**: Checked Graph behavior remains healthy in continued replay.
## Recheck (Run-016)
- **Verified**: 2026-02-11
- **Method**: Strict Tier 2 API replay (query/lineage/diff + tenant guard checks) with deterministic Graph suite replay.
- **Tests**: PASS (`src/Graph/StellaOps.Graph.sln`: 120/120).
- **Tier 2 Evidence**: docs/qa/feature-checks/runs/graph/graph-analytics-engine/run-016/tier2-api-check.json
- **Outcome**: Fresh user-surface replay confirms graph analytics outputs remain queryable through query/lineage/diff endpoints with expected validation semantics.