Тест идентичности копии контракта по MAJOR (шаг 0 docs#116) #43

Merged
aep merged 1 commits from feat/42-contract-identity-window into main 2026-10-18 17:11:52 +03:00
Owner

Closes #42. Шаг 0 выкладки docs#116 (единая нормализация ББ/ОФР), план 0: docs/openspec/changes/unified-statement-normalization/plans/2026-10-18-plan-0-contract-identity.md.

Слить до docs PR #117 (шаг 0 выкладки). Перед слиянием #117 прогон шага 3 повторить на его последнем коммите.

Тест идентичности api/contracts/ сверяет файл копии с файлом docs своего MAJOR (правило S-53, спека recognition-contract): <имя>.v<M>.schema.json и examples/v<M>/, если есть, иначе основной. Правило — api/tests/contract_identity.py (+ сценарный тест, 15 сценариев), побайтно одинаковые в arm-core, tabular-parser, scan-gateway.

Проверка (make check)

Состояние docs make check тестов тест идентичности
A (main) код 0 1172 PASSED
B (feat/116) код 0 1172 PASSED
B через ARM_KA_DOCS код 0 1172 PASSED

Rulings I made

  • P0-1…P0-5 (план 0) — в docs design.md (cb1bf36): правило копией в трёх репозиториях; «копия держит MAJOR» по наличию файла .v; неопределимая пара — ошибка; ARM_KA_DOCS в scan-gateway; OpenSpec change в tp и sg.
  • R-1 (план 0): дорожку исполнял фоновый агент на sonnet, а не сессия.
  • R-2 (план 0): для test_docs_contracts_dir_* в scan-gateway красный шаг отдельно не прогонялся (поиск и тесты написаны вместе); тесты зелёные.

Deferred (ревью opus, только Minor)

M-1 дубль имени файла в тексте ошибки; M-2 нет теста ветки «нет схемы вида в копии»; M-3 слабые assert (match для schema_major, вид расхождения в O-1); M-4 нет теста устаревшего .v1 на окне; M-5 дельта OpenSpec не пересказывает пункт «набор»; M-6 причина пропуска не видна в make check (было и раньше). M-1/M-2 меняют правило — правка сразу в трёх репозиториях, follow-up.

🤖 Generated with Claude Code

Closes #42. Шаг 0 выкладки docs#116 (единая нормализация ББ/ОФР), план 0: `docs/openspec/changes/unified-statement-normalization/plans/2026-10-18-plan-0-contract-identity.md`. **Слить до docs PR #117** (шаг 0 выкладки). Перед слиянием #117 прогон шага 3 повторить на его последнем коммите. Тест идентичности `api/contracts/` сверяет файл копии с файлом docs своего MAJOR (правило S-53, спека recognition-contract): `<имя>.v<M>.schema.json` и `examples/v<M>/`, если есть, иначе основной. Правило — `api/tests/contract_identity.py` (+ сценарный тест, 15 сценариев), побайтно одинаковые в arm-core, tabular-parser, scan-gateway. ## Проверка (make check) | Состояние docs | make check | тестов | тест идентичности | |---|---|---|---| | A (main) | код 0 | 1172 | PASSED | | B (feat/116) | код 0 | 1172 | PASSED | | B через ARM_KA_DOCS | код 0 | 1172 | PASSED | ## Rulings I made - P0-1…P0-5 (план 0) — в docs design.md (cb1bf36): правило копией в трёх репозиториях; «копия держит MAJOR» по наличию файла .v<N>; неопределимая пара — ошибка; ARM_KA_DOCS в scan-gateway; OpenSpec change в tp и sg. - R-1 (план 0): дорожку исполнял фоновый агент на sonnet, а не сессия. - R-2 (план 0): для test_docs_contracts_dir_* в scan-gateway красный шаг отдельно не прогонялся (поиск и тесты написаны вместе); тесты зелёные. ## Deferred (ревью opus, только Minor) M-1 дубль имени файла в тексте ошибки; M-2 нет теста ветки «нет схемы вида в копии»; M-3 слабые assert (`match` для schema_major, вид расхождения в O-1); M-4 нет теста устаревшего .v1 на окне; M-5 дельта OpenSpec не пересказывает пункт «набор»; M-6 причина пропуска не видна в make check (было и раньше). M-1/M-2 меняют правило — правка сразу в трёх репозиториях, follow-up. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
aep added 1 commit 2026-10-18 12:25:10 +03:00
aep merged commit 13e857020a into main 2026-10-18 17:11:52 +03:00
Sign in to join this conversation.
No Reviewers
No Label
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RSHB/arm-scan-gateway#43
No description provided.