Move lsp-probe batch under LspSession and Daemon roots per roles-lsp-probe.md #784

Closed
opened 2026-09-27 23:05:40 +00:00 by jared · 2 comments
Owner

Problem

LSP-probe files sit in role directories with no concept root or with single-caller top-level objects.
The role table in roles-lsp-probe.md names the moves to consolidate LSP probe concepts under LspSession and Daemon roots.

Reproduce

n/a: structure-only refactor from a role-morph table.

Approach

Apply the move map in roles-lsp-probe.md with git mv; rename constants; update every caller in lib/, bin/, hooks/, agents/, skills/; move tests to mirror the new paths; update lib/os_sdlc.rb inflections and lint/inward_dependencies.rb tables as needed. Rulings adopted: the concept root the table calls OpenSession is named LspSession (a noun); Handshake, Transport, Framing, Poll, Document, LocationRequest, DefinitionRequest, ReferencesRequest, OutlineRequest, SymbolsRequest, AstDefinition, Readiness, Target nest under LspSession; Reply stays top-level; Resolver::TokenQuery and TokenResolution move to model/resolver/; ProcmanKind nests under Daemon; SourceSnippet under Gate; SharedRunner becomes Evidence::LspRunner; OutlineRenderer becomes LspProbe::Listing. Decide by the lens heuristics (skills/lens-architecture, lens-tactics, lens-principles); where an Accepted ADR conflicts with a lens rule, follow the lens and record the deviation in docs/crc/os-sdlc/deviations.md.

Required work:

  1. Every row of the move map in roles-lsp-probe.md applied, or a one-line reason in deviations.md for each row skipped — check: git diff --stat main -- plugins/os-sdlc/lib
  2. Suite green — check: cd plugins/os-sdlc && ruby tests/all.rb
  3. Inward-dependency lint not above baseline — check: plugins/os-sdlc/bin/lint-inward-dependencies
  4. bin/ script stdout byte-identical on the commands the batch touches — check: diff against recorded output

Acceptance criteria

  1. Given the move map in roles-lsp-probe.md, when the branch is diffed against main, then each listed file is at its proposed path with its proposed constant, or deviations.md names it.
  2. Given the suite, when run, then it passes with zero failures and no new tests.
  3. Given the bin scripts the batch touches, when run against fixtures, then stdout is byte-identical to before.

Owner sketch

class OsSdlc::LspSession; end
class OsSdlc::Daemon; end

Non-goals

No behavior change. No new tests. Dead-code deletion is ticket A.

