Check whether remetrics jumpstart git add is vendored, then migrate or exclude #1603

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

Problem

remetrics/lib/jumpstart/lib/jumpstart/configuration.rb:251-252 runs git add on the credentials path through an unquoted shell string and ignores the exit status. The directory may be vendored Jumpstart Pro code (checklist open item Q-5).

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: migration of existing call sites; behavior stays the same unless a criterion says otherwise.

Approach

Group A-18. First decide whether remetrics/lib/jumpstart is vendored third-party code (look for an upstream gem or a vendor note). If it is vendored, mark row G-085 out of scope with that reason and stop. If it is not vendored, stage the path through os-git: no use-case covers "stage one path without a commit", so either add Repository#stage(paths) to the design with a reason, or leave the call out of scope with a reason. Commit in the remetrics repository with explicit paths.

Mark every row in the checklist from the Done column as it is replaced. Mark the matching test rows in the same change. Run bin/refresh-plugins after changes to SKILL.md, hooks, or CLIs.

Required work: none beyond the acceptance criteria.

Acceptance criteria

  1. Given the investigation, when the ticket is read, then it states whether the code is vendored and gives the evidence.
  2. Given the code is vendored, when the checklist is read, then row G-085 is marked out of scope with the reason.
  3. Given the code is not vendored, when the credentials file is staged, then no shell string runs and a failure is reported, not ignored.
  4. Given row G-085, when the ticket closes, then each row is marked - [x] with Replaced by filled in, or marked out of scope with a reason, in docs/os-git/call-site-checklist.md.
  5. Given the touched code, when it is searched for Open3, system(, %x, backticks, and git argv, then no git call remains outside OsGit adapters, except sites marked out of scope with a reason.

Blocking edges

Blocked by the core ticket (#1588).

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: unquoted shell string with ignored status ← possibly vendored code ← DESIGN (docs/os-git/call-site-checklist.md Q-5)
  • 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: remetrics/lib/jumpstart/lib/jumpstart/configuration.rb
  • Session: 1a5b2630-09c9-46cb-aee4-a5a98e2e7d24
  • Transcript: /home/jared/.claude/projects/-home-jared-dev-cc-os/1a5b2630-09c9-46cb-aee4-a5a98e2e7d24.jsonl
## Problem `remetrics/lib/jumpstart/lib/jumpstart/configuration.rb:251-252` runs `git add` on the credentials path through an unquoted shell string and ignores the exit status. The directory may be vendored Jumpstart Pro code (checklist open item Q-5). 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: migration of existing call sites; behavior stays the same unless a criterion says otherwise. ## Approach Group A-18. First decide whether `remetrics/lib/jumpstart` is vendored third-party code (look for an upstream gem or a vendor note). If it is vendored, mark row G-085 out of scope with that reason and stop. If it is not vendored, stage the path through `os-git`: no use-case covers "stage one path without a commit", so either add `Repository#stage(paths)` to the design with a reason, or leave the call out of scope with a reason. Commit in the `remetrics` repository with explicit paths. Mark every row in the checklist from the `Done` column as it is replaced. Mark the matching test rows in the same change. Run `bin/refresh-plugins` after changes to `SKILL.md`, hooks, or CLIs. Required work: none beyond the acceptance criteria. ## Acceptance criteria 1. Given the investigation, when the ticket is read, then it states whether the code is vendored and gives the evidence. 2. Given the code is vendored, when the checklist is read, then row G-085 is marked out of scope with the reason. 3. Given the code is not vendored, when the credentials file is staged, then no shell string runs and a failure is reported, not ignored. 4. Given row G-085, when the ticket closes, then each row is marked `- [x]` with `Replaced by` filled in, or marked out of scope with a reason, in `docs/os-git/call-site-checklist.md`. 5. Given the touched code, when it is searched for `Open3`, `system(`, `%x`, backticks, and `git` argv, then no git call remains outside `OsGit` adapters, except sites marked out of scope with a reason. ## Blocking edges Blocked by the core ticket (#1588). ## 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: unquoted shell string with ignored status ← possibly vendored code ← DESIGN (docs/os-git/call-site-checklist.md Q-5) - 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: remetrics/lib/jumpstart/lib/jumpstart/configuration.rb - 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: lib/jumpstart is vendored Jumpstart Pro code; G-085 marked out of scope; no code changed; Repository#stage is not needed, so the stage-one-path use-case is dropped.

Evidence: remetrics README.md:1, Gemfile path gem lib/jumpstart, lib/jumpstart/MIT-LICENSE, git history shows upstream commits by Chris Oliver.

Follow-ups: none

## Resolution **Done:** lib/jumpstart is vendored Jumpstart Pro code; G-085 marked out of scope; no code changed; Repository#stage is not needed, so the stage-one-path use-case is dropped. **Evidence:** remetrics README.md:1, Gemfile path gem lib/jumpstart, lib/jumpstart/MIT-LICENSE, git history shows upstream commits by Chris Oliver. **Follow-ups:** none
jared closed this issue 2026-11-06 23:38:36 +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#1603
No description provided.