Preserve whole object: Location for column+line+path #1199

Closed
opened 2026-10-20 02:11:12 +00:00 by jared · 2 comments
Owner

Problem

column+line+path (data_clump, score 8) spans 4 classes in concepts Daemon, Evidence.

  • OsSdlc::Daemon::Location (/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/daemon/location.rb:7)
  • OsSdlc::Daemon::OutlineNode (/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/daemon/outline_node.rb:5)
  • OsSdlc::Daemon::SymbolMatch (/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/daemon/symbol_match.rb:5)
  • OsSdlc::Evidence::Probe::Lsp::Lookup (/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/evidence/probe/lsp/lookup.rb:8)

support 4; maximal

  • plugins/os-sdlc/bin/lsp-probe born at plugins/os-sdlc/lib/os_sdlc/daemon/navigation.rb:72 as column.to_i

Approach

The clump's names are members of one object that already exists or is built upstream; pass the object. Object: OsSdlc::Daemon::Location (built at plugins/os-sdlc/lib/os_sdlc/daemon/navigation.rb:72). Daemon::Location already owns path, line, and column, yet SymbolMatch and OutlineNode repeat the three fields and Lookup::Definition is a copy of Location; holding a Location removes this clump and also breaks kind+line+name+path, which then has only Evidence::Resolution left. The Sonnet choice of Project for name+root is wrong because name there is a symbol name and lsp-probe and evidence build no Project (the root comes from --root or the cwd).

Required work:

  1. OsSdlc::Daemon::SymbolMatch takes location, kind, name, source — check: absent path: in plugins/os-sdlc/lib/os_sdlc/daemon/symbol_match.rb
  2. OsSdlc::Daemon::SymbolMatch takes location, kind, name, source — check: absent line: in plugins/os-sdlc/lib/os_sdlc/daemon/symbol_match.rb
  3. OsSdlc::Daemon::SymbolMatch takes location, kind, name, source — check: absent column: in plugins/os-sdlc/lib/os_sdlc/daemon/symbol_match.rb
  4. OsSdlc::Daemon::OutlineNode takes location, name, kind, children — check: absent path: in plugins/os-sdlc/lib/os_sdlc/daemon/outline_node.rb
  5. OsSdlc::Daemon::OutlineNode takes location, name, kind, children — check: absent line: in plugins/os-sdlc/lib/os_sdlc/daemon/outline_node.rb
  6. OsSdlc::Daemon::OutlineNode takes location, name, kind, children — check: absent column: in plugins/os-sdlc/lib/os_sdlc/daemon/outline_node.rb
  7. OsSdlc::Evidence::Probe::Lsp::Lookup takes method_name, root, runner, site — check: absent path: in plugins/os-sdlc/lib/os_sdlc/evidence/probe/lsp/lookup.rb
  8. OsSdlc::Evidence::Probe::Lsp::Lookup takes method_name, root, runner, site — check: absent line: in plugins/os-sdlc/lib/os_sdlc/evidence/probe/lsp/lookup.rb
  9. OsSdlc::Evidence::Probe::Lsp::Lookup takes method_name, root, runner, site — check: absent column: in plugins/os-sdlc/lib/os_sdlc/evidence/probe/lsp/lookup.rb

Orchestrator work: re-measure with bin/collaborator-pass measure --runs docs/crc/os-sdlc/collaborator-runs, then stop-check.

Acceptance criteria

  1. Given today's lib, when bin/collaborator-pass measure --sources params,inward,flay runs after the change, then the data_clump finding column+line+path scores at most 2 (was 8) and none of path, line, column appears in its names.
  2. Given a workspace with a known symbol, when lsp-probe symbols and outline run with and without --json, then the printed output is unchanged.
  3. Given a token list, when bin/evidence collect runs, then the evidence lines and the printed lsp-probe refs commands are unchanged.
  4. Given the tests of Daemon::SymbolMatch, Daemon::OutlineNode, and Evidence::Probe::Lsp::Lookup, when the suite runs, then they pass.

