# Этап 7. Сверь версии и передай результат

Вход: договор, данные, оригиналы, снимок, его отдельный отпечаток и протокол полной проверки.
Результат: свежая сверка, фактические пути или ссылки и точный статус.
При ошибке: `guide/08-errors.md`.

## Сравни со снимком

```text
.venv/bin/python -I scripts/fill_contract.py "<привязанные и подтверждённые данные.json>" --compare-snapshot "<сохранённый снимок.json>" --snapshot-sha256 "<отдельно сохранённый saved_snapshot.sha256>"
```

1. Используй прежний внешний SHA-256 снимка. Не вычисляй новый якорь из подозрительного снимка.
2. Сохрани stdout, stderr и код завершения.
3. Проверь изменения данных, оригиналов, Word и выпуска.
4. Если Word или оригинал отсутствует, сообщи о неполной сверке.

`exit 0` означает совпадение снимка и текущих проверяемых данных.
`exit 1` при `ok=true` и `unchanged=false` означает изменения или недоступные файлы.
Изменение только формата JSON отмечается отдельно.
Если изменились значения, источники или правки, повтори привязку и подтверждение.
В этом случае создай новые версии договора и снимка.
Если Word перемещён, добавь `--compare-document "<новый реальный путь>"`.
Если перемещены оригиналы, добавь `--compare-sources "<JSON-карта document → новый путь>"`.
Карта меняет только места чтения при сравнении. Она не изменяет подтверждённый JSON.
Отпечатки перемещённых файлов должны остаться прежними.
Перед новым заполнением с новыми путями повтори привязку и подтверждение.
`--compare-snapshot` не проверяет PDF и не заменяет сверку нумерации и вёрстки.

## Если изменился только выпуск

Применяй эту ветку, если сравнение с доверенным якорем показало изменение только выпуска.
Без доверенного якоря используй ветку потери истории ниже. Не заявляй результат прежней сверки.
Сохрани прежний комплект, договор, данные и снимок.
Назови `release_changed` из фактического отчёта. Не меняй закреплённые суммы.
Если новый комплект уже проверен и среда подготовлена, используй их. Не повторяй загрузку и установку.
Иначе получи доверенный загрузчик нового выпуска. Скачай комплект в новую согласованную папку.
Восстанови среду по `guide/01-download.md`. Выполняй команды из проверенной новой папки.
Запусти новый `--check` на фактических данных и сверь его полный блок с реальным подтверждением.
Если полный блок или его код отличается от реального ответа, повтори привязку и полное подтверждение.
Проверь прежний Word новым `--verify`; для изменённого Word используй `--artifacts` и независимую сверку.
Если прежний Word не проходит новую проверку, сохрани его и создай новую версию по этапам 2–6.
Если Word проходит проверку, не пересоздавай его только ради версии выпуска.
В обоих случаях повтори полную визуальную и независимую проверку по новому выпуску.
Если после этих проверок актуальный снимок ещё не создан, создай его командой этапа 4 или 5.
Выбирай команду по фактической ветке договора. Сохрани `saved_snapshot.sha256` отдельно.
Если протокол этих проверок ещё не создан, создай его для проверяемого Word/PDF.
Старый снимок продолжает описывать старый выпуск. Не подменяй его якорь новым.

## Если история проверки потеряна

Путь из состояния и совпадение хешей не устанавливают происхождение отчёта или внешнего якоря.
Если доверенное происхождение якоря не установлено, не сравнивай старый снимок с заново вычисленной суммой.
Сообщи, что сравнение с прежней версией недоступно.
Без доверенного якоря выполни следующие действия даже при доверенном прежнем ответе или протоколе.
Не считай прежний протокол проверкой по текущему выпуску.

1. Используй текущий проверенный комплект и подготовленную среду.
2. Запусти текущий `--check` на фактических данных. Сверь весь блок с реальным ответом пользователя.
3. Если блок или его код отличается, повтори привязку и получи новое полное подтверждение.
4. Выполни техническую проверку Word текущим `--verify` или `--artifacts` по фактической ветке договора.
5. Повтори полную визуальную и независимую сверку по текущему шаблону и подтверждённым правкам.
6. Если Word не проходит проверку, сохрани его. Создай новую версию по этапам 2–6.
7. Если актуальный снимок этих проверок ещё не создан, создай его командой этапа 4 или 5.
8. Сохрани `saved_snapshot.sha256` отдельно. Если протокол этих проверок ещё не создан, создай его.

Не повторяй эти действия, если они уже выполнены в текущей работе для тех же файлов и выпуска.
Сверь фактические отчёты и их происхождение. Одной отметки состояния недостаточно.
Не выдавай новый снимок и протокол за подтверждение старой версии.
Если якорь доверенный, но происхождение полной проверки не установлено, повтори техническую, полную визуальную и независимую сверку.

## Сверь файлы непосредственно перед передачей

1. Заново вычисли SHA-256 каждого передаваемого Word и нужного PDF.
2. Установи происхождение результатов полной проверки. Сравни отпечатки с её отдельным протоколом.
3. Если отпечаток не совпал или протокол отсутствует, оставь статус «черновик».
4. Повтори все обязательные проверки новой версии.
5. Если все проверки выполнены и ошибок нет, сообщи о готовности проверенной версии.

Отсутствие новых байтовых изменений не подтверждает непроведённую проверку.
Технический отчёт скрипта сохраняет `status=draft`.
Готовность устанавливается отдельной полной проверкой конкретных файлов.

## Покажи результат пользователю

- Word и запрошенный PDF.
- Файл данных с `sources`, `source_files` и `approval`.
- Оригиналы источников.
- JSON-снимок и отдельно сохранённый `saved_snapshot.sha256`.
- SHA-256 каждого передаваемого Word и запрошенного PDF.
- Технические отчёты и отдельный протокол полной независимой проверки.
- `Изменения.md` и пояснение для нас, если есть правки.
- Реальные пути или ссылки на скачивание.
- Перечень непроведённых проверок, если статус «черновик».

Назови выбранный договор, выполненные проверки, изменения и место сохранения.
Если файлы находятся в изолированной среде, объясни, как скачать их на компьютер.
Не обещай локальное сохранение без проверки среды.
Для правок подготовь пояснение: «Договор содержит отдельно отмеченные изменения; перечень приложен».
Объясни пользователю: при передаче сообщите нам об отметках и приложите перечень изменений.
Не отправляй договор, карточку или другие файлы без отдельной команды пользователя.
Сохрани прежние версии и обнови `Состояние.md`.
