os-sdlc: required-work-check without an id prints its own usage #839

Closed
opened 2026-09-29 21:07:16 +00:00 by jared · 2 comments
Owner

Problem

os-sdlc-required-work-check with no argument prints the usage text of retired-tests-check. The agent then gets a usage line for the wrong command. Both commands go through Boot::Inputs.implementation_check to DispatchCommands::ArgsHolder#implementation_id!, and that method names one command only.

Reproduce

~/.claude/plugins/os-sdlc/bin/os-sdlc-required-work-check; echo $?

Approach

The usage error names the command that ran. The command name comes from the Boot command table entry.

Required work: none beyond the acceptance criteria.

Acceptance criteria

  1. Given no argument, when os-sdlc-required-work-check runs, then its usage error names os-sdlc-required-work-check.
  2. Given no argument, when os-sdlc-retired-tests-check runs, then its output is unchanged.

Owner sketch

  • OsSdlc::Parser::DispatchCommands::ArgsHolder#implementation_id!(command): the usage error names the given command: "os-sdlc- requires an implementation id, e.g. os-sdlc- 7".
  • OsSdlc::Controller::Boot::Inputs.implementation_check(command): returns the input lambda for one command; the reroute-request input passes "reroute-request".
  • OsSdlc::Controller::Boot::Commands: wires retired-tests-check, required-work-check and mutation-check each with its own command name.

Origin

  • Trigger: #834 second code review (commit 72fc9ff8)
  • Improvised this session: none
  • Chain: wrong usage text ← one shared ArgsHolder#implementation_id! with a fixed command name ← DESIGN (plugins/os-sdlc/lib/os_sdlc/controller/boot/inputs.rb)
  • Root candidate: none
  • Where: DispatchCommands::ArgsHolder#implementation_id!, Boot::Inputs.implementation_check
  • Session: 380820d5-6677-444c-a207-9648cba38a64
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-crc-pass-os-sdlc/380820d5-6677-444c-a207-9648cba38a64.jsonl

Design

docs/takedown/839-tracer/final-design.json (base cf6bd2ca92ab1cccc98d59cc83c78a8b3f00dae8). Place failing_tests and code_files from this file exactly as given.

## Problem `os-sdlc-required-work-check` with no argument prints the usage text of `retired-tests-check`. The agent then gets a usage line for the wrong command. Both commands go through `Boot::Inputs.implementation_check` to `DispatchCommands::ArgsHolder#implementation_id!`, and that method names one command only. ## Reproduce ``` ~/.claude/plugins/os-sdlc/bin/os-sdlc-required-work-check; echo $? ``` ## Approach The usage error names the command that ran. The command name comes from the Boot command table entry. Required work: none beyond the acceptance criteria. ## Acceptance criteria 1. Given no argument, when `os-sdlc-required-work-check` runs, then its usage error names `os-sdlc-required-work-check`. 2. Given no argument, when `os-sdlc-retired-tests-check` runs, then its output is unchanged. ## Owner sketch - `OsSdlc::Parser::DispatchCommands::ArgsHolder#implementation_id!(command)`: the usage error names the given command: "os-sdlc-<command> requires an implementation id, e.g. os-sdlc-<command> 7". - `OsSdlc::Controller::Boot::Inputs.implementation_check(command)`: returns the input lambda for one command; the reroute-request input passes "reroute-request". - `OsSdlc::Controller::Boot::Commands`: wires retired-tests-check, required-work-check and mutation-check each with its own command name. ## Origin - Trigger: #834 second code review (commit 72fc9ff8) - Improvised this session: none - Chain: wrong usage text ← one shared ArgsHolder#implementation_id! with a fixed command name ← DESIGN (plugins/os-sdlc/lib/os_sdlc/controller/boot/inputs.rb) - Root candidate: none - Where: DispatchCommands::ArgsHolder#implementation_id!, Boot::Inputs.implementation_check - Session: 380820d5-6677-444c-a207-9648cba38a64 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os--claude-worktrees-crc-pass-os-sdlc/380820d5-6677-444c-a207-9648cba38a64.jsonl ## Design `docs/takedown/839-tracer/final-design.json` (base `cf6bd2ca92ab1cccc98d59cc83c78a8b3f00dae8`). Place `failing_tests` and `code_files` from this file exactly as given.
Author
Owner

Work started: takedown tracer for #972 on branch prism-architect (persistent worktree), map takedown-implement, design docs/takedown/839-tracer/final-design.json.

Work started: takedown tracer for #972 on branch `prism-architect` (persistent worktree), map `takedown-implement`, design `docs/takedown/839-tracer/final-design.json`.
Author
Owner

Resolution

Done: required-work-check, retired-tests-check and mutation-check each name their own command in the missing-id usage error; reroute-request passes its own name. Placed from the hand-written takedown design by the takedown-implement map (tracer for #972).

Evidence: Implementation 35 reached merge-ready (implementation_complete), commit fe5584e0; suite gate green; tests/controller/boot_implementation_id_usage_test.rb red at base, green after; all four placed files byte-identical to docs/takedown/839-tracer/final-design.json.

Follow-ups: none

## Resolution **Done:** required-work-check, retired-tests-check and mutation-check each name their own command in the missing-id usage error; reroute-request passes its own name. Placed from the hand-written takedown design by the takedown-implement map (tracer for #972). **Evidence:** Implementation 35 reached merge-ready (implementation_complete), commit fe5584e0; suite gate green; tests/controller/boot_implementation_id_usage_test.rb red at base, green after; all four placed files byte-identical to docs/takedown/839-tracer/final-design.json. **Follow-ups:** none
jared closed this issue 2026-10-09 19:09:27 +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#839
No description provided.