Origin

  • Trigger: CRC session 13 role-morph pass, docs/crc/os-sdlc/roles-lsp-probe.md
  • Improvised this session: none
  • Chain: scattered concepts ← per-file role rename (#737, ADR-0222) ← DESIGN (ADR-0222; corrected by ROLE-MORPH-BRIEF.md "decide the role per concept")
  • Root candidate: this ticket
  • Where: plugins/os-sdlc/lib/os_sdlc/ (files listed in roles-lsp-probe.md)
  • Session: e64808e4-7c0b-4664-9d13-177acbbc143c
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-crc-pass-os-sdlc/e64808e4-7c0b-4664-9d13-177acbbc143c.jsonl
## Problem LSP-probe files sit in role directories with no concept root or with single-caller top-level objects. The role table in roles-lsp-probe.md names the moves to consolidate LSP probe concepts under LspSession and Daemon roots. ## Reproduce n/a: structure-only refactor from a role-morph table. ## Approach Apply the move map in roles-lsp-probe.md with git mv; rename constants; update every caller in lib/, bin/, hooks/, agents/, skills/; move tests to mirror the new paths; update lib/os_sdlc.rb inflections and lint/inward_dependencies.rb tables as needed. Rulings adopted: the concept root the table calls OpenSession is named LspSession (a noun); Handshake, Transport, Framing, Poll, Document, LocationRequest, DefinitionRequest, ReferencesRequest, OutlineRequest, SymbolsRequest, AstDefinition, Readiness, Target nest under LspSession; Reply stays top-level; Resolver::TokenQuery and TokenResolution move to model/resolver/; ProcmanKind nests under Daemon; SourceSnippet under Gate; SharedRunner becomes Evidence::LspRunner; OutlineRenderer becomes LspProbe::Listing. Decide by the lens heuristics (skills/lens-architecture, lens-tactics, lens-principles); where an Accepted ADR conflicts with a lens rule, follow the lens and record the deviation in docs/crc/os-sdlc/deviations.md. Required work: 1. Every row of the move map in roles-lsp-probe.md applied, or a one-line reason in deviations.md for each row skipped — check: git diff --stat main -- plugins/os-sdlc/lib 2. Suite green — check: cd plugins/os-sdlc && ruby tests/all.rb 3. Inward-dependency lint not above baseline — check: plugins/os-sdlc/bin/lint-inward-dependencies 4. bin/ script stdout byte-identical on the commands the batch touches — check: diff against recorded output ## Acceptance criteria 1. Given the move map in roles-lsp-probe.md, when the branch is diffed against main, then each listed file is at its proposed path with its proposed constant, or deviations.md names it. 2. Given the suite, when run, then it passes with zero failures and no new tests. 3. Given the bin scripts the batch touches, when run against fixtures, then stdout is byte-identical to before. ## Owner sketch ```ruby class OsSdlc::LspSession; end class OsSdlc::Daemon; end ``` ## Non-goals No behavior change. No new tests. Dead-code deletion is ticket A. ## Origin - Trigger: CRC session 13 role-morph pass, docs/crc/os-sdlc/roles-lsp-probe.md - Improvised this session: none - Chain: scattered concepts ← per-file role rename (#737, ADR-0222) ← DESIGN (ADR-0222; corrected by ROLE-MORPH-BRIEF.md "decide the role per concept") - Root candidate: this ticket - Where: plugins/os-sdlc/lib/os_sdlc/ (files listed in roles-lsp-probe.md) - Session: e64808e4-7c0b-4664-9d13-177acbbc143c - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-crc-pass-os-sdlc/e64808e4-7c0b-4664-9d13-177acbbc143c.jsonl
Author
Owner

10 commits (edb2f592..965cf480): LspSession namespace (Handshake/Transport/Framing/Poll/Document/LocationRequest/DefinitionRequest/ReferencesRequest/OutlineRequest/SymbolsRequest/AstDefinition/Readiness/Target), Resolver::TokenQuery+TokenResolution out of adapter/, Daemon::ProcmanKind, Gate::SourceSnippet, Evidence::LspRunner, LspProbe::Listing; two fixup commits corrected a stale multi-path git add that left three files' constant rewrites uncommitted, caught by re-diffing HEAD content.
Rows applied 17 of 17 move-map rows (plus the two clarification additions, Readiness and Target, folded under LspSession) — 0 rows deviated/skipped from the move map itself.
Suite: 1300 runs, 2851 assertions, 0 failures, 0 errors, 10 skips. Inward-lint: 63 (baseline 64, net improvement). deviations.md gained one entry explaining the inward-lint count delta (mechanical LspSession self-reference lines matching the existing Resolver precedent, plus one previously-masked adapter/project/yaml.rb->parser crossing that the LspSession move's removal of a Document name collision now correctly surfaces) — no move-map row was skipped.

10 commits (edb2f592..965cf480): LspSession namespace (Handshake/Transport/Framing/Poll/Document/LocationRequest/DefinitionRequest/ReferencesRequest/OutlineRequest/SymbolsRequest/AstDefinition/Readiness/Target), Resolver::TokenQuery+TokenResolution out of adapter/, Daemon::ProcmanKind, Gate::SourceSnippet, Evidence::LspRunner, LspProbe::Listing; two fixup commits corrected a stale multi-path `git add` that left three files' constant rewrites uncommitted, caught by re-diffing HEAD content. Rows applied 17 of 17 move-map rows (plus the two clarification additions, Readiness and Target, folded under LspSession) — 0 rows deviated/skipped from the move map itself. Suite: 1300 runs, 2851 assertions, 0 failures, 0 errors, 10 skips. Inward-lint: 63 (baseline 64, net improvement). deviations.md gained one entry explaining the inward-lint count delta (mechanical LspSession self-reference lines matching the existing Resolver precedent, plus one previously-masked adapter/project/yaml.rb->parser crossing that the LspSession move's removal of a Document name collision now correctly surfaces) — no move-map row was skipped.
Author
Owner

Resolution

Done: lsp-probe batch: LspSession root (was OpenSession) with 13 nested files, Resolver token objects to model/, Daemon::ProcmanKind, Gate::SourceSnippet, Evidence::LspRunner, LspProbe::Listing; 17 of 17 rows; Reply stays top-level.

Evidence: Commits edb2f592..965cf480 on crc-pass-os-sdlc; suite 1300 runs 0 failures; inward lint 64 -> 63.

Follow-ups: Server vs Daemon::Server name collision and Daemon::Client/Session kind splits are recorded in roles-lsp-probe.md follow-ups; not ticketed, dropped as no defect today.

## Resolution **Done:** lsp-probe batch: LspSession root (was OpenSession) with 13 nested files, Resolver token objects to model/, Daemon::ProcmanKind, Gate::SourceSnippet, Evidence::LspRunner, LspProbe::Listing; 17 of 17 rows; Reply stays top-level. **Evidence:** Commits edb2f592..965cf480 on crc-pass-os-sdlc; suite 1300 runs 0 failures; inward lint 64 -> 63. **Follow-ups:** Server vs Daemon::Server name collision and Daemon::Client/Session kind splits are recorded in roles-lsp-probe.md follow-ups; not ticketed, dropped as no defect today.
jared closed this issue 2026-09-28 01:18:23 +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#784
No description provided.