Add Project and Label, then delete the old issue backends #1621
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#1621
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
The project commands, label commands, wakeup, and session note still use the old classes. The old backends stay in the tree until these move.
Approach
Add
ProjectandLabel. Move wakeup and the session note to them. DeleteIssues,IssuesTracker, and the old backends. Keephooks/session_start.rb, because it is live. This slice also does the work of #1040, becauseProjectbecomes the one owner of the tracker lookup. Close #1040 when this slice ships. #1594 runs first, because it changes the remote reads inproject_index. Owned rules: inventory 1.7 (reserved prefixes, ten categories, one category).Required work:
Project— check: presentclass Projectinplugins/os-backlog/lib/backlog/**/*.rbLabelwithscopeandsync— check: presentclass Labelinplugins/os-backlog/lib/backlog/**/*.rbSessionNoteto the new objects.Issues,IssuesTracker, and the old backends — check: absentIssuesTrackerinplugins/os-backlog/lib/backlog/**/*.rbTracker.valid?,Tracker.kind, andTracker.issues_destination. Callers useTracker::Address. Deleteissues_destination, which has no library caller. Move their test pins totests/tracker/address_test.rb. — check: absentdef self.kindinplugins/os-backlog/lib/backlog/tracker.rbTicket#closeand#request_review, and letTracker#write_commentsread posted comments and pass them to a pureTicketmethod (lens A11, signal atticket.rb:49,59). A missing-parts refusal must still come before any write. Apply the same rule atticket/claiming.rb:43:return_to_queuereturns whether it posted before save, so pass the comments in fromClaimandIssueTarget.IssueDraftand movePRIORITY_LABELSfromIssuestoTicket; the priority rule stays only inTicket::CreateGates(lens A12) — check: absentIssueDraftinplugins/os-backlog/lib/backlog/**/*.rbCategoryLabelstoLabeland deleteissue_create.rb(lens A15). Callers:ticket.rb,canonical_labels.rb,ticket/label_set.rb,ticket/create_gates.rb,ticket/draft.rb,cli/tracker_issues.rb— check: absentclass IssueCreateinplugins/os-backlog/lib/backlog/**/*.rbplugins/os-sdlc/eval/ticket-takedown/lib/takedown/adapter/backlog_tracker.rbtoProjectandTicket, because it callsBacklog::Issues.build. Slice 10 still moves it to the CLI. — check: absentBacklog::Issuesinplugins/os-sdlc/eval/ticket-takedown/lib/takedown/adapter/backlog_tracker.rbRuling 78: no shared cc-os gem in this slice.
Projectstays in os-backlog and owns its reader, with no behavior change.plugins/os-sdlc/tests/crc/tickets_bin_test.rbalready runs throughTicket::Draft.Acceptance criteria
Projectrefuses with the same message as before the port.config-writeruns, then the comments and blank lines stay.validate-templateon a passing ticket, when it runs, then it prints a confirmation line (defect 20).wakeup=true, whenbin/wakeup-pollruns, then it reaches the same tracker and gives the same result as before the port.closewith a missing resolution part, when it runs, then it refuses before any write, andTracker#savereceives no comment.closeorclose --needs-reviewruns again, thenTracker#saveposts no second comment, and the first comment keeps the same text as before the port.return_to_queueruns throughClaimorIssueTarget, thenTracker#saveposts no second comment, and the caller gets the same result as before the port.Owner sketch
Non-goals
Do not rename a command before slice 9. Do not change
## Resolution,**Follow-ups:**, the body headings, the check form, the label names, or theissue-showJSON keys. Do not make a behavior change that this ticket does not name.Blocking edges
Blocked by #1620
Blocked by #1594
Origin
docs/system-design-format/proof/2026-11-06-os-backlog-domain-objects.md, slice 8plugins/os-backlog/CONTEXT.md)VERDICT: CREATE
From #1615: Tracker.valid?, Tracker.kind, and Tracker.issues_destination only forward to Tracker::Address. Remove them here. Also move the two remaining address splits in issues.rb and issue_show.rb to Tracker::Address.slug, if those files survive.
From #857: skills/route/SKILL.md lines 30, 41, 42, 52 and references/cross-project-filing.md line 23 still tell agents to run gh. Change them with the label work here.
Skeptic dropped a follow-up ticket for the os-sdlc raw .cc-os/config reads (depth-1 rule). Note for slice 10 (#1623):
tracker/backlog.rbandtracker/issue_source/tracker_lookup.rbread the file directly and skip the subdirectory override lookup, so os-sdlc and os-backlog can resolve different trackers in one directory. No separate ticket exists, which changes the 'separate ticket' part of ruling 78.Work started on branch ticket-1621.
Resolution
Done: Project owns the tracker lookup, config writes, inspect, route, wakeup, and the session note. Label owns scope labels, label sync, and CategoryLabels. Each Host absorbs its old backend. Issues, IssuesTracker, IssueDraft, IssueCreate, EnsureLabels, Tracker::Resolver, and the Tracker forwarders are deleted. Ticket::Outbox stages comments, and Tracker#save reads posted comments before its first write. Defects 16 and 20 are fixed. The takedown adapter uses Project and Ticket.
Evidence: main
1fb00d98(pins2420b148). On main: os-backlog 525 runs, os-sdlc 3502 runs, 0 failures; takedown 623 runs, 0 failures on the branch. Lint clean on all os-backlog production code and 37 changed test files. Read-only CLI commands (issue-show, issue-comments, labels, issues, inspect, projects, resolve) give the same output on the old and new builds. Implementations 257 (failed, #1298 occurrence) and 258 (hand-finished). Output changes are listed in the commit message.Follow-ups: Slice 10 (#1623) moves the takedown adapter to the CLI and routes the os-sdlc raw .cc-os/config reads through os-backlog (note posted on this ticket). Hosts still default env: ENV (lens A6 holds for Project only): none, because bin entry scripts pass the environment and slice 10 revisits the adapters.