Stop materializing the issue store for label payloads #19
Reference in New Issue
Block a user
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?
Summary
labels.pyпередаёт корень стора только ради каталога.payload/, и начекауте без стора молча создаёт
tmp/issues/.payload/. Бутстрапу меток сторissue не нужен вообще.
Spec
none
Steps to reproduce
tmp/issuesотсутствует.ls -a tmp/issuesExpected
Каталога
tmp/issuesнет. Работа с метками репозитория не касается стораissue: ни читает его, ни создаёт.
Actual
Появился
tmp/issues/.payload/с JSON-телами запросов. Стор материализован какпобочный эффект операции, которая к issue не относится, и ничем об этом не
сообщено.
Environment
skills/sync/scripts/labels.py:189,215—out_root=issue.ISSUE_ROOTпередаётся исключительно затем, чтобы
_gitea.apiбыло куда положить файлзапроса.
skills/sync/scripts/_gitea.py:90-95—os.makedirs(pdir, exist_ok=True)для
<out_root>/.payload/<name>.json; каталог создаётся безусловно.Найдено при работе над
resolve-the-issue-store-path-independently-of(
claude-skills/tea#15). Та issue убрала промах по cwd: путь теперь абсолютныйи указывает на настоящий стор, а не на случайный подкаталог. Побочное создание
она не трогала — восемь скриптов, которые она перечисляет,
labels.pyневключают, а наивная защита сломала бы
labels.pyна свежем чекауте.Каталог запросов и стор issue — разные вещи, которые совпали по пути. Развилка,
которую надо решить: увести payload в место, не являющееся стором (тогда
меняются все вызовы
_gitea.api), либо оставить путь и сделать так, чтобыlabels.pyне тянул за собой стор. Первое честнее, второе меньше.Acceptance criteria
labels.pyне создаёт и не требует стора issue ни на одном путивидно
вместе, вразнобой быть не должно
.gitignoreпокрывает новое место, если оно внеtmp/labels.pyна дереве безtmp/issuesне создаёт этоткаталог