Files
jellybit/openspec/changes/archive/2026-07-17-2026-07-17-jellyfin-scan-on-revert-delete/tasks.md
T
avandClaude Opus 4.8 1639ebfdd7 Пересканирование Jellyfin: расширить триггер на reverted и deleted
Скан Jellyfin (POST /Library/Refresh) слался только при входе в done.
После Undo (reverted) и Delete (deleted) наши хардлинки сняты, а Jellyfin
держал битые записи до скана по расписанию.

Гейт скана в едином чекпоинте transitionErr переведён с state == done на
предикат triggersScan(state) по множеству {done, reverted, deleted}: гейт по
состоянию-цели естественно ловит пользовательские Undo/Delete и
reconcile-производный deleted, идемпотентно. target_missing/orphaned —
промежуточный рассинхрон (ждём relink/лечения) — исключены.

OpenSpec: заведена и влита дельта file-layout (требование
«Пересканирование Jellyfin после изменения библиотечных ссылок»); change
архивирован. Синк рукописных доков architecture.md/workflow.md. Тесты:
скан стреляет на reverted и deleted, молчит на входе вне множества.
Закрыта задача беклога jellyfin-skan-posle-udaleniya.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-17 21:14:18 +03:00

2.3 KiB
Raw Blame History

1. worker — расширить гейт скана

  • 1.1 В internal/worker/worker.go (transitionErr) заменить условие state == store.StateDone на проверку принадлежности state множеству {done, reverted, deleted} (небольшой предикат-хелпер для читаемости). Остальную механику скана (фоновый ctx, capFileLayout-scoped-логгер, неблокирующая горутина, w.scanner != nil) переиспользовать как есть.
  • 1.2 Обновить поясняющий комментарий: скан не только «раскладка завершена», а «наши библиотечные хардлинки изменились» (разложены при done, сняты при reverted/deleted).

2. Тесты

  • 2.1 internal/worker/review_test.go: тест, что скан стреляет на входе в reverted (после Undo).
  • 2.2 Тест, что скан стреляет на входе в deleted (после Delete).
  • 2.3 (Опц.) Негативный точечный тест: на входе, не меняющем наши ссылки, скан не дёргается.

3. Доки

  • 3.1 docs/specs/architecture.md («Пересканирование Jellyfin» и строка «Решённые вопросы»): формулировку «при входе в done» заменить на «после раскладки (done) и после снятия наших ссылок (reverted/deleted)».
  • 3.2 docs/specs/workflow.md: в описании done и снятия ссылок отразить, что скан дёргается и после Undo/Delete.

4. Ревью и сверка

  • 4.1 task test и task lint зелёные.
  • 4.2 Ревью кода (второй чекпоинт) перед archive.
  • 4.3 openspec validate 2026-07-17-jellyfin-scan-on-revert-delete --strict зелёный.
  • 4.4 Синк дельты в openspec/specs/file-layout, архив change; удалить docs/backlog/jellyfin-skan-posle-udaleniya.md и строку из индекса беклога.