Files
jellybit/docs
avandClaude Opus 4.8 6b7c090ce4 Владение целевым путём при повторной раскладке (state-reconciliation)
Завершённая загрузка ложно «воскресала» из deleted в orphaned, когда её
целевой путь переиспользовала другая загрузка (повторная закачка того же
фильма в другом качестве): сверка проверяла лишь существование пути, не
проверяя, что файл по нему — наша раскладка.

Вводим инвариант «один целевой путь — один владелец»:

- при успешной раскладке на освободившийся чужой путь владение переходит
  к новой загрузке — прежние file_link на этот путь помечаются статусом
  superseded и перестают считаться целью при сверке;
- deleted исключён из desyncStates — терминальное состояние больше не
  переоценивается (источник к нему не вернётся из-за идемпотентности,
  цель отбирается переходом владения);
- Undo снимает только реально свои разложенные ссылки (superseded
  пропускает — файл по пути теперь чужой хардлинк);
- ошибку перехода владения трактуем как некритичную (WARN-and-continue):
  файлы уже разложены, рассинхрон чужих задач исправит следующий тик.

Без миграции схемы (status — TEXT). Дельта влита в основную спеку,
обновлены workflow.md и jellyfin-layout.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-29 18:10:05 +03:00
..

Документация jellybit

Три раздела с разной ролью — не путать:

  • specs/ — спецификации. Описывают целевое и текущее устройство системы. Живые и изменяемые: правим по мере развития, держим в соответствии с кодом. Отвечают на вопрос «как устроено».

  • adr/ — Architecture Decision Records. Неизменяемый журнал значимых решений, пишется постфактум. Хранит главное — почему так сделано. Передумали → не правим старую запись, заводим новую. Процесс — в adr/README.md.

  • drafts/ — черновики: заметки, мысли, планы на будущее, ещё не принятые решения. Не источник истины и ни к чему не обязывают. Когда черновик становится реальностью — его место в specs (как устроено) и/или adr (почему решили).