# Этап 3. Получи подтверждение пользователя

Вход: новый привязанный JSON и проверенные оригиналы.
Результат: реальное полное подтверждение, `approval` в JSON и внешний код.
Следующий этап: `guide/04-fill.md` при пустом `changes`; иначе `guide/05-changes.md`.
При ошибке: `guide/08-errors.md`.

## Покажи полный блок

```text
.venv/bin/python -I scripts/fill_contract.py "<привязанные данные.json>" --check
```

1. Сохрани stdout, stderr и код завершения.
2. Если проверка не пройдена, устрани установленную причину ошибки. Не дописывай оригинал ради проверки. Не создавай согласие за пользователя.
3. Покажи `approval_text` целиком.
4. Покажи выбранный договор, все реквизиты, номер, дату, строки заказа, итоги и каждую правку.
5. Покажи пути оригиналов, их SHA-256 и код подтверждения.
6. Для каждой суммы покажи расчёт: количество × цена × месяцы.
7. Попроси пользователя вернуть весь блок как дословное подтверждение.
8. Уточни папку сохранения и способ видимых отметок правок.

Простого «да» недостаточно. Не пропускай поля ради короткого сообщения.
Покажи полный блок одним сообщением. Получи полный дословный ответ одним фактическим сообщением пользователя.
Не склеивай ответы из частей и не принимай созданный агентом файл за ответ пользователя.
Если ограничение контекста или интерфейса мешает полному показу и ответу, останови этап.
Сохрани черновик и назови ограничение. Согласуй среду, в которой полный блок можно показать и получить целиком.
`--check` не создаёт договор и работает до подтверждения.
Для описания используй `contract_description.text` и `contract_description.scope` из отчёта.
Тот же текст находится в проверенном `summaries.json`.
Для английского описания добавь `--language en` к `--check`.
Скопируй описание дословно. Оно относится к исходному шаблону; правки перечисли отдельно.
Не предлагай собственный анализ или редакцию без отдельного запроса.

## Сохрани реальный ответ

1. Получи фактический ответ от пользователя.
2. Сохрани его дословно в отдельный приватный файл.
3. Установи `approval.quote` равным этому фактическому ответу.
4. Установи `approval.values` равным соответствующему объекту `approval_values`.
5. Сверь все подтверждённые значения. Одно число в дате не подтверждает другое поле.
6. Возьми `--approved-sha256` из реального полного ответа, отдельно от редактируемого JSON.
7. Обнови `Состояние.md`: запиши путь ответа и следующий этап.

Не копируй предложенный `approval_text` в `approval.quote` до ответа пользователя.
Не подставляй код из нового `--check` или из подозрительного файла данных.
Код связывает подтверждение с данными, источниками, путями и правками. Он не аутентифицирует человека.
Проверь, что ответ пришёл от пользователя. Не создавай ответ самостоятельно.
Если происхождение сохранённого ответа не установлено после потери истории, запроси новое подтверждение.
Если изменилось значение, источник, путь оригинала или правка, повтори привязку и весь этап подтверждения.
