# Proposal ## Why `arm_statements` поставляется как устанавливаемая библиотека, отсутствующая в PyPI. Копирование её исходников, словарей и тестов в сервис через `sync-statements` больше не соответствует способу поставки; сервис должен устанавливать локальный дистрибутив и сообщать его версию. ## What Changes - Зафиксировать `pylib_ai_arm_statements==0.1.1` в `api/requirements.txt`, сохранив Python-импорты `arm_statements`. - В `make venv` пропускать строки `pylib_ai*` при установке из индекса, как и внутренние `raisa_*`; библиотеку устанавливать из `../pylib_ai_arm_statements` через `uv`. - Добавить `make install` для установки или переустановки библиотеки; путь переопределяется `STATEMENTS_DIR`. - Удалить `api/arm_statements/` целиком, включая словари, VERSION, тесты и golden-файлы библиотеки. Удалить `statements-check` и его вызов из `check-full`. - Проверять и тестировать только код сервиса: убрать библиотеку из путей pytest/mypy, считать её сторонней в Ruff, обновить порядок импортов и обработку отсутствующих типов. - Получать `service.statements_version` через API библиотеки (VERSION либо метаданные установленного дистрибутива); при отсутствии версии останавливать старт с актуальной диагностикой. - **BREAKING для сборки:** передавать исходники библиотеки в Docker через именованный контекст BuildKit `arm_statements`; обычный `docker build .` без него больше не поддерживается. - Обновить README, CLAUDE.md и комментарии о зависимости: библиотека, установка и обновление через `make install` вместо синхронизации копии. ## Capabilities ### New Capabilities Нет; установка и сборка относятся к существующей capability сервиса. ### Modified Capabilities - `tabular-recognition-service`: локальная установка и Docker-сборка библиотеки, версия библиотеки в результате и при старте. - `statement-parsing`: выполнение шагов 2–8 установленной библиотекой, обновление её словарей переустановкой вместо синхронизации копии. ## Impact Срез 2, сопровождение ББ/ОФР из Excel (срез 2b по `../docs/context/09-delivery-plan.md`); алгоритмы остаются по §11–12 и §7 `05-domain-rules.md`. Новых алгоритмов и допущений по открытым вопросам нет. Изменяется только репозиторий `arm-tabular-parser`: Makefile, Dockerfile, зависимости и конфигурация инструментов в `api/`, документация, адаптеры (порядок импортов), сообщение проверки версии. `../pylib_ai_arm_statements` — существующий источник дистрибутива, `../arm-core` — пример установки; их код не меняется. Таблицы и поля DBML v5.17 не затрагиваются, миграций нет. Текущие основные спецификации требуют коммит копии и `sync-statements`; delta-спецификации описывают замену этих требований. Копии JSON-контрактов сохраняются байт в байт. Их описание версии как коммита остаётся вопросом согласования в отдельном change `../docs`, не локальной правкой схемы. ## Non-goals Публикация в PyPI/Nexus; изменение API библиотеки, правил разбора, сумм, единиц измерения, транспорта NATS/S3 и версии JSON-контракта; изменение arm-core, Compose или внешнего CI. Основные спецификации и архивы OpenSpec в этом предложении не редактируются.