Беклог: 3 пункта из аудита спек↔код + правка формулировки per-download (docs)

По итогам аудита соответствия спек и кода (11 сабагентов, по одному на capability):

Беклог:
- новый пункт: гейт авто-раскладки по confidence (спека говорит «вспомогательный
  сигнал», код делает жёсткий AutoThreshold=0.85) — определиться, что правда
- новый пункт: привязка внешних субтитров к серии (спека требует, для сериала
  связь субтитр→эпизод и пары .idx/.sub в коде не выражены)
- новый пункт: раздачи-копии диска DVD/BluRay (VIDEO_TS/BDMV — каталог целиком,
  не пофайловый разбор)
- дополнен существующий баг TVDB /series/: спека metadata-match теперь тоже
  кодифицирует баг — фикс должен править и требование

Спеки (правка на точность, поведение не меняется):
- download-tracking, review: «per-download блокировка» → «единая блокировка
  воркера» (по факту глобальный w.mu, а не per-download)

openspec validate --strict — проходит.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-07-03 21:32:02 +03:00
co-authored by Claude Opus 4.8
parent 512567c8ba
commit 2ed9c9020f
3 changed files with 66 additions and 7 deletions
+6 -5
View File
@@ -78,12 +78,13 @@ Worker SHALL периодически сверять раздачи qBittorrent
- **WHEN** worker сверяет qBittorrent с БД
- **THEN** для раздачи заводится загрузка в состоянии `downloading`
### Requirement: Переходы состояний под per-download блокировкой
### Requirement: Переходы состояний сериализуются воркером
Все переходы состояний загрузки SHALL проходить через worker под per-download
блокировкой, чтобы два транспорта не гонялись за одно состояние. Состояние SHALL
быть персистентным в SQLite; активность загрузки SHALL выводиться только из
`state`, без отдельного флага.
Все переходы состояний загрузки SHALL сериализоваться worker'ом под единой
блокировкой (поллинг-цикл и команды всех транспортов проходят через неё), чтобы
два источника перехода не гонялись за одно состояние. Состояние SHALL быть
персистентным в SQLite; активность загрузки SHALL выводиться только из `state`,
без отдельного флага.
#### Scenario: Команды сериализуются