Рефакторинг границ capabilities: цепочка загрузка→матч→ревью→раскладка (openspec)

Привёл набор capabilities в OpenSpec к цепочке обработки, чтобы имя capability
отвечало одному поведению. Чисто по спекам, код и поведение системы не меняются.

Change refactor-capability-boundaries (архивирован):
- recognition разделён на recognition (разбор LLM) + metadata-match (сверка с базами)
- review выделен из web-ui + мигрирован из docs/specs/review-ux.md
- новые capability из docs/specs: file-layout, download-tracking, notifications
- identity очищен до инфра-id; приём (инфохэши, дедуп, ядро приёма) — в ingest
- уведомление о рассинхроне перенесено из state-reconciliation в notifications
- дубль владения путём и безопасного undo оставлен в state-reconciliation

Итог: 11 capabilities, openspec validate --strict проходит (+37/−11 требований).
Источник истины по мигрированным темам переехал в openspec/specs (шапки в docs).
Снят пункт беклога «Пересмотр набора capabilities».

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
av
2026-07-03 21:17:51 +03:00
co-authored by Claude Opus 4.8
parent b3d7c08f4a
commit 512567c8ba
29 changed files with 1866 additions and 315 deletions
@@ -0,0 +1,19 @@
## REMOVED Requirements
### Requirement: Множество инфохэшей загрузки
**Reason**: Инфохэши — часть приёма загрузки, а не инфраструктуры id; поведение
относится к capability `ingest`.
**Migration**: Требование перенесено без изменений в `ingest` (см. `specs/ingest`).
### Requirement: Дедупликация приёма по любому из хешей
**Reason**: Дедуп приёма — поведение приёма загрузки, а не инфраструктуры id.
**Migration**: Требование перенесено без изменений в `ingest`.
### Requirement: Атомарность возврата загрузки в активное состояние
**Reason**: Инвариант «не более одной активной загрузки на infohash» — забота
приёма/активации загрузки; логичнее держать рядом с приёмом.
**Migration**: Требование перенесено без изменений в `ingest`; review и retry на
него ссылаются.