Sweep remaining test and fixture git setup onto OsGit ScratchRepo #1606

Closed
opened 2026-11-06 16:54:17 +00:00 by jared · 1 comment
Owner

Problem

About 72 test, eval, and fixture files build throwaway repositories with their own git init, add, commit, and worktree calls (section D of the checklist). Each plugin migration ticket replaces the test rows of its own plugin. This ticket is the final sweep for the rows that no migration ticket took.

Design: docs/os-git/use-cases-and-domain.md (design) and docs/os-git/call-site-checklist.md (call sites). Settled decisions are in design section 1 (docs/os-git/use-cases-and-domain.md): the gem lives in plugins/os-git with a path: source; git-context and os:worktree merge into os-git; old wrappers go only after all references are updated; design order is use-cases, objects, interfaces; os-context and os-vault become Ruby; ticket tracking stays out of os-git.

Reproduce

n/a: structural change.

Approach

Each migration ticket owns these test rows: the worktree ticket (#1589) owns G-121 to G-143; the os-sdlc ticket (#1592) owns G-144 to G-171; the takedown ticket (#1593) owns G-172 to G-174; G-175 belongs to #1595; G-176 to G-181 to #1594; G-182 and G-183 to #1597; G-184 to G-186 to #1596; G-187 to #1590; G-188 to G-191 to #1591; G-192 to #1602. After those tickets close, walk section D, find every row still unmarked, and replace its setup with OsGit::Testing::ScratchRepo. Mark a row out of scope with a reason when the file tests a deleted wrapper, or is Python test code that waits for a port.

Required work: none beyond the acceptance criteria.

Acceptance criteria

  1. Given section D of the checklist, when the ticket closes, then every row G-121 to G-192 is marked - [x] or marked out of scope with a reason.
  2. Given the test directories, when they are searched for git init, git add, git commit, and Open3 calls that start git, then none remains outside OsGit and rows marked out of scope.
  3. Given each touched plugin, when its suite runs, then it passes.

Blocking edges

Blocked by every migration ticket: #1589, #1592, #1593, #1595, #1594, #1597, #1596, #1590, #1591, #1602.

Origin

  • Trigger: User request in session 1a5b2630-09c9-46cb-aee4-a5a98e2e7d24 on 2026-11-06: one os-git gem for all local git work in cc-os and the user's projects.
  • Improvised this session: none
  • Chain: about 40 hand-built git test setups ← no shared fixture builder ← DESIGN (docs/os-git/use-cases-and-domain.md UC-29)
  • Root candidate: none found; searched open issues for git, worktree, octokit, ruby port, python, statusline, reset --hard. Related but not a match: #845, #853, #857, #1527, #1554.
  • Where: docs/os-git/call-site-checklist.md section D
  • Session: 1a5b2630-09c9-46cb-aee4-a5a98e2e7d24
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/1a5b2630-09c9-46cb-aee4-a5a98e2e7d24.jsonl
## Problem About 72 test, eval, and fixture files build throwaway repositories with their own `git init`, `add`, `commit`, and `worktree` calls (section D of the checklist). Each plugin migration ticket replaces the test rows of its own plugin. This ticket is the final sweep for the rows that no migration ticket took. Design: `docs/os-git/use-cases-and-domain.md` (design) and `docs/os-git/call-site-checklist.md` (call sites). Settled decisions are in design section 1 (`docs/os-git/use-cases-and-domain.md`): the gem lives in `plugins/os-git` with a `path:` source; `git-context` and `os:worktree` merge into `os-git`; old wrappers go only after all references are updated; design order is use-cases, objects, interfaces; `os-context` and `os-vault` become Ruby; ticket tracking stays out of `os-git`. ## Reproduce n/a: structural change. ## Approach Each migration ticket owns these test rows: the worktree ticket (#1589) owns G-121 to G-143; the os-sdlc ticket (#1592) owns G-144 to G-171; the takedown ticket (#1593) owns G-172 to G-174; G-175 belongs to #1595; G-176 to G-181 to #1594; G-182 and G-183 to #1597; G-184 to G-186 to #1596; G-187 to #1590; G-188 to G-191 to #1591; G-192 to #1602. After those tickets close, walk section D, find every row still unmarked, and replace its setup with `OsGit::Testing::ScratchRepo`. Mark a row out of scope with a reason when the file tests a deleted wrapper, or is Python test code that waits for a port. Required work: none beyond the acceptance criteria. ## Acceptance criteria 1. Given section D of the checklist, when the ticket closes, then every row G-121 to G-192 is marked `- [x]` or marked out of scope with a reason. 2. Given the test directories, when they are searched for `git init`, `git add`, `git commit`, and `Open3` calls that start git, then none remains outside `OsGit` and rows marked out of scope. 3. Given each touched plugin, when its suite runs, then it passes. ## Blocking edges Blocked by every migration ticket: #1589, #1592, #1593, #1595, #1594, #1597, #1596, #1590, #1591, #1602. ## Origin - Trigger: User request in session 1a5b2630-09c9-46cb-aee4-a5a98e2e7d24 on 2026-11-06: one os-git gem for all local git work in cc-os and the user's projects. - Improvised this session: none - Chain: about 40 hand-built git test setups ← no shared fixture builder ← DESIGN (docs/os-git/use-cases-and-domain.md UC-29) - Root candidate: none found; searched open issues for git, worktree, octokit, ruby port, python, statusline, reset --hard. Related but not a match: #845, #853, #857, #1527, #1554. - Where: docs/os-git/call-site-checklist.md section D - Session: 1a5b2630-09c9-46cb-aee4-a5a98e2e7d24 - Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/1a5b2630-09c9-46cb-aee4-a5a98e2e7d24.jsonl
Author
Owner

Resolution

Done: All test git calls go through OsGit; new ScratchRepo#stage_all. Section D rows are marked, or deferred for #1590 and #1597, or out of scope. tests/all.rb:6 has an out-of-scope note: it runs before the bundle loads.

Evidence: main 9cd21db7 (commit 0a4ddd7e). os 241 runs, os-git 363 runs, os-sdlc 3502 runs, all 0 failures.

Follow-ups: none: Python subprocess git in test_patch_applier.py stays with #1597

## Resolution **Done:** All test git calls go through OsGit; new ScratchRepo#stage_all. Section D rows are marked, or deferred for #1590 and #1597, or out of scope. tests/all.rb:6 has an out-of-scope note: it runs before the bundle loads. **Evidence:** main 9cd21db7 (commit 0a4ddd7e). os 241 runs, os-git 363 runs, os-sdlc 3502 runs, all 0 failures. **Follow-ups:** none: Python subprocess git in test_patch_applier.py stays with #1597
jared closed this issue 2026-11-07 07:08:48 +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#1606
No description provided.