Рефакторинг границ 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,56 @@
## 1. Дельта-спеки change (готово при propose)
- [x] 1.1 `recognition` — REMOVED 4 требования метабазы + ADDED разбор LLM
- [x] 1.2 `metadata-match` (new) — поиск/подтверждение матча + перенесённые требования
- [x] 1.3 `review` (new) — процесс ревью + перенос 3 требований из web-ui
- [x] 1.4 `file-layout` (new) — миграция jellyfin-layout.md
- [x] 1.5 `download-tracking` (new) — миграция прямого пути FSM из workflow.md
- [x] 1.6 `notifications` (new) — падения/дебаунс/пинги + перенос из state-reconciliation
- [x] 1.7 `ingest` — ADDED ядро приёма + перенос 3 требований из identity
- [x] 1.8 `identity`/`web-ui`/`state-reconciliation` — REMOVED-дельты переносов
- [x] 1.9 `openspec validate --strict` — проходит
## 2. Ревью дизайна (чекпоинт до влития)
- [ ] 2.1 Проверить полноту переносов по таблицам design.md D2D5: каждое
исходное требование учтено (STAY либо REMOVED+ADDED), ни одно не потеряно
- [ ] 2.2 Сверить счётчик требований до/после (сумма по капабилити не изменилась,
кроме намеренно добавленного «Приём источника и заведение загрузки»)
- [ ] 2.3 Подтвердить, что формулировки перенесены эквивалентно (нормативная сила
SHALL/MUST и сценарии сохранены), поведение системы не меняется
## 3. Purpose живых спек (при/после archive)
- [ ] 3.1 Дописать `## Purpose` новым capability (`metadata-match`, `review`,
`file-layout`, `download-tracking`, `notifications`) — иначе archive
проставит «TBD», как у `live-status`
- [ ] 3.2 Подчистить стухший `## Purpose` у доноров: `identity` (убрать
инфохэши/дедуп/атомарный возврат), `recognition` (убрать сверку/локаль
TMDB/сбор кандидатов — оставить разбор LLM), `state-reconciliation` (убрать
«уведомления о рассинхроне»), `web-ui` (убрать ревью-специфику)
## 5. Синхронизация docs/specs (источник истины переезжает в OpenSpec)
- [ ] 5.1 `docs/specs/recognition.md` — шапка «источник истины: openspec/specs/
recognition + metadata-match»; не дублировать содержимое
- [ ] 5.2 `docs/specs/review-ux.md` — шапка «источник истины: openspec/specs/review»
- [ ] 5.3 `docs/specs/jellyfin-layout.md` — шапка «источник истины: openspec/specs/
file-layout»
- [ ] 5.4 `docs/specs/workflow.md` — шапка «прямой путь FSM: openspec/specs/
download-tracking; сверка: state-reconciliation; уведомления: notifications»
- [ ] 5.5 `docs/specs/architecture.md` — сверить перечень capabilities и ссылки
## 6. Обновление беклога и памятки
- [ ] 6.1 `docs/backlog.md` — снять пункт «Пересмотр набора capabilities и
рефакторинг спек»
- [ ] 6.2 `CLAUDE.md` — при необходимости обновить перечисление capabilities
(ingest, recognition, metadata-match, review, file-layout, download-tracking,
notifications, state-reconciliation, live-status, web-ui, identity)
## 7. Влитие и архив
- [ ] 7.1 Ревью change до архива (процесс CLAUDE.md)
- [ ] 7.2 `openspec archive refactor-capability-boundaries` — влить дельты в
`openspec/specs/`
- [ ] 7.3 Повторный `openspec validate --strict` по влитым спекам