Беклог: 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:
@@ -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: Команды сериализуются
|
||||
|
||||
|
||||
@@ -33,7 +33,7 @@ movie↔series), **Игнор файла**, **Позже** (`deferred`), **От
|
||||
(`cancelled`), **Undo** (снять созданные ссылки → `reverted`) и **Привязать
|
||||
заново** (из `reverted`/`cancelled`/`target_missing` → перераспознавание с ручным
|
||||
подтверждением). Команды из любого транспорта SHALL сериализоваться worker'ом под
|
||||
per-download блокировкой; применяется последняя валидная команда. Команды,
|
||||
единой блокировкой; применяется последняя валидная команда. Команды,
|
||||
которым нужен источник, SHALL проверять его наличие синхронно перед действием.
|
||||
|
||||
#### Scenario: Применение создаёт раскладку
|
||||
|
||||
Reference in New Issue
Block a user