Sweep os-backlog consumers again and remove the old command names #1624
Labels
No labels
P0
P1
P2
P3
bug
category/code-change
category/cross-repo
category/eval-run
category/investigation
category/no-test-target
category/owner-ruling
category/prose-artifact
category/recurring-chore
category/structure
category/umbrella
crc-refactor
create
delete
enhancement
filed-by/agent
filed-by/user
frozen
lint-rule
needs-info
needs-triage
next
plugin/cc-architect
plugin/os
plugin/os-adr
plugin/os-aidd-lint
plugin/os-backlog
plugin/os-context
plugin/os-doc-hygiene
plugin/os-sdlc
plugin/os-vault
project/cc-os
ready-for-agent
ready-for-human
recurring
review
rule-proposal
update
waiting
wayfinder:grilling
wayfinder:map
wayfinder:map
wayfinder:research
wayfinder:task
wayfinder:task
wontfix
worklist/deviations
worklist/lint-rule
worklist/new-implement-build
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
jared/cc-os#1624
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Problem
Jared asked for a double check of the projects that use os-backlog before the work counts as complete. The first sweep did not search session transcripts or the 13 worktrees under
.claude/worktrees.Approach
Sweep again with the same scope as the first sweep, plus transcripts and worktrees. Read
~/.cc-os/os-backlog-old-names.log. Remove the aliases only when both are empty. If a consumer remains, fix it first.Required work:
map "inspect"fromplugins/os-backlog/lib/backlog/cli.rb(lines 19-94), soCLIkeeps only theticket,project, andlabelsubcommands — check: absentdesc "issue-create"inplugins/os-backlog/lib/backlog/cli.rbplugins/os-backlog/lib/backlog/cli/old_names.rband itsCLI::OldNames.recordcall inplugins/os-backlog/lib/backlog/cli_startup.rb— check: absentos-backlog-old-names.loginplugins/os-backlog/lib/backlog/**/*.rbBacklog::CliGroup(plugins/os-backlog/lib/backlog/cli_group.rb) to the mixin moduleBacklog::CLI::Groupinplugins/os-backlog/lib/backlog/cli/group.rb. A superclass cannot be nested under the class it parents, soCLI,TicketGroup,ProjectGroup, andLabelGroupeach become< Thorwithinclude Group, and the files that reopenclass CLI < CliGroupreopenclass CLI < Thor(A2/A15, implementation 259) — check: absentCliGroupinplugins/os-backlog/lib/**/*.rbBacklog::CliOptionSets(plugins/os-backlog/lib/backlog/cli_option_sets.rb) toBacklog::CLI::OptionSetsinplugins/os-backlog/lib/backlog/cli/option_sets.rb— check: absentCliOptionSetsinplugins/os-backlog/lib/**/*.rbBacklog::CliStartup(plugins/os-backlog/lib/backlog/cli_startup.rb) toBacklog::CLI::Startupinplugins/os-backlog/lib/backlog/cli/startup.rb.GroupextendsOptionSetsandStartupinto each class that includes it — check: absentCliStartupinplugins/os-backlog/lib/**/*.rbticket closeandticket reviewshare (resolution_options!plus--approved-by) intoCLI::OptionSets. After item 1, the lists ofticket createandticket claimhave one user each and stay inTicketGroup(A12) — check: absentmethod_option :approved_byinplugins/os-backlog/lib/backlog/cli/ticket_group.rbOLD_NAMEregex inplugins/os-backlog/tests/project_port_note_pins_test.rbfrom a literal list of the 18 old names, becauseCLI::OldNames::NAMESis deleted, and remove the alias-log helper inplugins/os-backlog/tests/cli_ticket_project_label_groups_test.rb— check: absentOldNamesinplugins/os-backlog/tests/**/*.rbplugins/os-backlog/design/generatedfrom the repository root withplugins/os-sdlc/bin/system-model build plugins/os-backlog. The journey files still model classes that slices 4 to 8 deleted, for exampleBacklog::IssueCreate::Submission. The writer deletes the old.c4files first, and the journey names come from the newuse_casetags — check: absentSubmissioninplugins/os-backlog/design/generated/**/*os-backlog commenttoos-backlog ticket commentindocs/agents/issue-tracker.md:16— check: absentos-backlog commentindocs/agents/issue-tracker.mdos-backlog closeandclose --needs-reviewtoos-backlog ticket closeandticket review --needs-reviewindocs/os-backlog-lifecycle.md:49,51— check: absentos-backlog closeindocs/os-backlog-lifecycle.mdissue-createandissuestoticket createandticket listinplugins/os-sdlc/reference/worktree-parallelism.md:27andplugins/os-sdlc/reference/spec-and-ticket-layer.md:20,49,59,84. Leaveplugins/os-sdlc/reference/tracer-walk-findings.md:22, which is a dated findings record — check: absentissue-createinplugins/os-sdlc/reference/{worktree-parallelism,spec-and-ticket-layer}.mdOrchestrator work:
f84e1a22on ticket-1624: the os-backlog tests call the CLI by the new names, including theuse_casetags and the two-word reading inRunCliWords. The suite stayed at 532 runs with 0 failures, because the old names were still aliases.56534258): the second sweep record,docs/system-design-format/proof/2026-11-07-os-backlog-consumer-sweep-2.md. It shows zero live callers, and the alias log is absent (empty).reference/notes that name old commands (sweep record, sections 5.2 and 5.3). Report the two handoffs inruby-gems; they are records and stay unchanged.bin/refresh-pluginsafter the merge.Acceptance criteria
ticket,project, andlabelcommands, when the suite runs, then each passes.plugins/os-backlog/design/generated, when a reader searches them, then no file names a class that the port deleted, for exampleBacklog::IssueCreate::Submission.Owner sketch
Groupis a module, not a superclass, becauseBacklog::CLIcannot inherit from a class nested under itself. Ruby puts an included module between the class andThor, soGroup#initializereads the config and callssuper, andGroup.includedgives each class the class-levelstart,dispatch, and option-set methods. This shape was tested with Thor (comment on #1624). WithOldNames.recordgone,Startup#starthas no other change: an old name reaches Thor as an unknown command and exits nonzero.IssueCommandsandProjectCommandskeep their method names. The error prefixes inIssueCommands,CliOptions, and the other lib files (sweep record, section 8) are messages, not callers, and stay. The test-writer removes the retired alias tests, and changes each other old-name call to its new name with the same arguments.Retired tests
plugins/os-backlog/tests/cli_ticket_project_label_groups_test.rb#test_each_new_name_gives_the_same_output_as_the_old_name
plugins/os-backlog/tests/cli_ticket_project_label_groups_test.rb#test_an_old_name_logs_one_line_naming_it
plugins/os-backlog/tests/ticket_label_cli_test.rb#test_label_adds_no_line_to_the_alias_log
Blocking edges
Blocked by #1623
Origin
docs/system-design-format/proof/2026-11-06-os-backlog-domain-objects.md, slice 11plugins/os-backlog/CONTEXT.md)VERDICT: CREATE
Before this slice closes, regenerate
plugins/os-backlog/design/generated. The journey files last changed on 2026-11-06 and still model the classes that slices 4 to 8 delete, for exampleSubmission.Added from the lens challenge of implementation 259 (#1622): when the aliases go, do two more things. (1) Move
Backlog::CliGroup,CliOptionSets, andCliStartupunderCLI. They are top-level, but every caller is in the CLI concept (A2/A15 code defect). A superclass cannot be nested under the class it parents, so makeCLI::Groupa mixin module:class CLI < Thor; include Group, and each group< Thor; include Group. This shape was tested with Thor. (2) The option lists ofticket create,close, andclaimcopy the old commands incli.rb(A12). The copy ends when the old commands are deleted. If any list stays shared (ticket reviewcopiesclose), extract it into the option-set module.Work started on branch ticket-1624. Plan: commit the item 7 test renames first (green while the aliases exist, as in
2420b148for #1621), then run the pipeline on the remaining items.Resolution
Done: The 18 old command names and the alias log writer are deleted; an old name gets the Thor unknown-command error. CliGroup, CliOptionSets, and CliStartup moved under CLI as the Group mixin, OptionSets, and Startup. ticket close and ticket review share one option list. bin/os-backlog passes env, and CLI::Wiring has no ENV default (A6). The os-backlog tests call the new names. design/generated regenerated. Agent-guidance docs name the new commands. Memory (20 files) and vault (5 notes) text updated. The os-backlog domain-objects port (ADR-0307) is complete.
Evidence: Second sweep: docs/system-design-format/proof/2026-11-07-os-backlog-consumer-sweep-2.md (
56534258), no live caller; alias log empty since the #1623 merge. Implementation 261 complete (17 dispatches, 18 min 36 s), commitsf84e1a22,bc6d8411,14fd26ed,d6e18387,9b39aef5,ba5f46c6. os-backlog 531, os-sdlc 3510, takedown 626, os 241 runs, 0 failures. Lint: lib clean; test files carry the same 30 offenses as main. Live: issue-show, issues, comment, close, checkout, labels, projects exit 1 with Could not find command.Follow-ups: Two ruby-gems handoffs name os-backlog close (decision-model 2026-10-29-1828 line 46, llm-stack 2026-10-31-1339 line 72); they are dated records and stay. The flaky ResolveCliTest is captured separately.