openspec(#116): план 5 — подготовка хоста сверена с планом 2 (задача 9, --in-place)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
This commit is contained in:
parent
687eb19f9b
commit
6c413ccc0f
@ -39,7 +39,7 @@ v2.0 — «сначала ядро»»), `specs/quality-checks/spec.md`, `propos
|
||||
|---|---|---|
|
||||
| 0 | тест идентичности копий контракта по MAJOR (в том числе scan-gateway) | слит в scan-gateway `main` до задачи 4; тест идентичности здесь не меняется |
|
||||
| 1 | пакет `arm_statements` (репозиторий `arm-statements`) | API — раздел «Публичный API пакета»; правила разбора OCR (`test_parses_real_forms`, двойники, правки sg#40) — в пакете |
|
||||
| 2 | `sync-statements`: копия пакета в `api/arm_statements/`, `statements-check` в `make check-full` | PR плана 2 в scan-gateway слит до задачи 1 (файла плана 2 на 18.10.2026 нет — задача 1 сверяет факт, см. O-1) |
|
||||
| 2 | `sync-statements`: копия пакета в `api/arm_statements/`, `statements-check` в `make check-full` | PR задачи 9 плана 2 (`feat/<issue>-arm-statements-copy`) слит в scan-gateway `main` до задачи 1; задача 1 сверяет факт |
|
||||
| docs PR #117 | контракт v2.0, правила §11 | слит в docs `main` до задачи 4 |
|
||||
| 3 | arm-core: приём `2.0` (части А и Б) | **выложено на контур до слияния PR этого плана** («сначала ядро», `proposal.md` шаг 3) |
|
||||
| 4 | tabular-parser на 2.0 | независим (шаг 5 — в любом порядке) |
|
||||
@ -247,10 +247,11 @@ Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W"
|
||||
- Produces: подтверждённые факты для задач 2–7: `import arm_statements` работает из `api/`, `make check` гоняет тесты и
|
||||
`mypy` копии, `make statements-check` есть и входит в `make check-full`.
|
||||
|
||||
> Файла плана 2 на момент написания нет. Ниже — то, что спека требует от хоста (`statement-normalization`,
|
||||
> «`sync-statements` — копии пакета в потребителях»; `quality-checks`). Если план 2 сделал иначе (имена целей, пути) —
|
||||
> исполнитель сверяет с планом 2 и отмечает расхождение `O-n` в отчёте; если копии в `main` нет — **стоп**, задача
|
||||
> заблокирована, отчёт контроллеру (копию в этой ветке не раскладывать).
|
||||
> Подключение копии — задача 9 плана 2 (`plans/2026-10-18-plan-2-sync-statements.md`, раздел «Что должны включить
|
||||
> планы 3, 4, 5»): `lint` — `mypy src arm_statements`, `testpaths` — `tests` и `arm_statements/tests`, `arm_statements`
|
||||
> в строгом блоке mypy и `known-first-party`, `statements-check` в `check-full`. Если копии в `main` нет — **стоп**,
|
||||
> задача заблокирована, отчёт контроллеру (первичную раскладку в этой ветке не делать). Расхождение факта с планом 2 —
|
||||
> `O-n` в отчёте.
|
||||
|
||||
- [ ] **Step 1: Копия и маркер версии**
|
||||
|
||||
@ -267,7 +268,12 @@ Expected: обе строки найдены; `make check` зелёный, в в
|
||||
Run: `cd $WT && grep -n "statements-check" Makefile && make statements-check; echo "код $?"`
|
||||
Expected: цель есть и вызывается из `check-full`; код `0` (или `10` — запомнить для описания PR).
|
||||
|
||||
- [ ] **Step 4: conftest хоста.** `grep -n "autouse" $WT/api/tests/conftest.py $WT/api/tests/unit/conftest.py` — каждая
|
||||
- [ ] **Step 4: Новая версия пакета (только если нужна).** Если задачам 2–6 нужна версия `arm-statements` новее,
|
||||
чем в `main` (например, исправление по находке Review Focus), — по плану 2: `cd $WT && ../docs/scripts/sync-statements.sh
|
||||
--in-place --host-dir .`, копия — отдельным коммитом `chore(arm_statements): копия пакета arm-statements@<v7>
|
||||
(#<issue>)`; руками копию не править.
|
||||
|
||||
- [ ] **Step 5: conftest хоста.** `grep -n "autouse" $WT/api/tests/conftest.py $WT/api/tests/unit/conftest.py` — каждая
|
||||
`autouse`-фикстура ограничена каталогом `tests/` хоста (спека: иначе она задевает тесты копии). Нарушение — находка
|
||||
`O-n` плану 2, не правка в этой ветке.
|
||||
|
||||
@ -1087,8 +1093,9 @@ git -C $WT push -u origin feat/<issue>-statements-v2
|
||||
|
||||
## Чего не хватает в API пакета для адаптера OCR (O-n; план 1 не правится)
|
||||
|
||||
- **O-1.** Файла плана 2 нет: имена целей (`statements-check`), правки `pytest.ini`/`Makefile` и симлинк источника
|
||||
`arm-statements` в зеркальном workspace взяты из спеки; задача 1 сверяет их с фактом.
|
||||
- **O-1.** План 2 (задача 9) подключает копию в scan-gateway отдельным bounded PR и проверяет `default_rules()` в
|
||||
образе; этот план от него зависит и не дублирует. Симлинк `arm-statements` в зеркальном workspace `$WS` нужен
|
||||
`statements-check` (`../arm-statements`) — в плане 2 для зеркала хостов он не упомянут, здесь добавлен (задача 0).
|
||||
- **O-2.** `StatementDocument`/`StatementHeader` пакета не несут заголовок формы, а у `statementDocument.header` контракта
|
||||
есть `form_name`. Хост берёт его из `candidate.evidence.title` — это работает только при вызове `normalize_candidate`
|
||||
на кандидата (через `normalize(...)` связь документа с кандидатом теряется: документов меньше, чем кандидатов). То же
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user