Owner sketch

class OsSdlc::Daemon::Location
end

class OsSdlc::Daemon::SymbolMatch
  def initialize(location, kind, name, source)
  end
end

class OsSdlc::Daemon::OutlineNode
  def initialize(location, name, kind, children)
  end
end

class OsSdlc::Evidence::Probe::Lsp::Lookup
  def initialize(method_name, root, runner, site)
  end
end

Origin

  • Trigger: bin/collaborator-pass run 20261020T020325Z
  • Improvised this session: none
  • Chain: column+line+path across 4 classes ← plugins/os-sdlc/lib/os_sdlc/daemon/navigation.rb:72 ← DESIGN (plugins/os-sdlc/lib/os_sdlc/daemon/symbol_match.rb)
  • Root candidate: none found; searched column+line+path, Daemon::Location, SymbolMatch, OutlineNode, symbol_match, outline_node, Preserve whole
  • Where: plugins/os-sdlc/lib/os_sdlc/daemon/symbol_match.rb
  • Session: 2e167079-f404-4139-9cfa-6c0c937ce9f0
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-crc-os-sdlc-run-3/2e167079-f404-4139-9cfa-6c0c937ce9f0.jsonl

VERDICT: CREATE

## Problem column+line+path (data_clump, score 8) spans 4 classes in concepts Daemon, Evidence. - `OsSdlc::Daemon::Location` (`/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/daemon/location.rb:7`) - `OsSdlc::Daemon::OutlineNode` (`/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/daemon/outline_node.rb:5`) - `OsSdlc::Daemon::SymbolMatch` (`/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/daemon/symbol_match.rb:5`) - `OsSdlc::Evidence::Probe::Lsp::Lookup` (`/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/evidence/probe/lsp/lookup.rb:8`) support 4; maximal - plugins/os-sdlc/bin/lsp-probe born at plugins/os-sdlc/lib/os_sdlc/daemon/navigation.rb:72 as column.to_i ## Approach The clump's names are members of one object that already exists or is built upstream; pass the object. Object: `OsSdlc::Daemon::Location` (built at plugins/os-sdlc/lib/os_sdlc/daemon/navigation.rb:72). Daemon::Location already owns path, line, and column, yet SymbolMatch and OutlineNode repeat the three fields and Lookup::Definition is a copy of Location; holding a Location removes this clump and also breaks kind+line+name+path, which then has only Evidence::Resolution left. The Sonnet choice of Project for name+root is wrong because name there is a symbol name and lsp-probe and evidence build no Project (the root comes from --root or the cwd). Required work: 1. `OsSdlc::Daemon::SymbolMatch` takes `location, kind, name, source` — check: absent `path:` in `plugins/os-sdlc/lib/os_sdlc/daemon/symbol_match.rb` 2. `OsSdlc::Daemon::SymbolMatch` takes `location, kind, name, source` — check: absent `line:` in `plugins/os-sdlc/lib/os_sdlc/daemon/symbol_match.rb` 3. `OsSdlc::Daemon::SymbolMatch` takes `location, kind, name, source` — check: absent `column:` in `plugins/os-sdlc/lib/os_sdlc/daemon/symbol_match.rb` 4. `OsSdlc::Daemon::OutlineNode` takes `location, name, kind, children` — check: absent `path:` in `plugins/os-sdlc/lib/os_sdlc/daemon/outline_node.rb` 5. `OsSdlc::Daemon::OutlineNode` takes `location, name, kind, children` — check: absent `line:` in `plugins/os-sdlc/lib/os_sdlc/daemon/outline_node.rb` 6. `OsSdlc::Daemon::OutlineNode` takes `location, name, kind, children` — check: absent `column:` in `plugins/os-sdlc/lib/os_sdlc/daemon/outline_node.rb` 7. `OsSdlc::Evidence::Probe::Lsp::Lookup` takes `method_name, root, runner, site` — check: absent `path:` in `plugins/os-sdlc/lib/os_sdlc/evidence/probe/lsp/lookup.rb` 8. `OsSdlc::Evidence::Probe::Lsp::Lookup` takes `method_name, root, runner, site` — check: absent `line:` in `plugins/os-sdlc/lib/os_sdlc/evidence/probe/lsp/lookup.rb` 9. `OsSdlc::Evidence::Probe::Lsp::Lookup` takes `method_name, root, runner, site` — check: absent `column:` in `plugins/os-sdlc/lib/os_sdlc/evidence/probe/lsp/lookup.rb` Orchestrator work: re-measure with bin/collaborator-pass measure --runs docs/crc/os-sdlc/collaborator-runs, then stop-check. ## Acceptance criteria 1. Given today's lib, when bin/collaborator-pass measure --sources params,inward,flay runs after the change, then the data_clump finding column+line+path scores at most 2 (was 8) and none of path, line, column appears in its names. 2. Given a workspace with a known symbol, when lsp-probe symbols and outline run with and without --json, then the printed output is unchanged. 3. Given a token list, when bin/evidence collect runs, then the evidence lines and the printed lsp-probe refs commands are unchanged. 4. Given the tests of Daemon::SymbolMatch, Daemon::OutlineNode, and Evidence::Probe::Lsp::Lookup, when the suite runs, then they pass. ## Owner sketch ```ruby class OsSdlc::Daemon::Location end class OsSdlc::Daemon::SymbolMatch def initialize(location, kind, name, source) end end class OsSdlc::Daemon::OutlineNode def initialize(location, name, kind, children) end end class OsSdlc::Evidence::Probe::Lsp::Lookup def initialize(method_name, root, runner, site) end end ``` ## Origin - Trigger: bin/collaborator-pass run 20261020T020325Z - Improvised this session: none - Chain: column+line+path across 4 classes ← plugins/os-sdlc/lib/os_sdlc/daemon/navigation.rb:72 ← DESIGN (`plugins/os-sdlc/lib/os_sdlc/daemon/symbol_match.rb`) - Root candidate: none found; searched column+line+path, Daemon::Location, SymbolMatch, OutlineNode, symbol_match, outline_node, Preserve whole - Where: plugins/os-sdlc/lib/os_sdlc/daemon/symbol_match.rb - Session: 2e167079-f404-4139-9cfa-6c0c937ce9f0 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-crc-os-sdlc-run-3/2e167079-f404-4139-9cfa-6c0c937ce9f0.jsonl VERDICT: CREATE
Author
Owner

