Preserve whole object: Project for root+tracker #1202

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

Problem

root+tracker (data_clump, score 12) spans 4 classes in concepts Dispatch, Implementation, Project.

  • OsSdlc::Dispatch::SubagentStart (/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/dispatch/subagent_start.rb:10)
  • OsSdlc::Implementation::Open (/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/implementation/open.rb:10)
  • OsSdlc::Implementation::RerouteIntake (/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/implementation/reroute_intake.rb:8)
  • OsSdlc::Project (/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/project.rb:4)

support 4; maximal

  • plugins/os-sdlc/bin/os-sdlc born at plugins/os-sdlc/lib/os_sdlc/project/config_command.rb:78 as project.root.to_s
  • reroute-request born at as

Approach

The clump's names are members of one object that already exists or is built upstream; pass the object. Object: OsSdlc::Project (built at plugins/os-sdlc/lib/os_sdlc/project/config_command.rb:78). Open and RerouteIntake use root only as the project root, which OsSdlc::Project already holds, so they take the Project built at their entry and keep tracker as the injected Tracker adapter (Project#tracker is the config spec string, not the adapter, so the adapter cannot move into the Project). SubagentStart drops its tracker keyword, which no caller or test passes, and uses Tracker::Null as Dispatch::BriefLookup does.

Required work:

  1. OsSdlc::Implementation::Open takes project, work_order, tracker — check: absent root: in plugins/os-sdlc/lib/os_sdlc/implementation/open.rb
  2. OsSdlc::Implementation::Open takes project, work_order, tracker — check: absent tracker: in plugins/os-sdlc/lib/os_sdlc/implementation/open.rb
  3. OsSdlc::Implementation::RerouteIntake takes project, implementation_id, tracker, report — check: absent root: in plugins/os-sdlc/lib/os_sdlc/implementation/reroute_intake.rb
  4. OsSdlc::Implementation::RerouteIntake takes project, implementation_id, tracker, report — check: absent tracker: in plugins/os-sdlc/lib/os_sdlc/implementation/reroute_intake.rb
  5. OsSdlc::Dispatch::SubagentStart takes root, arrival — check: absent root: in plugins/os-sdlc/lib/os_sdlc/dispatch/subagent_start.rb
  6. OsSdlc::Dispatch::SubagentStart takes root, arrival — check: absent tracker: in plugins/os-sdlc/lib/os_sdlc/dispatch/subagent_start.rb

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

