Evict closed issues from the local store #20
Notifications
Due Date
No due date set.
Depends on
#16 Drop the local copy after a successful push and re-pull on demand
claude-skills/marketplace
Reference: claude-skills/marketplace#20
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
Закрытые issue остаются в сторе навсегда. Фильтр на pull не пускает новые, но
уже лежащие файлы не убирает никто, и вернуть их обратно на диск проще, чем
кажется.
Spec
none
Depends on
хранилище или кэш; от ответа зависит, чем эта задача вообще является
Motivation
skip-closed-issues-when-pulling-a-repository-in(claude-skills/tea#10,закрыта) поставила фильтр на запись и явно вынесла чистку за рамки:
«существующие файлы стора не чистятся» — задача была про запись, не про
миграцию. Миграцию с тех пор никто не сделал, и своей issue у неё не было.
Дырки, через которые закрытые попадают и остаются:
pull.py:142—drop_closed = filtered and args.state != "closed", аfilteredистиннотолько для
--milestone,--label,-q(pull.py:114). Потянул по номеру,по
#N, поowner/repo#Nили по URL — закрытая issue легла на диск. Эторешение #10, и оно подтверждено: номер есть номер, спросил конкретную
issue — получил её в любом состоянии. Значит чистка не одноразовая: после неё
закрытая может вернуться, и это нормальная работа, а не откат.
pull.py:178— условие содержитand not stored. Закрытая issue, которая уже в сторе, перечитывается иостаётся. Тоже осознанно: локальная копия должна узнать, что её закрыли.
issue_index.py:29-44обходит всё, что вернулissue.load_all(root), без предиката по состоянию — закрытая получаетстроку наравне с открытой.
Наблюдалось: после закрытия
#11–#15понадобилсяpull.py 11 12 13 14 15,чтобы поле
state:перестало врать. Пять закрытых файлов вернулись в стор —ровно по первым двум пунктам сразу. До этого шесть закрытых удалялись руками
rm, потому что команды нет.Итог: единственный способ убрать закрытую issue —
rmмимо всех скриптов, споследующей ручной пересборкой
INDEX.mdи карты.remote.json. Это ровно то,чего слой скриптов должен избавлять.
Acceptance criteria
rmorigin: localне удаляется никогда, в каком бы состоянии ни был--dry-runпечатает, что будет удалено, и ничего не трогаетINDEX.mdи.remote.jsonсоответствуют содержимомукаталога — руками досводить ничего не нужно
AGENTS.mdзаписано правило: pull по номеру тянет issue в любомсостоянии — номер есть номер. Чистка его не отменяет: закрытая issue,
вытянутая по номеру после чистки, снова ложится на диск, и это не
регрессия. Сейчас поведение не задокументировано нигде
skills/issue, offline,работа с файлами) или в sync. Состояние берётся из
state:в файле,сеть не нужна — значит по правилу слоёв это домен, и обоснование
обратного должно быть явным
и
origin: localConstraints
--state closed, ключевой режим) заданы #10 намеренно.INDEX.mdвместо удаления файлов —#10 отказалась от этого явно, и полумера оставит файлы на диске.