diff --git a/dev/checks.md b/dev/checks.md index de6c2d3..b8fbfb9 100644 --- a/dev/checks.md +++ b/dev/checks.md @@ -187,7 +187,7 @@ PR убедитесь, что `docs` и `fixtures` доступны (пропу есть, иначе с `examples/<имя>.json` (`M` — MAJOR копии схемы этого вида, вид — по префиксу имени); прочие файлы копии (`*.v.schema.json`, `examples/v/` у ядра) — с одноимёнными; файлы docs другого MAJOR сервис не сверяет. Правило вводится во все три репозитория до слияния контракта v2.0 в docs (шаг 0 выкладки; спека `recognition-contract`, -требование «Копия контракта в сервисе идентична источнику»). Ядро держит копии обоих MAJOR. Перечень кодов `contracts/statement-code-orders.yaml` +требование «Копия контракта в сервисе идентична источнику»). Ядро держит копии обоих MAJOR. Правило реализовано файлом `api/tests/contract_identity.py`, побайтно одинаковым в трёх репозиториях; правка — сразу во всех трёх. Перечень кодов `contracts/statement-code-orders.yaml` копируется не в сервисы, а в пакет `arm_statements` (сверяет `sync-statements --check`). ## Порядок перед PR @@ -227,6 +227,6 @@ PR убедитесь, что `docs` и `fixtures` доступны (пропу гарантированы и при `make -j`); в `arm-core` и `tabular-parser` — пререквизитами (при последовательном запуске эквивалентно, при `make -j` порядок не гарантирован). Запускайте без `-j`. - **`ARM_KA_DOCS`/`ARM_KA_FIXTURES`.** `arm-core` учитывает обе переменные; `tabular-parser` — только `ARM_KA_DOCS` - (тестов с маркером `fixtures` пока нет); `scan-gateway` — ни одну (ищет `../docs` и `../fixtures/ocr` по фиксированному - пути; тексты причин пропуска не содержат «ARM_KA_FIXTURES недоступен»). Пока расхождение не устранено, для - `scan-gateway` docs/fixtures нужно класть рядом. + (тестов с маркером `fixtures` пока нет); `scan-gateway` учитывает `ARM_KA_DOCS` в тесте идентичности контракта (с шага 0 + #116), а `ARM_KA_FIXTURES` — нет (ищет `../fixtures/ocr` по фиксированному пути; тексты причин пропуска не содержат + «ARM_KA_FIXTURES недоступен»). Пока расхождение по fixtures не устранено, для `scan-gateway` fixtures нужно класть рядом. diff --git a/openspec/changes/unified-statement-normalization/design.md b/openspec/changes/unified-statement-normalization/design.md index b50f02c..8f46979 100644 --- a/openspec/changes/unified-statement-normalization/design.md +++ b/openspec/changes/unified-statement-normalization/design.md @@ -1315,3 +1315,12 @@ line_name, line_name_confidence, parent_ref, values}`: `line_code` — разо 97. **S-74. `needs_review` значений после выхода строки из `detail`** (Р-23): строка, которой назначили код, получает `needs_review` значений по общему правилу (покрытие §7); строка, отмеченная `detail`, — `false`; значения `unreadable` / `missing` считаются по общему правилу (документ и так `needs_check` по статусу строки). Цена: нулевая. + +### Решения при планировании и исполнении плана 0 (18.10.2026) + +98. **P0-1. Правило теста идентичности — копией в трёх репозиториях**: правило живёт файлом `api/tests/contract_identity.py` + сценарный тест, побайтно одинаковыми в arm-core, tabular-parser и scan-gateway, а не общим пакетом и не скриптом docs; эталон — копия arm-core, расхождение ловит `shasum` (план 0, задача 5) и ревью; соседние репозитории в `make check` не читаются. Цена: правка правила — три PR; разошедшиеся копии до сверки не видны. +99. **P0-2. «Копия держит MAJOR N»**: в копии есть хотя бы один файл `*.v.schema.json` или `examples/v/*.json`; тогда все такие файлы docs обязательны в копии. Цена: ядро, положившее один файл `.v1`, обязано положить все. +100. **P0-3. Неопределимая пара — ошибка**: пример с неизвестным префиксом, схема без `$id` вида `…/v`, пример вида, схемы которого нет в копии — ошибка теста с именем файла, а не пропуск. Цена: новый вид примера в docs требует правки правила. +101. **P0-4. `ARM_KA_DOCS` в scan-gateway**: тест идентичности scan-gateway читает `ARM_KA_DOCS` (спека называет переменную); поиск `fixtures` не меняется. Цена: расхождение в `dev/checks.md` сужается до fixtures. +102. **P0-5. OpenSpec change `contract-identity-window` в tabular-parser и scan-gateway**: MODIFIED требования «Копия контракта идентична источнику» (прежний текст «байт в байт равны `../docs/contracts/`» на окне неверен); arm-core change не получает — правило описано в спеке docs `recognition-contract`. Цена: у arm-core при закрытии нет `openspec archive`. +103. **R-1 (план 0). Дорожку плана 0 исполняет фоновый агент на sonnet**: а не сама сессия: сессия координирует четыре параллельные дорожки (планы 0, 1, 3А, 6). Метод — executing-plans (Native, ≤5 задач), ревью всей ветки — opus. Цена: слабее контекст сессии при финальных рулингах; страхует ревью и таблица находок.