- спеки statement-normalization, quality-checks, arm-core, recognition-contract — дельты под библиотеку - удалены sync-statements, statements-check, test-sync-statements; новая statements-orders-check в make check - снимок для контура: без шага 0a, цель install вырезается (иначе проверка «нет uv» падает) - 03-architecture, 05-domain-rules, 00-workspace-layout, dev/checks.md, contour-transfer-guide; баннеры убраны Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
5.1 KiB
ADDED Requirements
Requirement: make check — быстрые проверки сервиса без Docker
Каждый сервисный репозиторий SHALL предоставлять цель make check, выполняющую из api/: ruff check .,
ruff format --check ., mypy src (в arm-core — mypy src scripts), pytest -m "not integration", тест
идентичности вендоренного контракта с ../docs/contracts (схема копии — с <имя>.v<M>.schema.json своего MAJOR,
если такой файл есть в docs, иначе с основным; примеры — с examples/v<M>/, если там есть одноимённый файл, иначе с
examples/; правило — спека recognition-contract, требование «Копия контракта в сервисе идентична источнику»). Цель SHALL завершаться ненулевым кодом при первой упавшей проверке и MUST NOT требовать
запущенного Docker, PostgreSQL или NATS. Библиотеку arm_statements make check сервиса MUST NOT проверять линтерами и
её тесты не гоняет: она установлена в окружение и проверяется своим make check в репозитории библиотеки.
Scenario: Файл не отформатирован
- WHEN в репозитории есть файл, не отформатированный
ruff format - THEN
make checkзавершается с кодом 1 на шагеruff format --check, следующие шаги не выполняются
Scenario: Чистый репозиторий
- WHEN все проверки проходят
- THEN
make checkзавершается с кодом 0 за время, не превышающее нескольких минут, без обращения к сети
Scenario: Библиотека не проверяется сервисом
- WHEN в
tabular-parserустановлена библиотекаpylib-ai-arm-statements - THEN
ruff,mypyиpytestсервиса её исходники не обходят; импортыarm_statementsдляruff— сторонние
Requirement: make check-full — полная проверка сервиса против compose
Каждый сервисный репозиторий SHALL предоставлять цель make check-full: make check плюс pytest -m integration против
инфраструктуры docs/dev/docker-compose.yml (PostgreSQL 16, NATS, MinIO, для scan-gateway — эмулятор). Для arm-core
цель SHALL дополнительно выполнять «alembic upgrade head → alembic downgrade base → alembic upgrade head» на чистой
БД и python scripts/check_dbml_vs_orm.py против текущей версии модели (../docs/model/data-model-v<текущая>.dbml, путь — переменная DBML Makefile). Сборка образа (docker-build) SHALL
собирать его с библиотекой из STATEMENTS_DIR и отказывать, если её checkout не на теге STATEMENTS_TAG (спека
statement-normalization, требование «Поставка библиотеки потребителям»). make check-full SHALL быть выполнен перед
созданием PR, его итог вписывается в описание PR.
Scenario: Расхождение ORM и DBML
- WHEN в ORM добавлена колонка, которой нет в DBML
- THEN шаг
check_dbml_vs_ormпадает с перечнем расхождений,make check-fullзавершается с кодом 1
Scenario: Миграция без отката
- WHEN
downgradeревизии не удаляет созданный ею объект - THEN шаг «upgrade → downgrade → upgrade» падает
Scenario: Библиотека не на теге
- WHEN checkout
../pylib_ai_arm_statementsстоит не на тегеSTATEMENTS_TAG - THEN шаг
docker-buildпадает с подсказкой,make check-fullкрасный
REMOVED Requirements
Requirement: make check — быстрые проверки без Docker
Reason: требование описывало проверку копии arm_statements в сервисе (mypy src arm_statements, тесты копии);
копий больше нет (AURORA-1677).
Migration: «make check — быстрые проверки сервиса без Docker».
Requirement: make check-full — полная проверка против compose
Reason: шаг statements-check (sync-statements.sh --check) удалён вместе с копиями (AURORA-1677).
Migration: «make check-full — полная проверка сервиса против compose».