Prior art: SDL-MCP live-indexing (https://github.com/GlitterKill/sdl-mcp — see docs/feature-deep-dives/).
Gap in GitNexus: the index reflects committed state and lags HEAD (and lags unsaved edits entirely). Today's mitigation is "re-run analyze after a merge" + the freshness hook that notifies rather than auto-updating (to avoid LadybugDB write contention while MCP servers read). Result: agents query a graph that can be N commits / N edits behind reality, guarded only by the "trust d=1, verify against source" discipline.
Proposed feature — an optional live/overlay index layer:
- buffer/save pushes (debounced) → background tree-sitter parse → an overlay store where draft symbols shadow their durable counterparts → checkpoint into the durable index on idle (e.g. 15s).
- queries read the overlay first, falling back to durable.
Value: removes the staleness caveat that currently makes impact()/query() over recently-changed code unreliable. The small incremental overlay writes also sidestep the heavy-analyze write-contention problem that blocks auto-refresh today.
Pragmatic first step: even commit-granularity (incrementally index the working-tree diff vs the last-indexed commit) would close most of the gap and is simpler than keystroke-level live indexing.
Prior art: SDL-MCP live-indexing (https://github.com/GlitterKill/sdl-mcp — see
docs/feature-deep-dives/).Gap in GitNexus: the index reflects committed state and lags HEAD (and lags unsaved edits entirely). Today's mitigation is "re-run
analyzeafter a merge" + the freshness hook that notifies rather than auto-updating (to avoid LadybugDB write contention while MCP servers read). Result: agents query a graph that can be N commits / N edits behind reality, guarded only by the "trust d=1, verify against source" discipline.Proposed feature — an optional live/overlay index layer:
Value: removes the staleness caveat that currently makes
impact()/query()over recently-changed code unreliable. The small incremental overlay writes also sidestep the heavy-analyzewrite-contention problem that blocks auto-refresh today.Pragmatic first step: even commit-granularity (incrementally index the working-tree diff vs the last-indexed commit) would close most of the gap and is simpler than keystroke-level live indexing.