# Excititor ยท Graph Indexes Prep (GRAPH-21-005) - **Date:** 2025-11-20 - **Depends on:** GRAPH-21-002 overlays - **Working directory:** `src/Excititor/__Libraries/StellaOps.Excititor.Storage.Mongo` ## Index plan - Collection: `vex_observations` - Compound index `{ tenant: 1, component.purl: 1, advisoryId: 1, source: 1, modifiedAt: -1 }` (supports overlay queries and truncation cursor). - Sparse index `{ tenant: 1, component.purl: 1, status: 1 }` for summary counts. - Collection: `vex_overlays` (materialized cache, optional) - Index `{ tenant: 1, purl: 1 }` unique. - TTL index on `cachedAt` configurable via `excititor:graph:overlayTtlSeconds`. ## Determinism - Materialization job must sort observations as per GRAPH-21-001 ordering before writing overlays so pagination/cursors align. - TTL applied identically across tenants; default 300s, override allowed via config but must be documented. ## Acceptance for prep completion - Index keys and TTL knobs defined; downstream storage tasks can implement without further contract churn.