43 lines
8.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Tasks
Ретроспективный перечень: `[x]` означает выполненное и подтверждённое в этой сессии либо наблюдаемое в текущем дереве. `[ ]` — оставшаяся проверка/доработка, которую этот propose не выполняет. Каждый пункт рассчитан не более чем на половину дня. Исправления соседнего репозитория перечислены как зависимость отдельной поставки.
## 1. Регрессионные проверки поставки и версии
- [x] 1.1 arm-core, `api/tests/test_statements_engine.py`: проверить установленную библиотеку после исправления ресурсов и версии; подтверждено 11 проходящими тестами.
- [x] 1.2 pylib_ai_arm_statements, `tests/test_version.py` и `arm_statements/version.py`: закрепить тестами приоритет непустого VERSION, fallback для отсутствующего/пустого стандартного файла, отсутствие метаданных и явный отсутствующий/пустой путь; критерий — все сценарии версии из `specs/statement-library/spec.md` проходят.
- [x] 1.3 pylib_ai_arm_statements, `MANIFEST.in`, `setup.cfg`, сборочный артефакт: проверить wheel/sdist и установить wheel в чистое временное окружение; критерий — импорт `arm_statements` и загрузка стандартных правил работают без доступа к исходному репозиторию, все YAML присутствуют.
## 2. Локальная установка и подключение в arm-core
- [x] 2.1 arm-core, `Makefile`: добавить `STATEMENTS_DIR`, цель `install` и переустановку в `api/.venv`; подтверждено успешным `make install` с установленным дистрибутивом `0.1.1`.
- [x] 2.2 arm-core, `Makefile`: фильтровать `raisa_*` и `pylib_ai*` только в основных requirements, сохранить прежнюю обработку dev requirements; критерий — команды в Makefile и `make -n venv` соответствуют указанным фильтрам. Текущее дерево также включает установку локальной библиотеки в конце `venv`.
- [x] 2.3 arm-core, `api/requirements.txt`, `api/arm_statements/`, `Makefile`: зафиксировать наблюдаемое состояние перехода — pin `0.1.1`, удаление встроенной копии, исключение `statements-check` из `check-full`; критерий — diff текущего дерева содержит эти изменения.
- [x] 2.4 arm-core, `api/src`, `api/tests`, `api/pyproject.toml`: сохранить импорты `arm_statements` после отмены переименования; критерий — нет новых импортов `pylib_ai_arm_statements` и отменён временный override mypy для этого имени.
- [x] 2.5 arm-core, `api/pytest.ini`, `api/pyproject.toml`, `Makefile`: согласовать testpaths и first-party-настройки с внешней библиотекой, вернуть проверку типов исходников ядра вместо удалённого вызова mypy; критерий — pytest не собирает удалённые `arm_statements/tests`, Ruff и mypy по исходникам ядра проходят, чужие исходники не проверяются как встроенные.
- [x] 2.6 arm-core, `README.md`, `CLAUDE.md`: согласовать инструкции с текущим `venv`, который уже устанавливает локальную библиотеку; критерий — документация объясняет отдельный `make install` как переустановку и путь `STATEMENTS_DIR`, а dry run соответствует инструкции.
## 3. Исправления внешней библиотеки
- [x] 3.1 pylib_ai_arm_statements, `MANIFEST.in`: заменить старые пути на `arm_statements` и `arm_statements/rules`; подтверждено переустановкой и успешной загрузкой правил в 11 тестах движка.
- [x] 3.2 pylib_ai_arm_statements, `arm_statements/version.py`: добавить fallback на метаданные дистрибутива, сохранив явный путь; подтверждено результатом `0.1.1` и `None` для явно переданного отсутствующего файла.
- [x] 3.3 pylib_ai_arm_statements, `MANIFEST.in`, `arm_statements/version.py`, результаты пунктов 1.2–1.3: подготовить отдельную проверяемую поставку/коммит библиотеки; критерий — изменения ресурсов и версии доступны независимо от рабочего дерева arm-core, номер опубликованного артефакта уникален. Публикация в реестр не входит в этот пункт.
## 4. Документирование выполненного
- [x] 4.1 arm-core, `README.md`, `CLAUDE.md`, комментарии конфигурации и `api/src`, `api/contracts/recognition-result.schema.json`: описать библиотеку и источник версии; подтверждено просмотром diff, Ruff, форматированием и проверкой JSON в этой сессии.
- [x] 4.2 arm-core, исторический план `docs/superpowers/plans/2026-10-18-normalization-core-b.md` и затронутые архивные OpenSpec-документы: пометить ссылки на копию и sync-statements как прежнюю схему; критерий — заметки об актуализации присутствуют, исторические требования не переписаны.
- [x] 4.3 arm-core, `openspec/changes/use-installed-statements-library/`: оформить proposal, design, дельты и этот перечень с границами задачи; критерий — все обязательные артефакты существуют и `openspec validate use-installed-statements-library` проходит.
## 5. Завершение проверки перехода
- [x] 5.1 arm-core, `api/tests/test_statements_v2_edit.py::test_intake_statements_version_mismatch`: повторить тест с доступной PostgreSQL/инфраструктурой; критерий — проходят случаи разных и совпадающих версий без ValidationError. Предыдущий запуск остановлен после зависания.
- [x] 5.2 arm-core, существующие тесты адаптера, домена и реальные фикстуры нормализации: выполнить подходящие lint/type/unit/integration-проверки после пунктов 1–3; критерий — подтверждены импорт из установленного пакета, отсутствие регрессии §7 и совместимость результата 2.0. Промежуточный прогон на отменённых импортах не засчитывается.
- [x] 5.3 arm-core, `README.md`, `CLAUDE.md`, дельты этого change: итогово сверить инструкции с проверенным поведением и перечислить необходимые уточнения для `../docs/context/03-architecture.md` и `07-open-questions.md`; критерий — README соответствует проверенным командам, а межрепозиторные уточнения перечислены для отдельного change в docs без новых неподтверждённых доменных правил.
## Workflow follow-up
- После отдельного запроса apply завершить только непомеченные пункты; код в рамках propose не менять.
- Обновления общих docs и координацию версий сервисов оформить отдельным change в `../docs`.
- После review и необходимых проверок отдельно запросить sync/archive; этот change не синхронизируется и не архивируется автоматически.