Обсудили: для сервиса одного окна основное действие — удалить всё разом (раздачу + файлы в библиотеке), чтобы освободить место. Из-за хардлинков иначе место и не вернуть — снять надо обе ссылки на инод. Задача udalenie-edinoe-okno переписана в одну конкретную: - действие «Удалить» на загрузке: снять живые хардлинки (undo-механика, superseded пропускаем) + удалить раздачу с файлами из qBittorrent (новый метод qbt); осознанно обходим предохранитель последней копии; обязательное подтверждение; - undo (перераспознать, гард включён) vs delete (освободить место, гард выключен) зафиксированы как разные действия; - терминальное состояние — переиспользуем deleted, инициатора (user/reconcile) пишем в лог перехода; в граф добавить ребро done→deleted; - тайтл-группа и экран состава выкинуты как оверинжиниринг; мультивыбор в списке — опциональный шаг. Реализовать как OpenSpec-change. Приоритет высокий (недостающая половина одного окна, частый сценарий «досмотрел → освободить место»). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Документация jellybit
Три раздела с разной ролью — не путать:
-
specs/ — спецификации. Описывают целевое и текущее устройство системы. Живые и изменяемые: правим по мере развития, держим в соответствии с кодом. Отвечают на вопрос «как устроено».
-
adr/ — Architecture Decision Records. Неизменяемый журнал значимых решений, пишется постфактум. Хранит главное — почему так сделано. Передумали → не правим старую запись, заводим новую. Процесс — в adr/README.md.
-
drafts/ — черновики: заметки, мысли, планы на будущее, ещё не принятые решения. Не источник истины и ни к чему не обязывают. Когда черновик становится реальностью — его место в specs (как устроено) и/или adr (почему решили).