# Этап 4. Заполни стандартный договор

Вход: привязанный JSON с подтверждением и внешний код из реального ответа.
Условие: `changes` пуст.
Результат: Word, отдельный технический отчёт, снимок и отдельно сохранённый SHA-256 снимка.
Следующий этап: `guide/06-review.md`. При ошибке: `guide/08-errors.md`.

Если `changes` содержит правки, выполни `guide/05-changes.md`. Не удаляй правки ради успешной команды.
Замени обозначения реальными путями и фактическим кодом.
На Windows используй `.venv\Scripts\python.exe` вместо `.venv/bin/python`.

## Создай Word

```text
.venv/bin/python -I scripts/fill_contract.py "<привязанные и подтверждённые данные.json>" --out "<папка пользователя>/Договор-v1.docx" --approved-sha256 "<код из фактического ответа пользователя>"
```

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

Скрипт использует закреплённые байты шаблона и экранирует специальные символы.
Он проверяет весь архив DOCX и сохраняет проверенные байты без перезаписи файла или ссылки.
Проверка артефактов исполняет закреплённый снимок сканера на проверяемом снимке байтов.
Отчёт содержит stdout, stderr, код завершения сканера и SHA-256.
`ok=true` относится только к выполненной технической операции.
`status=draft`, `ready_for_delivery=false` и `review_requirements` означают, что внешние проверки ещё обязательны.

## Выполни отдельную проверку

```text
.venv/bin/python -I scripts/fill_contract.py "<привязанные и подтверждённые данные.json>" --verify "<папка пользователя>/Договор-v1.docx" --approved-sha256 "<тот же код из ответа>" --snapshot "<папка пользователя>/Снимок-v1.json"
```

1. Сохрани отдельный отчёт запуска и код завершения.
2. Если проверка успешна, проверь существование снимка.
3. Сохрани `saved_snapshot.sha256` из отчёта отдельно от снимка.
   Верхний `sha256` относится к Word. Не используй его как якорь JSON-снимка.
4. Сохрани договор, данные, оригиналы и результаты проверки.
5. Обнови `Состояние.md`. Сохрани статус «черновик» до этапа 6.

`--verify` сравнивает весь Word со стандартным заполнением. Он не подтверждает намеренно изменённый текст.
`--snapshot` создаёт новый JSON с данными, подтверждением, отпечатками и результатами проверок.
Снимок не содержит копий оригиналов. Храни оригиналы отдельно и сохраняй прежние версии.
Эта команда не создаёт договор.
Если снимок не сохранён, ошибка содержит `existing_document` и его SHA-256.
Не выдавай отсутствующий снимок за сохранённый.
