worktree start does not link gitignored runtime files (.venv, .sdlc/project.yaml) #982

Open
opened 2026-10-10 13:40:44 +00:00 by jared · 2 comments
Owner

Problem

The worktree start command does not link gitignored runtime files into a new worktree. A worktree for a project that depends on these files cannot run its test suite. The programmer repair rounds cannot fix this, because the defect is in the environment and not in the code.

Observed

worktree start ticket-13 in /home/jared/projects/finance printed:

linked: .cc-os, .sdlc/pipeline.db

It did not link .sdlc/project.yaml or the gitignored .venv/ directory.

The finance test suite calls .venv/bin/bean-query. In the worktree, 4 tests failed with:

Errno::ENOENT: No such file or directory - .../worktrees/ticket-13/.venv/bin/bean-query

The os-sdlc suite-check gate failed 3 times. The run escalated with bound_exhausted:suite-check/fail (implementation 1, ticket forgejo:jared/finance#13).

The orchestrator fixed the defect by hand. It ran ln -s /home/jared/projects/finance/.venv .venv and copied .sdlc/project.yaml into the worktree.

Reproduce

worktree start ticket-13
.venv/bin/bean-query --version

Run the second command inside the new worktree. It fails with No such file or directory because .venv is not linked.

Approach

Suggested direction only. This is not a decision.

  • Let a project declare extra paths to link, for example a key in .cc-os/config.
  • Or link .sdlc/project.yaml by default.
  • And/or have suite-check classify ENOENT on a gitignored path as an environment defect, not a code failure.

Origin

  • Trigger: worktree start ticket-13 in /home/jared/projects/finance, followed by the suite-check gate run for forgejo:jared/finance#13.
  • Improvised this session: ln -s /home/jared/projects/finance/.venv .venv and a manual copy of .sdlc/project.yaml.
  • Chain: suite-check fails with ENOENT on .venv/bin/bean-query ← worktree start does not link gitignored runtime files. Stop end: IMPROVISATION (the manual symlink and copy above).
  • Root candidate: this ticket.
  • Where: worktree CLI (os plugin) start linking.
  • Session: c3082dee-a586-4348-8b60-57e64b92833a
  • Transcript: /home/jared/.claude/projects/-home-jared-projects-finance/c3082dee-a586-4348-8b60-57e64b92833a.jsonl

Discoverer: /home/jared/projects/finance, session c3082dee-a586-4348-8b60-57e64b92833a, 2026-10-10. The worktree start linking step omits gitignored runtime files that the test suite needs.

## Problem The `worktree start` command does not link gitignored runtime files into a new worktree. A worktree for a project that depends on these files cannot run its test suite. The programmer repair rounds cannot fix this, because the defect is in the environment and not in the code. ## Observed `worktree start ticket-13` in `/home/jared/projects/finance` printed: ``` linked: .cc-os, .sdlc/pipeline.db ``` It did not link `.sdlc/project.yaml` or the gitignored `.venv/` directory. The finance test suite calls `.venv/bin/bean-query`. In the worktree, 4 tests failed with: ``` Errno::ENOENT: No such file or directory - .../worktrees/ticket-13/.venv/bin/bean-query ``` The os-sdlc suite-check gate failed 3 times. The run escalated with `bound_exhausted:suite-check/fail` (implementation 1, ticket forgejo:jared/finance#13). The orchestrator fixed the defect by hand. It ran `ln -s /home/jared/projects/finance/.venv .venv` and copied `.sdlc/project.yaml` into the worktree. ## Reproduce ``` worktree start ticket-13 .venv/bin/bean-query --version ``` Run the second command inside the new worktree. It fails with `No such file or directory` because `.venv` is not linked. ## Approach Suggested direction only. This is not a decision. - Let a project declare extra paths to link, for example a key in `.cc-os/config`. - Or link `.sdlc/project.yaml` by default. - And/or have suite-check classify `ENOENT` on a gitignored path as an environment defect, not a code failure. ## Origin - Trigger: `worktree start ticket-13` in `/home/jared/projects/finance`, followed by the suite-check gate run for forgejo:jared/finance#13. - Improvised this session: `ln -s /home/jared/projects/finance/.venv .venv` and a manual copy of `.sdlc/project.yaml`. - Chain: suite-check fails with `ENOENT` on `.venv/bin/bean-query` ← `worktree start` does not link gitignored runtime files. Stop end: `IMPROVISATION` (the manual symlink and copy above). - Root candidate: this ticket. - Where: `worktree` CLI (os plugin) start linking. - Session: c3082dee-a586-4348-8b60-57e64b92833a - Transcript: /home/jared/.claude/projects/-home-jared-projects-finance/c3082dee-a586-4348-8b60-57e64b92833a.jsonl -------- **Discoverer:** /home/jared/projects/finance, session c3082dee-a586-4348-8b60-57e64b92833a, 2026-10-10. The worktree start linking step omits gitignored runtime files that the test suite needs.
Author
Owner

Evidence folded in from #526 (older, closed as superseded): hyperthrive-websites, session 01WczDUXXTYSuFuZNRQQLf49, 2026-09-03. After 'worktree start ticket-19' the worktree had .sdlc/pipeline.db linked but not .sdlc/project.yaml (gitignored in main), so os-sdlc-runner could not open the project; the user copied the file by hand. #526 expected one of two fixes: start links or copies project.yaml, or os-sdlc-runner resolves project.yaml from the main checkout. The second option is not in this ticket's Approach. Acceptance criteria #526 had: none beyond the expected behavior. Add one here: given a gitignored .sdlc/project.yaml in the main checkout, os-sdlc-runner opens in a new worktree.

Evidence folded in from #526 (older, closed as superseded): hyperthrive-websites, session 01WczDUXXTYSuFuZNRQQLf49, 2026-09-03. After 'worktree start ticket-19' the worktree had .sdlc/pipeline.db linked but not .sdlc/project.yaml (gitignored in main), so os-sdlc-runner could not open the project; the user copied the file by hand. #526 expected one of two fixes: start links or copies project.yaml, or os-sdlc-runner resolves project.yaml from the main checkout. The second option is not in this ticket's Approach. Acceptance criteria #526 had: none beyond the expected behavior. Add one here: given a gitignored .sdlc/project.yaml in the main checkout, os-sdlc-runner opens in a new worktree.
Author
Owner

From #1589 port check: FIXED for the config route, but not by the port; it is not related to the port. Links reads worktree-symlinks from .cc-os/config and links each entry that exists in the main checkout (plugins/os-git/lib/os_git/worktree/links.rb:72,127-134), so .venv and .sdlc/project.yaml link when listed. The port keeps this. There is no default link for them, and the suite-check ENOENT classification idea is not in this code. Not closed.

From #1589 port check: FIXED for the config route, but not by the port; it is not related to the port. Links reads worktree-symlinks from .cc-os/config and links each entry that exists in the main checkout (plugins/os-git/lib/os_git/worktree/links.rb:72,127-134), so .venv and .sdlc/project.yaml link when listed. The port keeps this. There is no default link for them, and the suite-check ENOENT classification idea is not in this code. Not closed.
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#982
No description provided.