Work started on branch crc-os-sdlc-run-3 (collaborator-pass round 2, recipe daemon, poodr-ticket-implementation map).

Work started on branch crc-os-sdlc-run-3 (collaborator-pass round 2, recipe daemon, poodr-ticket-implementation map).
Author
Owner

Resolution

Done: OutlineNode and SymbolMatch hold a Daemon::Location; Lsp::Lookup::Definition removed in favor of Daemon::Location. Hand-finished after escalation 57: listing_test.rb built OutlineNode with the removed path/line/column keywords, and the programmer may not edit tests.

Evidence: 95098f55; suite 2256 runs 0 failures 58.1s; rubocop 9 files no offenses; delta-check ok (data_clump column+line+path 8 -> 0); design audit: no must-fix, 4 findings fixed

Follow-ups: none

## Resolution **Done:** OutlineNode and SymbolMatch hold a Daemon::Location; Lsp::Lookup::Definition removed in favor of Daemon::Location. Hand-finished after escalation 57: listing_test.rb built OutlineNode with the removed path/line/column keywords, and the programmer may not edit tests. **Evidence:** 95098f55; suite 2256 runs 0 failures 58.1s; rubocop 9 files no offenses; delta-check ok (data_clump column+line+path 8 -> 0); design audit: no must-fix, 4 findings fixed **Follow-ups:** none
jared closed this issue 2026-10-20 03:17:04 +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#1199
No description provided.