# Проверка результата

Дата: 02.11.2026. Этот документ различает автоматическую проверку артефактов и браузерную проверку. Билд сам по себе не считается проверкой интерфейса.

## Автоматически

- Аудит исходных файлов: 30 комбинаций, целые PNG 1024×1024, bytes, 30 уникальных SHA-256, одинаковый промпт и параметры, согласованное usage; соответствие sidecar/results/state/CSV с документированными поздними полями.
- Пересчёт всех четырёх категорий; 30 сохранённых = $0.980517 ≈ 78.99 ₽. Потеря $0.002522 — отдельная оценка.
- Побайтное совпадение публичных оригиналов с исходными хешами.
- 6 графиков в SVG/PNG с CSV данных; общая таблица из тех же нормализованных строк.
- HTML: локальные ссылки и якоря, уникальность ID, alt, отсутствие полной загрузки оригиналов через img при открытии страницы.
- Чистая версия: полный общий текст, все иллюстрации и графики; нет меню, кнопок, фильтров, скриптов и диалога.
- RSS: разбор XML, стабильный GUID, полное content:encoded, совпадение изображений с чистой версией, явный статус SITE_URL. Настроенный домен требует повторной проверки после сборки.
- Публичная сборка: сканирование текстовых файлов на ключи, значения request/batch ID и приватные пути; отсутствие внутренних JSON и архивных дубликатов. У PNG нет текстовых metadata-ключей Pillow. Это проверка заданных шаблонов, не доказательство отсутствия любой возможной скрытой информации.
- ZIP: проверка CRC всех файлов; публичный checksums.json.

## Браузер

Проверено в браузере, отдельно от сборки:

- Viewport 1440×1000 и 390×844: documentElement.scrollWidth = innerWidth; визуально проверены первый экран, мобильная галерея и lightbox. Локальный скролл таблиц и фрагментов предусмотрен намеренно.
- Галерея показывает 30 карточек. Пересечение Image 1.5 / medium / Standard оставляет ровно одну: $0.038607, 3.1101 ₽. На мобильной ширине high / Batch оставляет 5.
- Lightbox: открытие полного PNG, кнопки увеличения, масштаб 1:1, стрелка вправо, Escape; после закрытия фокус возвращается к исходной кнопке.
- Перетаскивание проверено реальным drag: синхронный сдвиг +50/+50 px появился в transform. Общий масштаб проверен для двух и четырёх изображений.
- Пятая попытка выбора оставляет четыре выбранных и показывает сообщение об ограничении.
- Слепой режим перемешивает карточки, скрывает параметры/цену, блокирует фильтры и скрывает прямую ссылку с именем модели в диалоге; стрелки сохраняют слепую подпись. Это не защита данных от просмотра исходника.
- До открытия lightbox ни один img не ссылается на originals. Все карточки используют lazy WebP-превью.
- Консоль: ошибок и предупреждений JavaScript в выполненных сценариях нет.
- Чтение без скриптов проверено на временной копии той же страницы с удалёнными script: 167 абзацев, 58 изображений, 9 таблиц; итоговая сумма присутствует, интерактивные controls скрыты. Проверено на обеих ширинах. Это проверка копии без скриптов, а не переключение глобальных настроек JavaScript браузера. Временная копия исключена из dist.
- Сохранены локальные скриншоты qa/desktop-1440.png и qa/mobile-390.png (не входят в публичный ZIP).
- RSS дополнительно пересобран с техническим зарезервированным доменом .invalid только для теста: 58 абсолютных URL изображений и абсолютный URL статьи прошли проверку. Затем восстановлена финальная сборка без SITE_URL; тестовый домен в публичный пакет не попал.

Не проверены на реальном touch-устройстве: pinch двумя пальцами и свайп. Обработчики реализованы, но проверка мышью и мобильным viewport не считается проверкой сенсорного ввода. Полный аудит screen reader и всех браузеров не выполнялся.

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

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