worktree start warms lsp-probe daemon, worktree finish stops it #601

Closed
opened 2026-09-16 19:53:02 +00:00 by jared · 1 comment
Owner

Context

Branch lsp-probe-cli (ADR-0197) added bin/lsp-probe, a Thor CLI that spawns ruby-lsp over stdio per call (lib/os_sdlc/lsp_probe/query_runner.rb:21, Open3.popen3). Measured 2026-09-16: one lsp-probe call 4-9 s; bin/evidence collect --root plugins/os-sdlc/lib Model::Db 209 s because lib/os_sdlc/evidence/fingerprint.rb:83-91 runs one LSP query, and so one spawn, per method with no ast-grep sender. Worktree lifecycle hooks integrate daemon management.

Owner sketch

class StartCommand
  def call(path) = ...
end

class FinishCommand
  def call(path) = ...
end

Cases

  • worktree start on a repo where lsp-probe exists invokes warm with the new worktree path (command recorder double).
  • worktree start where lsp-probe is absent prints one warning and still exits 0.
  • worktree finish invokes stop with the worktree path before removal.

Origin

  • Trigger: evidence performance audit 2026-09-16
  • Improvised this session: none
  • Chain: worktree daemon lifecycle ← daemon (issue #600) integration
  • Root candidate: #600
  • Where: plugins/os/lib/worktree/start_command.rb, finish_command.rb
  • Session: 01153d94-6459-43dc-bd20-e68b757af56f
  • Transcript: https://claude.com/claude-code
## Context Branch lsp-probe-cli (ADR-0197) added bin/lsp-probe, a Thor CLI that spawns ruby-lsp over stdio per call (lib/os_sdlc/lsp_probe/query_runner.rb:21, Open3.popen3). Measured 2026-09-16: one lsp-probe call 4-9 s; `bin/evidence collect --root plugins/os-sdlc/lib Model::Db` 209 s because lib/os_sdlc/evidence/fingerprint.rb:83-91 runs one LSP query, and so one spawn, per method with no ast-grep sender. Worktree lifecycle hooks integrate daemon management. ## Owner sketch ```ruby class StartCommand def call(path) = ... end class FinishCommand def call(path) = ... end ``` ## Cases - `worktree start` on a repo where lsp-probe exists invokes `warm` with the new worktree path (command recorder double). - `worktree start` where lsp-probe is absent prints one warning and still exits 0. - `worktree finish` invokes `stop` with the worktree path before removal. ## Origin - Trigger: evidence performance audit 2026-09-16 - Improvised this session: none - Chain: worktree daemon lifecycle ← daemon (issue #600) integration - Root candidate: \#600 - Where: plugins/os/lib/worktree/start_command.rb, finish_command.rb - Session: 01153d94-6459-43dc-bd20-e68b757af56f - Transcript: https://claude.com/claude-code
Author
Owner

Resolution

Done: Worktree::LspWarmer; StartCommand warms after symlinks, FinishCommand stops before removal; missing binary prints one warning and exits 0. Commit fd486c88 on ticket-600.

Evidence: plugins/os tests 27 runs 0 failures; rubocop no new offenses (Style/Documentation baseline noise only). Hand-built, plugins/os has no os-sdlc pipeline target.

Follow-ups: none

## Resolution **Done:** Worktree::LspWarmer; StartCommand warms after symlinks, FinishCommand stops before removal; missing binary prints one warning and exits 0. Commit fd486c88 on ticket-600. **Evidence:** plugins/os tests 27 runs 0 failures; rubocop no new offenses (Style/Documentation baseline noise only). Hand-built, plugins/os has no os-sdlc pipeline target. **Follow-ups:** none
jared closed this issue 2026-09-17 06:16:42 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
jared/cc-os#601
No description provided.