Rejected: build_once_at_entry — Open and RerouteIntake use root only as the project root, which OsSdlc::Project already holds, so they take the Project built at their entry and keep tracker as the injected Tracker adapter (Project#tracker is the config spec string, not the adapter, so the adapter cannot move into the Project). SubagentStart drops its tracker keyword, which no caller or test passes, and uses Tracker::Null as Dispatch::BriefLookup does.

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 root+tracker scores at most 0 (was 12) and none of root, tracker appears in its names.
  2. Given a work order for a configured project, when implementation-open runs with the Project built at OsSdlc::Implementation::Initiation, then the open payload and the ticket-shape and validation errors are unchanged.
  3. Given a waiting implementation, when reroute-request runs with the Project built at OsSdlc::Implementation::Rerouting, then the dispatch payload and the refusal messages are unchanged.
  4. Given the tests of Open, RerouteIntake, and SubagentStart, when they run, then they pass and the subagent-start hook payload is unchanged.

Owner sketch

class OsSdlc::Project
end

class OsSdlc::Implementation::Open
  def initialize(project, work_order, tracker)
  end
end

class OsSdlc::Implementation::RerouteIntake
  def initialize(project, implementation_id, tracker, report)
  end
end

class OsSdlc::Dispatch::SubagentStart
  def initialize(root, arrival)
  end
end

Origin

  • Trigger: bin/collaborator-pass run 20261020T020325Z
  • Improvised this session: none
  • Chain: root+tracker across 4 classes ← plugins/os-sdlc/lib/os_sdlc/project/config_command.rb:78 ← DESIGN (plugins/os-sdlc/lib/os_sdlc/implementation/open.rb)
  • Root candidate: none found; searched root+tracker, RerouteIntake, SubagentStart, Implementation::Open, data_clump, preserve whole object
  • Where: plugins/os-sdlc/lib/os_sdlc/implementation/open.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 root+tracker (data_clump, score 12) spans 4 classes in concepts Dispatch, Implementation, Project. - `OsSdlc::Dispatch::SubagentStart` (`/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/dispatch/subagent_start.rb:10`) - `OsSdlc::Implementation::Open` (`/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/implementation/open.rb:10`) - `OsSdlc::Implementation::RerouteIntake` (`/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/implementation/reroute_intake.rb:8`) - `OsSdlc::Project` (`/home/jared/dev/cc-os/.claude/worktrees/crc-os-sdlc-run-3/plugins/os-sdlc/lib/os_sdlc/project.rb:4`) support 4; maximal - plugins/os-sdlc/bin/os-sdlc born at plugins/os-sdlc/lib/os_sdlc/project/config_command.rb:78 as project.root.to_s - reroute-request born at as ## Approach The clump's names are members of one object that already exists or is built upstream; pass the object. Object: `OsSdlc::Project` (built at plugins/os-sdlc/lib/os_sdlc/project/config_command.rb:78). Open and RerouteIntake use root only as the project root, which OsSdlc::Project already holds, so they take the Project built at their entry and keep tracker as the injected Tracker adapter (Project#tracker is the config spec string, not the adapter, so the adapter cannot move into the Project). SubagentStart drops its tracker keyword, which no caller or test passes, and uses Tracker::Null as Dispatch::BriefLookup does. Required work: 1. `OsSdlc::Implementation::Open` takes `project, work_order, tracker` — check: absent `root:` in `plugins/os-sdlc/lib/os_sdlc/implementation/open.rb` 2. `OsSdlc::Implementation::Open` takes `project, work_order, tracker` — check: absent `tracker:` in `plugins/os-sdlc/lib/os_sdlc/implementation/open.rb` 3. `OsSdlc::Implementation::RerouteIntake` takes `project, implementation_id, tracker, report` — check: absent `root:` in `plugins/os-sdlc/lib/os_sdlc/implementation/reroute_intake.rb` 4. `OsSdlc::Implementation::RerouteIntake` takes `project, implementation_id, tracker, report` — check: absent `tracker:` in `plugins/os-sdlc/lib/os_sdlc/implementation/reroute_intake.rb` 5. `OsSdlc::Dispatch::SubagentStart` takes `root, arrival` — check: absent `root:` in `plugins/os-sdlc/lib/os_sdlc/dispatch/subagent_start.rb` 6. `OsSdlc::Dispatch::SubagentStart` takes `root, arrival` — check: absent `tracker:` in `plugins/os-sdlc/lib/os_sdlc/dispatch/subagent_start.rb` Orchestrator work: re-measure with bin/collaborator-pass measure --runs docs/crc/os-sdlc/collaborator-runs, then stop-check. Rejected: build_once_at_entry — Open and RerouteIntake use root only as the project root, which OsSdlc::Project already holds, so they take the Project built at their entry and keep tracker as the injected Tracker adapter (Project#tracker is the config spec string, not the adapter, so the adapter cannot move into the Project). SubagentStart drops its tracker keyword, which no caller or test passes, and uses Tracker::Null as Dispatch::BriefLookup does. ## 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 root+tracker scores at most 0 (was 12) and none of root, tracker appears in its names. 2. Given a work order for a configured project, when implementation-open runs with the Project built at OsSdlc::Implementation::Initiation, then the open payload and the ticket-shape and validation errors are unchanged. 3. Given a waiting implementation, when reroute-request runs with the Project built at OsSdlc::Implementation::Rerouting, then the dispatch payload and the refusal messages are unchanged. 4. Given the tests of Open, RerouteIntake, and SubagentStart, when they run, then they pass and the subagent-start hook payload is unchanged. ## Owner sketch ```ruby class OsSdlc::Project end class OsSdlc::Implementation::Open def initialize(project, work_order, tracker) end end class OsSdlc::Implementation::RerouteIntake def initialize(project, implementation_id, tracker, report) end end class OsSdlc::Dispatch::SubagentStart def initialize(root, arrival) end end ``` ## Origin - Trigger: bin/collaborator-pass run 20261020T020325Z - Improvised this session: none - Chain: root+tracker across 4 classes ← plugins/os-sdlc/lib/os_sdlc/project/config_command.rb:78 ← DESIGN (`plugins/os-sdlc/lib/os_sdlc/implementation/open.rb`) - Root candidate: none found; searched root+tracker, RerouteIntake, SubagentStart, Implementation::Open, data_clump, preserve whole object - Where: plugins/os-sdlc/lib/os_sdlc/implementation/open.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 (persistent worktree, run 3 collaborator round).

Work started on branch crc-os-sdlc-run-3 (persistent worktree, run 3 collaborator round).
Author
Owner

Resolution

Done: Implementation::Open and RerouteIntake take an OsSdlc::Project built at Initiation and Rerouting through one builder (Project.resolve, with Project::Unconfigured when no config loads); the Tracker adapter stays injected; SubagentStart drops its unused tracker keyword. Hand-finished after escalation 59 (test defect: ~15 tests used the old signatures); one design audit (FIX: 2 blocking, 2 should-fix) answered.

Evidence: a2ddc099; 2269 runs, 0 failures, 0 errors (44.9s); rubocop 36 files no offenses; delta-check ok: data_clump root+tracker 12->0. Note: the clump moved to project+tracker (0->12), and name_collision tracker went 0->4; the data_clump total stays 209.

Follow-ups: The delta-check does not flag a clump that moves to a renamed subject (#1200, #1202). This goes into the run 3 close-out skeptic pass.

## Resolution **Done:** Implementation::Open and RerouteIntake take an OsSdlc::Project built at Initiation and Rerouting through one builder (Project.resolve, with Project::Unconfigured when no config loads); the Tracker adapter stays injected; SubagentStart drops its unused tracker keyword. Hand-finished after escalation 59 (test defect: ~15 tests used the old signatures); one design audit (FIX: 2 blocking, 2 should-fix) answered. **Evidence:** a2ddc099; 2269 runs, 0 failures, 0 errors (44.9s); rubocop 36 files no offenses; delta-check ok: data_clump root+tracker 12->0. Note: the clump moved to project+tracker (0->12), and name_collision tracker went 0->4; the data_clump total stays 209. **Follow-ups:** The delta-check does not flag a clump that moves to a renamed subject (#1200, #1202). This goes into the run 3 close-out skeptic pass.
jared closed this issue 2026-10-20 04:14:13 +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#1202
No description provided.