Mengapa
Gap-analysis vs Serena MCP. Serena's find-references pakai LSP (AST/symbol table sejati) — presisi tinggi, tidak miss reference. CodeLens's find-references (search --mode symbol ref_count, context --check trace --direction up) pakai graph buatan sendiri yang APPROXIMATION — buktinya: sepanjang sesi ini serangkaian bug ref-count/trace ditemukan & fixed (#210, #219, #222, #223 module-level caller yang baru merged). Graph approximation terus punya edge case; LSP textDocument/references tidak.
Konteks
CodeLens SUDAH punya lsp_client.py dengan find_references(file, line, character) (verified: lsp_client.py:345, sudah call textDocument/references). hybrid_engine.py sudah pakai LSP untuk VERIFY dead-code & enhance impact (_filter_external_references). Jadi kemampuan LSP-references SUDAH ADA sebagian — tapi cuma dipakai internal untuk verifikasi, BUKAN di-expose sebagai jalur navigasi presisi untuk agent.
Tujuan
Saat --deep aktif (LSP tersedia), search --mode symbol / context --check trace --direction up gunakan LSP find_references sebagai sumber presisi (bukan cuma graph). Tanpa --deep atau tanpa LSP → tetap pakai graph (backward compatible, zero-config tetap jalan). Ini bukan ganti backend — ini upgrade opt-in yang manfaatkan LSP yang sudah ada untuk kasus presisi tinggi.
Constraint
- JANGAN jadikan LSP mandatory — zero-config (tanpa LSP) HARUS tetap jalan pakai graph. LSP = enhancement opt-in via
--deep, konsisten dgn arsitektur sekarang.
- Reuse
hybrid_engine.py/lsp_client.py — sudah ada find_references + _filter_external_references.
- Perlu resolve symbol name → (file, line, character) untuk feed ke LSP — cek apakah
_find_symbol_char di hybrid_engine sudah cukup.
- Design doc kalau ubah alur navigasi.
Definition of Done
Mengapa
Gap-analysis vs Serena MCP. Serena's find-references pakai LSP (AST/symbol table sejati) — presisi tinggi, tidak miss reference. CodeLens's find-references (
search --mode symbolref_count,context --check trace --direction up) pakai graph buatan sendiri yang APPROXIMATION — buktinya: sepanjang sesi ini serangkaian bug ref-count/trace ditemukan & fixed (#210, #219, #222, #223 module-level caller yang baru merged). Graph approximation terus punya edge case; LSPtextDocument/referencestidak.Konteks
CodeLens SUDAH punya
lsp_client.pydenganfind_references(file, line, character)(verified:lsp_client.py:345, sudah calltextDocument/references).hybrid_engine.pysudah pakai LSP untuk VERIFY dead-code & enhance impact (_filter_external_references). Jadi kemampuan LSP-references SUDAH ADA sebagian — tapi cuma dipakai internal untuk verifikasi, BUKAN di-expose sebagai jalur navigasi presisi untuk agent.Tujuan
Saat
--deepaktif (LSP tersedia),search --mode symbol/context --check trace --direction upgunakan LSPfind_referencessebagai sumber presisi (bukan cuma graph). Tanpa--deepatau tanpa LSP → tetap pakai graph (backward compatible, zero-config tetap jalan). Ini bukan ganti backend — ini upgrade opt-in yang manfaatkan LSP yang sudah ada untuk kasus presisi tinggi.Constraint
--deep, konsisten dgn arsitektur sekarang.hybrid_engine.py/lsp_client.py— sudah adafind_references+_filter_external_references._find_symbol_chardi hybrid_engine sudah cukup.Definition of Done
search --mode symbol X --deep(LSP ada) → references dari LSP, bandingkan vs graph-only, tunjukkan presisi lebih baik di kasus yang graph miss--deepatau tanpa LSP → graph-only, tidak ada regresi