# Задание Antigravity: полный release gate после A30

## Цель

Провести независимую проверку ветки `codex/workflow-canvas` после реализации A30. Проверять фактическое состояние репозитория и запускаемого приложения, а не описание работы.

## Обязательный порядок

1. Получить актуальные `origin/main` и `origin/codex/workflow-canvas`.
2. Проверить `git status`, базовый и финальный SHA ветки.
3. Запустить приложение из чистого checkout ветки A30.
4. Выполнить полный `pytest`/release gate и сохранить полный вывод.
5. Выполнить `ruff check .`.
6. Проверить веб-контракт: `/`, `/api/snapshot`, `/api/events`, `/api/action`.
7. Проверить A30 вручную в браузере: LIVE, EDIT, создание агента, назначение Provider → Account → Model, Agent File, редактор ребра, цикл и предел итераций.
8. Отдельно проверить честность данных: отсутствие mock/demo чисел из макета, `Н/Д` с причиной, loading не смешан с отсутствием данных.
9. Проверить persistence после перезапуска и реальные provider errors.
10. Проверить, что desktop `router/ui/**` не изменён A30.

## Правила отчёта

- Не писать `PASS`, если полный release gate не запускался.
- Не считать targeted tests заменой полного regression.
- Для каждого failure привести команду, stdout/stderr, файл и минимальный способ воспроизведения.
- Если блокер связан с окружением, повторить проверку в чистом окружении или явно указать, что именно не проверено.

## Артефакты

Передать:

- `START_HEAD`, `FINAL_HEAD`, `origin/main`;
- чистый `git status` или полный список загрязнений;
- `X passed / Y skipped / Z failed`;
- точный результат `scripts/release_gate.py`;
- список найденных дефектов с приоритетом P0–P3;
- скриншоты LIVE, EDIT, Inspector, Agent File и редактора ребра;
- отдельный список пропущенных проверок.

## Ограничения

- Ничего не исправлять молча в чужой ветке: найденные дефекты оформить отдельным патчем/коммитом или вернуть владельцу.
- Не удалять пользовательские изменения в установщике, бинарниках и заданиях inbox.
- Не объявлять release-ready при известных блокерах.
