Andrey Epifancev 12ae96ba6e Библиотека arm_statements вместо копий: спеки, контекст, инструменты docs (AURORA-1677)
- спеки 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>
2026-10-27 16:45:19 +04:00

56 lines
6.1 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.

# 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`) не правится в этом
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`] → архив — история, не правится.