Resolve the issue store path independently of the working directory #15

Closed
opened 2026-08-10 10:07:07 +00:00 by claude · 0 comments
Collaborator

Summary

Скрипты ищут tmp/issues относительно cwd. Из любой подпапки репозитория
проверка сообщает, что store пуст, хотя он существует уровнем выше; а
записывающие скрипты молча создают там второй store.

Spec

none

Steps to reproduce

  1. cd tmp/issues
  2. python3 ../../skills/issue/scripts/issue_check.py
  3. python3 ../../skills/issue/scripts/issue_index.py

Expected

Store находится (поиск вверх до корня репозитория) — либо, если не найден,
сообщение говорит правду: каталог не найден отсюда. Записывающие скрипты не
создают новый store в случайном месте.

Actual

Шаг 2 — issue_check.py: store tmp/issues is empty и выход 1, хотя в store
девять issue. Шаг 3 — issue_index.py печатает tmp/issues/INDEX.md — 0 issue(s) и выходит с кодом 0, создав второй, пустой store в
tmp/issues/tmp/issues/. Об этом не сообщается ничем.

Environment

  • skills/issue/scripts/issue.py:51ISSUE_ROOT = os.path.join("tmp", "issues"), относительный путь, разрешается от cwd. Это default для --out
    во всех скриптах обоих слоёв: issue_check.py:29, issue_tree.py:69,
    issue_new.py:154, issue_index.py:82, sync/pull.py:111,
    sync/push.py:93, sync/remote.py:42, sync/comment.py:46.
  • skills/issue/scripts/issue_check.py:38 и issue_tree.py:74 — оба говорят
    «is empty» там, где каталога просто нет по этому пути.
  • skills/issue/scripts/issue.py:380 и issue_index.py:74
    os.makedirs(root, exist_ok=True): отсутствующий store создаётся молча, и
    промах по cwd превращается во второй store вместо ошибки.

Кусается по-настоящему: cd в одном вызове shell переживает вызов, и
следующая проверка рапортует пустой store на непустом.

Acceptance criteria

  • issue_check.py, issue_tree.py, issue_index.py из любой подпапки
    репозитория видят тот же store, что и из корня
  • когда store действительно не найден, сообщение отличает «каталога нет»
    от «каталог пуст»
  • запись в несуществующий store не создаёт его молча по относительному
    пути от cwd
  • скрипты слоя sync берут тот же корень, что и слой issue
  • добавлен тест: запуск из подпапки даёт тот же результат, что из корня
## Summary Скрипты ищут `tmp/issues` относительно cwd. Из любой подпапки репозитория проверка сообщает, что store пуст, хотя он существует уровнем выше; а записывающие скрипты молча создают там второй store. ## Spec none ## Steps to reproduce 1. `cd tmp/issues` 2. `python3 ../../skills/issue/scripts/issue_check.py` 3. `python3 ../../skills/issue/scripts/issue_index.py` ## Expected Store находится (поиск вверх до корня репозитория) — либо, если не найден, сообщение говорит правду: каталог не найден отсюда. Записывающие скрипты не создают новый store в случайном месте. ## Actual Шаг 2 — `issue_check.py: store tmp/issues is empty` и выход 1, хотя в store девять issue. Шаг 3 — `issue_index.py` печатает `tmp/issues/INDEX.md — 0 issue(s)` и выходит с кодом 0, создав второй, пустой store в `tmp/issues/tmp/issues/`. Об этом не сообщается ничем. ## Environment - `skills/issue/scripts/issue.py:51` — `ISSUE_ROOT = os.path.join("tmp", "issues")`, относительный путь, разрешается от cwd. Это default для `--out` во всех скриптах обоих слоёв: `issue_check.py:29`, `issue_tree.py:69`, `issue_new.py:154`, `issue_index.py:82`, `sync/pull.py:111`, `sync/push.py:93`, `sync/remote.py:42`, `sync/comment.py:46`. - `skills/issue/scripts/issue_check.py:38` и `issue_tree.py:74` — оба говорят «is empty» там, где каталога просто нет по этому пути. - `skills/issue/scripts/issue.py:380` и `issue_index.py:74` — `os.makedirs(root, exist_ok=True)`: отсутствующий store создаётся молча, и промах по cwd превращается во второй store вместо ошибки. Кусается по-настоящему: `cd` в одном вызове shell переживает вызов, и следующая проверка рапортует пустой store на непустом. ## Acceptance criteria - [x] `issue_check.py`, `issue_tree.py`, `issue_index.py` из любой подпапки репозитория видят тот же store, что и из корня - [x] когда store действительно не найден, сообщение отличает «каталога нет» от «каталог пуст» - [x] запись в несуществующий store не создаёт его молча по относительному пути от cwd - [x] скрипты слоя `sync` берут тот же корень, что и слой `issue` - [x] добавлен тест: запуск из подпапки даёт тот же результат, что из корня
claude added the comp/synccomp/issue
type
bug
severity
low
labels 2026-08-10 10:07:07 +00:00
claude changed reference from feat/issue-cache-scripts to feat/issue-cache-scripts 2026-08-10 10:58:15 +00:00
claude reopened this issue 2026-08-10 10:58:15 +00:00
Sign in to join this conversation.