2026-10-27 17:23:28 +04:00

6.2 KiB
Raw Blame History

Design

Context

Код библиотеки, подключение в сервисах и их change — в PR задачи AURORA-1677 (arm-core #178, tabular-parser #70, scan-gateway #52, RSHB/pylib_ai_arm_statements). Этот change — сквозная часть в docs: контракт, спеки, контекст и инструменты docs, которые обслуживали копии. Первая версия change (23.10.2026) обновляла только описания контракта и добавляла заметки-баннеры; при ревью 27.10.2026 change расширен до полного перевода docs на библиотеку.

Goals / Non-Goals

Goals: docs не описывают копии api/arm_statements/ и sync-statements как действующие; сверки, которые делал sync-statements --check, не теряются; снимок для контура проходит на сервисах с библиотекой.

Non-Goals: алгоритмы §7/§11, структура контракта, DBML, перенос репозитория библиотеки в контур.

Decisions

  1. Что делал sync-statements --check и куда это ушло. Равенство копии источнику и «копия отстала» — больше не нужны (копий нет, версия закреплена в requirements.txt). Зависимости пакета в зависимостях хоста — проверяет установщик pip. Коды словаря имён ядра в перечне — тест ядра test_name_dictionary_codes_in_code_orders (был и раньше, работает с установленной библиотекой). Перечень кодов docs против копии в библиотеке — новая цель statements-orders-check в make -C docs check.
  2. statements-orders-check — предупреждение, не ошибка. Как и код 10 прежнего --check: порядок правки «docs → библиотека → версия в сервисах», и docs законно бывает впереди до выпуска библиотеки. Нет checkout библиотеки рядом — тоже предупреждение (docs проверяется и без соседей).
  3. Снимок для контура вырезает цель install. Цель ставит библиотеку из соседнего checkout через uv; в контуре библиотека приходит из Nexus по requirements.txt через цель venv снимка. Без этого проверка снимка «нет uv» падает на всех трёх сервисах (проверено на ветках PR 27.10.2026).
  4. Требования спек — REMOVED + ADDED, а не MODIFIED. OpenSpec не даёт убрать сценарий через MODIFIED, а сценарии про копии (прямая правка копии, тесты копии) больше не верны. Старые требования удалены с Reason/Migration, новые — под новыми именами.
  5. STATEMENTS_VERSION_MISMATCH на заданиях до перехода не исправляется (решение владельца 26.10.2026): у таких заданий statements_version — хэш коммита копии, у ядра — версия библиотеки; запись info ожидаема и на статус не влияет. Записано в спеку statement-normalization и в §9.5 05-domain-rules.

Decisions made without discussion

  • 27.10.2026 — statements-orders-check не валит make check при расхождении перечня с библиотекой (решение 2). Обоснование — прежняя семантика кода 10. Цена ошибки — расхождение перечня docs и библиотеки может жить до следующего выпуска незамеченным, если предупреждение не читать.
  • 27.10.2026 — шапка contracts/statement-code-orders.yaml (упоминала sync-statements) поправлена в docs сейчас, байтовая копия уходит в библиотеку выпуском 0.1.2. До него statements-orders-check предупреждает о расхождении с v0.1.1 — это ожидаемо (данные перечня не менялись, только комментарий). Цена ошибки — предупреждение в make check docs до выпуска 0.1.2.
  • 27.10.2026 — комментарий recognition_job.statements_version в DBML v5.23 и entities-v5.23.md («коммит копии») не правится: правка DBML требует новой версии модели. Цена ошибки — устаревшее описание поля до следующей версии DBML.
  • 27.10.2026 — описание service.statements_version в контракте оставлено как в первой версии change («маркер VERSION, если есть, иначе версия дистрибутива»), хотя в установленном пакете маркера нет: оно совпадает с кодом arm_statements/version.py библиотеки v0.1.1. Цена ошибки — описание сложнее фактического поведения.

Risks / Trade-offs

  • [Репозиторий библиотеки не переносится в контур скриптом снимка] → выкладка требует, чтобы нужная версия уже была в Nexus; процедура переноса — вопрос владельцу, в этом change не решается.
  • [Старые change в архиве ссылаются на sync-statements] → архив — история, не правится.