Repository navigation
[Phase 1] Author the LSP pilot scoping doc — language, actions, SLA, metrics, cost cap, candidate shortlist #840
Copy link
Copy link
Closed
Labels
dev-leadFor dev-lead agent pickupFor dev-lead agent pickupinitiativeEpic / initiative tracking issueEpic / initiative tracking issue
Description
Story
As a pr-review pilot owner,
I want a single scoping doc that fixes the LSP pilot's target language, the specific agent actions it covers, the cold-start SLA, the success metrics, the cost cap, and the candidate-server shortlist,
so that the downstream wiring and measurement stories share one unambiguous, agreed definition of done instead of each re-deciding scope.
Acceptance Criteria
- A new
docs/lsp-pilot.mdexists and names the pilot's target language (Shell) and pilot repo (.github-private), with the rationale tied to the discussion (agent's own substrate; lightweight bash-language-server). - The doc enumerates the specific pr-review actions LSP is scoped to (finding-verification via find-references / diagnostics in the deep/audit tiers) and explicitly states LSP is NOT applied to triage or to dev-lead code-writing in this pilot.
- The doc states a concrete cold-start SLA (<=30s P95) and the graceful-degradation rule: if cold-start exceeds the SLA the LSP step is auto-skipped, never a workflow failure.
- The doc records the initiative success metric (navigation-token reduction target AND no review-quality regression vs the frozen baseline) and the run-count cost cap, consistent with the epic body.
- The doc lists the candidate LSP-MCP servers to compare (agent-lsp, Serena, lsp-mcp) with pinned versions, and states that final selection is decided by the comparative pilot, not pre-chosen.
Tasks / Subtasks
- Draft docs/lsp-pilot.md sections: scope (language/repo/tier), in/out-of-scope actions, SLA + auto-skip policy. (AC: test issue from agent #1, Go-live improvements for PR review agent #2, Add @claude delegation, auto-merge, and rebase handling #3)
- Transcribe the success metric and cost cap from the epic body so doc and epic stay one source of truth. (AC: Optimize review: small-PR and incremental fast paths #4)
- List candidate servers with pinned versions and the 'selection decided by data' rule; cross-link the existing MCP plumbing in engine.sh and mcp-powered-review.md. (AC: feat: add Copilot engine support via REVIEW_ENGINE toggle #5)
Dev Notes
- This doc is the contract every later story grounds in — keep it tight and decision-dense, not a vendor survey.
- Reuse, do not re-describe, the existing MCP mechanism:
scripts/engine.shalready threads--mcp-config --strict-mcp-configinto the deep + rubber-duck tiers viaREVIEW_MCP_CONFIG/REVIEW_MCP_ALLOWED_TOOLS, and graceful degradation already emits a::warning::on MCP connect/init failure. The SLA auto-skip is an addition layered on that, not a replacement. - Mirror the structure of the enhancement comment's suggested scoping doc (
docs/lsp-pilot.md) so reviewers can map ACs to the discussion 1:1. - Testing: docs-only story — verify links resolve and that the success metric / cost cap text is byte-consistent with the epic body; no shell to shellcheck.
Project Structure Notes
New file under the existing docs/ tree alongside docs/initiatives/mcp-powered-review.md; no script or workflow changes.
References
- scripts/engine.sh
- docs/initiatives/mcp-powered-review.md
- .github/review-mcp.json
- .github/workflows/pr-review.yml
Likely target surface
docs/lsp-pilot.md (new file)
Story prepared by the BMAD Scrum Master (Bob) for epic #839. Status: ready-for-dev.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
dev-leadFor dev-lead agent pickupFor dev-lead agent pickupinitiativeEpic / initiative tracking issueEpic / initiative tracking issue
Activity
don-petry commentedon Jun 20, 2026
Dev-Lead Implementation Plan
Issue: #840 — [Phase 1] Author the LSP pilot scoping doc — language, actions, SLA, metrics, cost cap, candidate shortlist
Scope
Author a single decision-dense scoping doc
docs/lsp-pilot.mdthat fixes the LSP pilot's language/repo/tier, in/out-of-scope pr-review actions, the cold-start SLA + auto-skip rule, the success metric, the run-count cost cap (byte-consistent with epic #839), and the pinned candidate-server shortlist with a "selection decided by data" rule.Implementation Checklist
docs/lsp-pilot.mdwith sections mapping 1:1 to the five ACs:scripts/engine.sh,docs/initiatives/mcp-powered-review.md,.github/review-mcp.jsonTests to Write
bash .dev-lead/scripts/dev-lead-lint.shpasses (no shell/agent-frontmatter regressions)Test Command
bash .dev-lead/scripts/dev-lead-lint.shdon-petry commentedon Jun 20, 2026
Dev-Lead: Implementation Complete
Plan Execution
docs/lsp-pilot.md(new file) with sections mapping 1:1 to the five ACs..github-private+ tier deep/audit, with rationale tied to the discussion (agent's own substrate; lightweightbash-language-server; finding-verification is the lowest-risk surface)._emit_mcp_failure_warningdegradation path.bash-language-server, with a version-pinning rule and a "selection decided by the comparative pilot ([Phase 3] Run the comparative pilot and render the speed/quality/cost report #844), not pre-chosen" statement.scripts/engine.sh,docs/initiatives/mcp-powered-review.md,.github/review-mcp.json).Test Results
Docs-only story — Phase 2 (TDD) skipped per the prompt's documentation exception (no observable behavioral change, no shell to test). Verification performed instead:
Files Changed
docs/lsp-pilot.md: new scoping doc (the pilot contract) — language/repo/tier, in/out-of-scope actions, cold-start SLA + auto-skip, success metric + cost cap (verbatim from epic), candidate-server shortlist + pinning rule, and cross-links to the existing MCP plumbing.Notes
bash-language-server) is a third-party dependency; the exact pins are looked up from the source of truth and locked when the server is wired (story [Phase 2] Wire candidate LSP-MCP server(s) into the pr-review runtime — config, install, tier gating #842), consistent with the repo rule that pins are never guessed (CLAUDE.md/AGENTS.md) and the epic's own untracked-prerequisite that each must be pinned for a reproducible pilot. §5 records the pinning rule and a table ready to receive the locked versions in [Phase 2] Wire candidate LSP-MCP server(s) into the pr-review runtime — config, install, tier gating #842.engine.shthreads MCP into the deep/audit (run_agentic) and rubber-duck (run_duck) tiers; the pilot scopes LSP use to the deep/audit finding-verification surface per the epic. §6 states this precisely rather than implying duck is excluded.feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…
feat: implement issue #840 — [Phase 1] Author the LSP pilot scoping d…