Files
git.stella-ops.org/docs-archived/implplan-blocked/audits/csproj-standards/Graph/StellaOps.Graph.Indexer/StellaOps.Graph.Indexer.md
2026-02-19 22:07:11 +02:00

3.5 KiB

Audit - StellaOps.Graph.Indexer

Project

  • Path: src/Graph/StellaOps.Graph.Indexer/StellaOps.Graph.Indexer.csproj
  • Module: Graph
  • Kind: Worker
  • SDK: Microsoft.NET.Sdk
  • TargetFramework: net10.0
  • Audit date (UTC): 2026-01-30

Coding Standards Findings

  • Status: FAIL
  • Nullable: enable
  • TreatWarningsAsErrors: explicit true
  • Deterministic: inherited true
  • 100-line rule violations: 16
  • Service locator usage (BuildServiceProvider/GetService): 3
  • Analyzer enforcement: missing repo-wide (see summary).

Details

  • 100-line files:
    • src/Graph/StellaOps.Graph.Indexer/Ingestion/Sbom/SbomIngestTransformer.cs (622 lines)
    • src/Graph/StellaOps.Graph.Indexer/Documents/GraphSnapshotBuilder.cs (489 lines)
    • src/Graph/StellaOps.Graph.Indexer/Analytics/GraphAnalyticsEngine.cs (471 lines)
    • src/Graph/StellaOps.Graph.Indexer/Ingestion/Inspector/GraphInspectorTransformer.cs (447 lines)
    • src/Graph/StellaOps.Graph.Indexer/Ingestion/Sbom/SbomSnapshot.cs (270 lines)
    • src/Graph/StellaOps.Graph.Indexer/Documents/GraphSnapshot.cs (261 lines)
    • src/Graph/StellaOps.Graph.Indexer/Ingestion/Vex/VexOverlayTransformer.cs (243 lines)
    • src/Graph/StellaOps.Graph.Indexer/Ingestion/Policy/PolicyOverlayTransformer.cs (237 lines)
    • src/Graph/StellaOps.Graph.Indexer/Ingestion/Advisory/AdvisoryLinksetTransformer.cs (208 lines)
    • src/Graph/StellaOps.Graph.Indexer/Ingestion/Inspector/GraphInspectorSnapshot.cs (180 lines)
    • src/Graph/StellaOps.Graph.Indexer/Schema/GraphIdentity.cs (152 lines)
    • src/Graph/StellaOps.Graph.Indexer/Schema/CanonicalJson.cs (134 lines)
    • src/Graph/StellaOps.Graph.Indexer/Schema/GraphDocumentFactory.cs (132 lines)
    • src/Graph/StellaOps.Graph.Indexer/Ingestion/Policy/PolicyOverlayMetrics.cs (124 lines)
    • src/Graph/StellaOps.Graph.Indexer/Incremental/GraphChangeStreamProcessor.cs (119 lines)
    • src/Graph/StellaOps.Graph.Indexer/Ingestion/Advisory/AdvisoryLinksetMetrics.cs (106 lines)
  • Service locator matches:
    • src/Graph/StellaOps.Graph.Indexer/Ingestion/Inspector/InspectorIngestServiceCollectionExtensions.cs:20 var logger = provider.GetService<ILogger>() ?? NullLogger.Instance;
    • src/Graph/StellaOps.Graph.Indexer/Ingestion/Sbom/SbomIngestServiceCollectionExtensions.cs:34 var logger = provider.GetService<ILogger>() ?? NullLogger.Instance;
    • src/Graph/StellaOps.Graph.Indexer/Ingestion/Sbom/SbomIngestServiceCollectionExtensions.cs:35 var options = provider.GetService<IOptions>();

Fix Guidance

  • Split files over 100 lines into smaller types or partials.
  • Replace service locator usage with constructor injection.

Testing Fullness Findings

  • Status: FAIL
  • Expected layers: Unit, Integration, E2E, Offline
  • Detected test projects: src/Graph/__Tests/StellaOps.Graph.Indexer.Tests/StellaOps.Graph.Indexer.Tests.csproj [Unit], src/Graph/__Tests/StellaOps.Graph.Indexer.Persistence.Tests/StellaOps.Graph.Indexer.Persistence.Tests.csproj [Unit], src/__Tests/Graph/StellaOps.Graph.Indexer.Tests/StellaOps.Graph.Indexer.Tests.csproj [Unit]
  • Missing layers: Integration, E2E, Offline

Manual checks required

  • Observability contract tests for WebService/Worker.
  • Offline execution (tests must run without network access).

Fix Guidance

  • Add integration tests for cross-component flows.
  • Add E2E coverage for user-visible workflows.
  • Add offline/airgap coverage with fixtures only.