- спеки 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>
6.1 KiB
6.1 KiB
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
- Что делал
sync-statements --checkи куда это ушло. Равенство копии источнику и «копия отстала» — больше не нужны (копий нет, версия закреплена вrequirements.txt). Зависимости пакета в зависимостях хоста — проверяет установщик pip. Коды словаря имён ядра в перечне — тест ядраtest_name_dictionary_codes_in_code_orders(был и раньше, работает с установленной библиотекой). Перечень кодов docs против копии в библиотеке — новая цельstatements-orders-checkвmake -C docs check. statements-orders-check— предупреждение, не ошибка. Как и код10прежнего--check: порядок правки «docs → библиотека → версия в сервисах», и docs законно бывает впереди до выпуска библиотеки. Нет checkout библиотеки рядом — тоже предупреждение (docs проверяется и без соседей).- Снимок для контура вырезает цель
install. Цель ставит библиотеку из соседнего checkout черезuv; в контуре библиотека приходит из Nexus поrequirements.txtчерез цельvenvснимка. Без этого проверка снимка «нет uv» падает на всех трёх сервисах (проверено на ветках PR 27.10.2026). - Требования спек — REMOVED + ADDED, а не MODIFIED. OpenSpec не даёт убрать сценарий через MODIFIED, а сценарии про копии (прямая правка копии, тесты копии) больше не верны. Старые требования удалены с Reason/Migration, новые — под новыми именами.
STATEMENTS_VERSION_MISMATCHна заданиях до перехода не исправляется (решение владельца 26.10.2026): у таких заданийstatements_version— хэш коммита копии, у ядра — версия библиотеки; записьinfoожидаема и на статус не влияет. Записано в спекуstatement-normalizationи в §9.505-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) не правится в этом change: файл байтово копируется в библиотеку, правка дала бы расхождение сv0.1.1. Обоснование — комментарий не влияет на данные. Цена ошибки — устаревший комментарий до следующего выпуска библиотеки. - 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] → архив — история, не правится.