You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Epic #839 piloted LSP (language-server) code intelligence in the pr-review harness for exactly one language/server: Shell via bash-language-server behind agent-lsp. The measured result was a NO-GO (decision: docs/lsp-pilot.md §7, recorded on #845):
The ≥2× navigation-token target was missed decisively; on shell diffs already cheap to grep, agent-lsp's MCP tool-result payloads cost about as much context as the reads they replace. That result does not generalize — it says nothing about languages with deeper cross-file type resolution, which is exactly where find-references is expected to beat grep.
This is a holding issue (inert: initiative:hold, no initiative:auto) to keep the open door tracked. Promote a child to a real pilot by removing the hold and planning it; do not auto-release.
The reusable harness is already in place (dormant, cost-free)
A per-language re-pilot is a restart, not a rebuild — reuse:
scripts/lsp_pilot_run.sh — live A/B runner (LSP-off vs LSP-on on the same PRs)
evals/lsp-pilot/ — the frozen-corpus pattern (repin per language)
Per-language deltas needed each time: (a) pick + version-pin the LSP server, (b) point .github/mcp/lsp.json at it (or a per-lang variant) and update setup-lsp-pilot.sh install, (c) repin evals/lsp-pilot/holdout/cases.jsonl to real cross-file PRs in that language's repos, (d) dispatch the A/B.
Method fixes carried over from the Shell pilot (do these before re-running)
Gate on tokens first. The success metric is a conjunction (≥2× nav-token reduction AND no precision regression). Precision cannot rescue a GO once tokens miss — so run the token A/B first and only build a precision harness if tokens clear ~2×.
Why this exists
Epic #839 piloted LSP (language-server) code intelligence in the pr-review harness for exactly one language/server: Shell via
bash-language-serverbehindagent-lsp. The measured result was a NO-GO (decision:docs/lsp-pilot.md §7, recorded on #845):The ≥2× navigation-token target was missed decisively; on shell diffs already cheap to grep,
agent-lsp's MCP tool-result payloads cost about as much context as the reads they replace. That result does not generalize — it says nothing about languages with deeper cross-file type resolution, which is exactly where find-references is expected to beat grep.This is a holding issue (inert:
initiative:hold, noinitiative:auto) to keep the open door tracked. Promote a child to a real pilot by removing the hold and planning it; do not auto-release.The reusable harness is already in place (dormant, cost-free)
A per-language re-pilot is a restart, not a rebuild — reuse:
scripts/lsp_pilot_run.sh— live A/B runner (LSP-off vs LSP-on on the same PRs)scripts/lsp_pilot_measure.sh/scripts/lsp_pilot_compare.sh— nav-token / tool-call / cold-start extraction + rendering.github/workflows/lsp-pilot-run.yml— on-demandworkflow_dispatchdriverevals/lsp-pilot/— the frozen-corpus pattern (repin per language)Per-language deltas needed each time: (a) pick + version-pin the LSP server, (b) point
.github/mcp/lsp.jsonat it (or a per-lang variant) and updatesetup-lsp-pilot.shinstall, (c) repinevals/lsp-pilot/holdout/cases.jsonlto real cross-file PRs in that language's repos, (d) dispatch the A/B.Method fixes carried over from the Shell pilot (do these before re-running)
scripts/lib/lsp-verification.shonly emitsfinding_verificationrecords on the LSP-on leg (it needsmcp__lsp__*in the allowlist), so it structurally cannot produce a false-positive delta vs LSP-off. Measuring the precision half needs a neutral judge (same scorer over both legs) — reuse the evalscore_llm_judgepath, not [Phase 2] Add the LSP finding-verification step to the deep/audit pr-review tiers #843.Candidate children (the languages we actually use)
pyright) —broodminder-export(96% Py),TalkTerm(34% Py). Highest a-priori odds: real cross-file imports + type resolution.typescript-language-server, ortsgowhen GA) —broodly(TS),google-app-scripts(Apps Script JS), embedded JS inmarkets. The vendor-cited strong case.Lower-priority / not currently scoped: HTML, Groovy, HCL/Terraform (small footprint; weak LSP-vs-grep case for review navigation).
Refs: discussion #578 · epic #839 · decision #845 ·
docs/lsp-pilot.md.