Delete the old git wrappers after all references are updated #1607
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#1607
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
After the migrations, nine old wrappers have no callers (section E of the checklist):
OsSdlc::Git::RepoandDiff,Worktree::Git,GitContext::Git,CommitContext::Git, theHandoff::Repositorygit helper,OsMe::Store,RealGitandRealGitState, andRealGitStateProvider. The plugincc-plugins/git-contextand the gemruby-gems/git-contexthave no users either. Settled by the user: an old wrapper is removed only after every reference is updated and nothing breaks.Design:
docs/os-git/use-cases-and-domain.md(design) anddocs/os-git/call-site-checklist.md(call sites).Reproduce
n/a: deletion.
Approach
For each wrapper, run a search for its constant and its file path across
~/dev(cc-os, ruby-gems, cc-plugins, delta-refinery, llf-schema, hyperthrive_dev, remetrics). Delete the wrapper only when the search finds no reference outside its own file and its own tests. Delete its tests with it. Rows E-08 and E-09 (Python) stay if the Q7 ruling (#1597) defers the port: mark them deferred. Removeplugins/osworktree code, thecc-plugins/git-contextplugin, andruby-gems/git-context(a commit in each repository, explicit paths). Remove the old names frombin/refresh-pluginsand from the plugin registry. Update ADR affected-paths that name removed files only through/os-adr:createrules; do not edit ADRs by hand.Required work:
plugins/os-sdlc/lib/os_sdlc/git/repo.rb— check: absentclass Repoinplugins/os-sdlc/lib/os_sdlc/git/repo.rbplugins/os/lib/worktree/git.rb— check: absentclass Gitinplugins/os/lib/worktree/git.rbAcceptance criteria
plugins/, when it is searched forOpen3,system(,%x, and backticks that startgit, then no call remains outsideOsGitadapters and rows marked out of scope with a reason.- [x], and rows E-08 and E-09 are marked- [x]or deferred with a reason.git-contextandos:worktree, when a new session starts afterbin/refresh-plugins, then the old plugin entries are absent and theos-gitentries load.Blocking edges
Blocked by every migration ticket and by the test sweep (#1606), the prompt-text ticket (#1605), and the git-context ticket (#1591).
Origin
Resolution
Done: Deleted OsSdlc::Git (E-01, E-03), plugins/os/lib/worktree (E-02), and the commit_context fork (E-05, in #1591). No raw git remains in production Ruby except row G-057, deferred. By ruling 1 the git-context plugin, the gem, plugins/os/bin/worktree, and the os:worktree skill stay, so AC 5 is not met here; #1631 owns it. E-08 and E-09 are deferred.
Evidence: main
9cd21db7(b6670cc2,01ba7487). os-sdlc 3502 runs, os 241, os-git 363, os-backlog 497, os-me 438, takedown 623, all 0 failures; rubocop on os-git clean; worktree CLI runs. Two stranger reviews; rulings in docs/crc/os-sdlc/fast-batch-os-git-final/rulings.tsv.Follow-ups: #1631 (skeptic VERDICT: CREATE). plugins/*/design/generated still name deleted classes until the next generation run.