# GoBadminton · #522 · Первый шаг на корт **Открыть [галерею и прототип](index.html).** Автономный редактируемый HTML/CSS/JS, локальные шрифты и assets; сеть не нужна. Рекомендуемый вариант **A — «Сначала свой город»**. Короткое приветствие → ручной город → публичные игры. Аккаунт предлагается для конкретного действия, после входа — свежие условия и отдельное подтверждение. Альтернатива B сразу открывает структуру каталога и выбирает город внутри него. C сначала спрашивает, что ищет человек: игру, площадку или игроков. Все три пути кликабельны и сходятся в общие функции; нет дублирования десятков экранов. Причины выбора и ограничения исследования — в [research.md](research.md). ## Статус | Область | Результат | |---|---| | Дизайн-артефакты | Готовы для решения Owner | | DESIGN_APPROVED | **PENDING Owner** | | Независимая UX/product QA финального дизайна | [PASS](independent-review.md), bounded artifact review | | Инженерное review готового flow | [PASS](independent-review.md), targeted feasibility | | Native SOURCE_READY | NOT_IMPLEMENTED, `apps/mobile` README-only | | BUILD_READY Android / iOS | NOT_BUILT / NOT_BUILT | | DEVICE_TESTED Android / iOS | NOT_TESTED / NOT_TESTED | | STORE_READY / публикация | NOT_READY / не выполнялась | | Owner UAT | NOT_TESTED | Дизайнер **gpt-6-astra / xhigh**. Реальный native запуск завершился `turn.completed`. Usage составил 1 739 892 input tokens, включая 1 581 440 cached, и 56 399 output tokens, включая 8 742 reasoning. Исходные hashes и terminal receipt сохранены в приватном evidence. После terminal оператор исправил браузерный конфликт имени `location`, перенос длинного email при 200% и подпись примеров на PNG. Продуктовые исходники не менялись. ## Просмотр и навигация Откройте `index.html` напрямую в браузере (`file://`) или через существующий approved static viewer. Никаких npm install/build не требуется. Кнопки A/B/C выбирают концепцию. Внешний selector содержит **40 сценариев**: повторный гость/аккаунт, ссылки cold/warm/profile, push tap, истечение сессии, restart auth, ошибки, permissions, photo, Radar и смена аккаунта. Телефон прокручивается внутри рамки. Размеры: iOS 375×667 / 390×844; Android 360×740 / 412×915. Переключатели 200% текста, Reduce Motion и reserved keyboard area находятся снаружи продукта. Системные ответы — в отдельной панели справа/ниже. Она не часть интерфейса приложения и не притворяется настоящим prompt ОС. Главный путь: выбрать Москву → открыть игру → подать заявку → email или OAuth simulation → вернуться к условиям → подтвердить. Email примера `player@example.invalid`, код **123456**. Не вводить реальные адреса/личные данные. Любой другой шестизначный код показывает ошибку; expired challenge можно выбрать сценарием или внешней панелью. После OAuth кнопка «Смоделировать успешный возврат» не обращается к провайдеру. Гостю доступны игры, площадки и публичный профиль. В городе без fixtures не выдумываются результаты. «Псков не поддерживается» — сценарная конфигурация, не реальная характеристика DEV. Отказ в геопозиции → ручной город. OS push grant → отдельная привязка → выбранные типы. Radar consent независим. ## API для браузерной проверки parent Обе функции возвращают Promise и ждут `document.fonts.ready`, изображения и два animation frames. ```js await window.setScenario('first', { viewport: 'ios-compact', // ios-normal / android-compact / android-normal textScale: 2, keyboard: false, reducedMotion: true }); await window.measureScenario(); // scenario, screen, viewport, fontsReady, imagesReady, // horizontalOverflow, scrollable, scrollAreaHeight, smallTargets, state await window.setScenario('cold-game-link', {viewport:'android-compact'}); await window.prototypeAction('join'); await window.prototypeAction('oauth:vk'); await window.prototypeAction('sim:auth-success'); await window.prototypeAction('after-auth'); // confirm; status remains null await window.prototypeAction('submit-join'); // fixture pending window.prototypeScenarios; // точный список 40 IDs window.prototypeViewports; window.getPrototypeState(); // только fixture state ``` Прямая ссылка: `index.html?scenario=conditions-changed&viewport=ios-normal#workbench`. Query не меняет разрешения/аккаунты; unknown ID отвергается. Для screenshot отдельного viewport используйте locator `#phone`; весь gallery — full-page. Фокус после сценарного сброса не скроллит внешнюю страницу. `measureScenario.smallTargets` считает полную label-row hit area checkbox. Это геометрический helper, не автоматическая сертификация доступности. Parent должен реально проверить clipping, порядок фокуса и доступ к нижним кнопкам, а не опираться только на число overflow. ## Авторская проверка и честные ограничения - JavaScript syntax: PASS через имеющийся Node 24.21.0. Команда `node` отсутствует в PATH; использован абсолютный существующий executable, ничего не установлено. - 15 адресных проверок state machine: PASS. [Результаты](checks/state-checks.json). Это VM/stub, **не browser DOM** и не независимая QA. - Все 40 шаблонов состояний отрендерены в VM без исключений; отдельно проверен возврат из настроек камеры после отказа. [Результаты](checks/render-checks.json). Это не проверка геометрии браузера. - Локальные ссылки/assets, отсутствие сетевых вызовов и выбранные WCAG пары: [author-checks.json](checks/author-checks.json). - [Browser review](browser-review.md) завершён после native terminal. 172 geometry checks и 9 real-click/keyboard checks прошли. Сохранены [25 снимков](screenshots.html), включая четыре размера телефона и 200% + клавиатуру на компактных экранах. - [Независимый Codex review](independent-review.md) — PASS без blocking findings, 8 собственных browser checks. Его область и ограничения указаны отдельно. - Физические устройства, keyboard/VoiceOver/TalkBack, true cold/warm links/process restart, OS prompts, actual auth/email/push/camera — **NOT_TESTED**. Никакого binary или native runtime нет. - Legal destination честно показывает текущее «Не опубликовано». Макет не сочиняет юридические документы; #461 / legal readiness — зависимость настоящей регистрации/Store. - Полная форма создания игры, реальная переписка/карта/Postgame не реализованы в onboarding prototype. «Создать» доходит до сохранённого после входа первого шага; реальная публикация игры не имитируется. ## Комплект и публикация [Переходы](flows.md) · [Разрешения](permissions.md) · [Спецификация](implementation-spec.md) · [Native M0–M6](native-plan.md) · [Инженерный вход](engineer-READINESS.md) · [Registry proof](expo-registry-proof.json). `design-manifest.json` содержит exact source provenance, hashes входов и **исчерпывающий publish whitelist**. Публиковать только перечисленные файлы существующим механизмом files.anpavel.ru после независимого review. Не публиковать каталог целиком: `inputs`, raw Apple pages, prompt/task/model receipts, журналы, launch/capture scripts и скрытые служебные каталоги исключены. Engineer copy обновлена из адресно исправленного инженерного документа с безопасным публичным именем «Игрок». Registry copy сохранена без изменений. Источник read-only: local HEAD `1e4d4cb52a305a384fe925c51855b5db8828e361`, tree `ca63d3708ed21aaaab41263c0d6ed7daefaca208`, byte-equivalent принятому DEV `360e308199da1fd58afda631cef9e432c427ff07`. App source/git/runtime/DB/credentials не менялись. Issue остаётся #522; новая Issue, commit, PR, merge, deploy и публикация здесь не создавались.