Tracking issue for the precise-resolution OpenSpec change.
dextree resolves precise callers/callees via the user's LSP (LspCallResolver, RULE-ARCH-010) but only live, per selected node — the result never reaches the edge table, so the persisted/projected graph stays heuristic. This is the depth gap vs SCIP/graph-DB indexers (which persist semantic edges). The edge.target_id schema comment already says "pass-2 LSP fills them in" — this builds pass-2.
Adds a command Dextree: Resolve precise edges (LSP) that runs a workspace pass: enumerate heuristic/unresolved CALLS sites → LSP-resolve each → match the result back to a stored symbol → persist target_id + metadata.resolution='precise'. Opt-in, idempotent, cancellable, graceful-degrade. All DB access through GraphRepository; LSP bridge stays in the host.
Stacked on #165 (extends GraphRepository). Out of scope: auto-after-index trigger, SCIP ingest, non-CALLS kinds.
Tracking issue for the
precise-resolutionOpenSpec change.dextree resolves precise callers/callees via the user's LSP (
LspCallResolver, RULE-ARCH-010) but only live, per selected node — the result never reaches theedgetable, so the persisted/projected graph staysheuristic. This is the depth gap vs SCIP/graph-DB indexers (which persist semantic edges). Theedge.target_idschema comment already says "pass-2 LSP fills them in" — this builds pass-2.Adds a command
Dextree: Resolve precise edges (LSP)that runs a workspace pass: enumerate heuristic/unresolved CALLS sites → LSP-resolve each → match the result back to a stored symbol → persisttarget_id+metadata.resolution='precise'. Opt-in, idempotent, cancellable, graceful-degrade. All DB access throughGraphRepository; LSP bridge stays in the host.Stacked on #165 (extends GraphRepository). Out of scope: auto-after-index trigger, SCIP ingest, non-CALLS kinds.