RunnerCLI lives in pipeline/ but is a CLI #746

Closed
opened 2026-09-26 14:43:21 +00:00 by jared · 2 comments
Owner

Problem

plugins/os-sdlc/lib/os_sdlc/pipeline/runner_cli.rb parses arguments, prints output, and exits the process. ADR-0222 says pipeline/ holds orchestration only, not a CLI entry point. RunnerCLI accounts for 2 of the baseline entries the ADR-0222 rootless/misplaced-root tracking carries (pipeline -> PostToolUse, pipeline -> SubagentStart).

Approach

Move RunnerCLI to plugins/os-sdlc/lib/os_sdlc/cli/runner_cli.rb, keeping the constant name unchanged, so pipeline/ no longer holds a CLI file. Drop the 2 baseline entries this move removes. Before moving, check plugins/os-sdlc/bin/os-sdlc-runner for a require path that names the current pipeline/ location.

Required work:

  1. Move plugins/os-sdlc/lib/os_sdlc/pipeline/runner_cli.rb to plugins/os-sdlc/lib/os_sdlc/cli/runner_cli.rb without renaming the constant.
  2. Check plugins/os-sdlc/bin/os-sdlc-runner for a require path or reference to the old pipeline/ location and update it if one exists.
  3. Drop the 2 baseline entries (pipeline -> PostToolUse, pipeline -> SubagentStart) that RunnerCLI's old location accounts for.

Rejected: leaving RunnerCLI under pipeline/ — a CLI entry point that parses arguments and exits the process is not orchestration, the thing ADR-0222 reserves pipeline/ for.

Acceptance criteria

  1. Given the moved file, when read, then it lives at plugins/os-sdlc/lib/os_sdlc/cli/runner_cli.rb and the constant name is unchanged.
  2. Given plugins/os-sdlc/bin/os-sdlc-runner, when run after the move, then it resolves RunnerCLI without a broken require path.
  3. Given the baseline that tracks pipeline/ entries, when checked after this change, then the 2 entries RunnerCLI accounted for are gone.

Owner sketch

class Cli::RunnerCLI
  def run(argv)
  end
end

Origin

  • Trigger: user review of pipeline/runner_cli.rb against ADR-0222's pipeline/-is-orchestration-only rule, 2026-09-26.
  • Improvised this session: none.
  • Chain: RunnerCLI sits in pipeline/ ← the CLI was added to pipeline/ before ADR-0222 drew the orchestration-only boundary for that directory ← DESIGN, ADR-0222 (supersedes ADR-0196, amends ADR-0194) states pipeline/ holds orchestration only.
  • Root candidate: this ticket.
  • Where: plugins/os-sdlc/lib/os_sdlc/pipeline/runner_cli.rb, plugins/os-sdlc/bin/os-sdlc-runner
  • Session: d0c72a0b-34c7-4dae-bf3b-7400ef21ad4a
  • Transcript: not available in this invocation
## Problem plugins/os-sdlc/lib/os_sdlc/pipeline/runner_cli.rb parses arguments, prints output, and exits the process. ADR-0222 says pipeline/ holds orchestration only, not a CLI entry point. RunnerCLI accounts for 2 of the baseline entries the ADR-0222 rootless/misplaced-root tracking carries (pipeline -> PostToolUse, pipeline -> SubagentStart). ## Approach Move RunnerCLI to plugins/os-sdlc/lib/os_sdlc/cli/runner_cli.rb, keeping the constant name unchanged, so pipeline/ no longer holds a CLI file. Drop the 2 baseline entries this move removes. Before moving, check plugins/os-sdlc/bin/os-sdlc-runner for a require path that names the current pipeline/ location. Required work: 1. Move plugins/os-sdlc/lib/os_sdlc/pipeline/runner_cli.rb to plugins/os-sdlc/lib/os_sdlc/cli/runner_cli.rb without renaming the constant. 2. Check plugins/os-sdlc/bin/os-sdlc-runner for a require path or reference to the old pipeline/ location and update it if one exists. 3. Drop the 2 baseline entries (pipeline -> PostToolUse, pipeline -> SubagentStart) that RunnerCLI's old location accounts for. Rejected: leaving RunnerCLI under pipeline/ — a CLI entry point that parses arguments and exits the process is not orchestration, the thing ADR-0222 reserves pipeline/ for. ## Acceptance criteria 1. Given the moved file, when read, then it lives at plugins/os-sdlc/lib/os_sdlc/cli/runner_cli.rb and the constant name is unchanged. 2. Given plugins/os-sdlc/bin/os-sdlc-runner, when run after the move, then it resolves RunnerCLI without a broken require path. 3. Given the baseline that tracks pipeline/ entries, when checked after this change, then the 2 entries RunnerCLI accounted for are gone. ## Owner sketch ```ruby class Cli::RunnerCLI def run(argv) end end ``` ## Origin - Trigger: user review of pipeline/runner_cli.rb against ADR-0222's pipeline/-is-orchestration-only rule, 2026-09-26. - Improvised this session: none. - Chain: RunnerCLI sits in pipeline/ ← the CLI was added to pipeline/ before ADR-0222 drew the orchestration-only boundary for that directory ← DESIGN, ADR-0222 (supersedes ADR-0196, amends ADR-0194) states pipeline/ holds orchestration only. - Root candidate: this ticket. - Where: plugins/os-sdlc/lib/os_sdlc/pipeline/runner_cli.rb, plugins/os-sdlc/bin/os-sdlc-runner - Session: d0c72a0b-34c7-4dae-bf3b-7400ef21ad4a - Transcript: not available in this invocation
Author
Owner

Started on branch crc-pass-os-sdlc.

Started on branch crc-pass-os-sdlc.
Author
Owner

Resolution

Done: Moved OsSdlc::RunnerCLI from pipeline/ to cli/ (constant unchanged) and updated all live path references; no baseline change in inward-dependency, concept-root, or Zeitwerk tests.

Evidence: commit e79b196b (rename) + a8831de7 (reference updates); suite: 1430 runs, 3252 assertions, 0 failures, 0 errors, 10 skips; bin/os-sdlc-runner --help exit 0

Follow-ups: none

## Resolution **Done:** Moved OsSdlc::RunnerCLI from pipeline/ to cli/ (constant unchanged) and updated all live path references; no baseline change in inward-dependency, concept-root, or Zeitwerk tests. **Evidence:** commit e79b196b (rename) + a8831de7 (reference updates); suite: 1430 runs, 3252 assertions, 0 failures, 0 errors, 10 skips; bin/os-sdlc-runner --help exit 0 **Follow-ups:** none
jared closed this issue 2026-09-26 14:50:02 +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#746
No description provided.