# GoBadminton #522 · First launch V2 Готовый локальный дизайн-пакет: пять визуально разных концептов, три шорт-листа с полноценной композицией «знакомство → ручной город → гостевые игры», интерактивный путь рекомендованного **A «В одной игре»**. Авторская атрибуция этой назначенной попытки: **model=gpt-6-astra, effort=high**. Дата: **09.11.2026**. Никакие другие модели/агенты не запускались. **DESIGN_APPROVED = PENDING Owner. V1 полностью отклонён.** Это не mobile source, binary, принятый релиз или разрешение начать implementation. Исходный CLEAN checkout не изменялся; Git, runtime, DB, provider calls, credentials, публикация и установка зависимостей не выполнялись. ## Открытие Открыть [index.html](index.html) прямо через `file://`. Локальные CSS, обычные JS scripts, iframe и assets не требуют сборки, npm, сети, fetch или ES modules. Также работает через любой отдельно разрешённый localhost static server. Сервер здесь не запускался. [Полный рекомендованный прототип](prototype.html?concept=a&state=story&platform=ios&device=390x844) содержит внешний пульт концепта, платформы, размера, состояния, текста 100/130/200% и Reduce Motion. Содержимое iframe в галерее тоже кликабельно; уменьшенные кадры — сравнение дизайна, для проверки 44px target использовать полный размер. Данные синтетические; это указано **вне** телефона. Письма, заявки, OAuth, геопозиция и видимость не имеют внешних эффектов. Код успешного примера — `123456`; другие шестизначные коды дают ошибку. Поле email принимает обычный синтаксически корректный адрес, ничего не отправляет. Публичные рейтинги не придуманы; уровень игры — условие fixture, не рейтинг пользователя. ## Короткий маршрут 1. История / пропуск / гость → ручной город. Поиск по четырём fixture-городам. Неизвестный город не заменяется Москвой; доступен общий список. 2. Гостевая лента → фильтр для начинающих → условия одной из двух игр → «Хочу играть». 3. Email / VK / Яндекс → локальная симуляция → та же игра → отдельное «Отправить заявку» → демонстрационный pending. Вход сам не выполняет mutation и не гарантирует место. Отмена сохраняет цель. 4. «Игроки» или Radar-banner в ленте → контекстная подсказка под выключенным Radar → отдельное unchecked согласие → вход при необходимости → повторное подтверждение согласия → объяснение геопозиции → ответ ОС **во внешнем пульте** → отдельное включение видимости. Denied/restricted/services-off сохраняют ручной каталог. Нет background location. 5. Ссылки «Повторный запуск» и «Ссылка» снаружи показывают bypass. Это сценарии, не доказательство работающих AASA/assetlinks или deferred install links. Внешний selector показывает неверный/истёкший код, отмену/ошибку входа, expired session, unavailable link, skeleton/empty/error, запуск ОС и оболочку. Он не является продуктовым меню. Ошибки не скрыты за успешным сценарием. Неавторизованный недоступный deep link не раскрывает закрытые сведения. ## STYLE_GUIDE_PARITY - **Patterns reused:** Onest, ink `#13221a`, lime `#a7f447`, purple `#7945de`, paper `#f5f6f2`, purple-soft, радиусы 12/18/28, ритм 8px; Button primary/dark/outline, Chip, GameCard, ListRow, HeroBanner, InformationalBanner, FormGroup/validation, StickyActionBar, BottomNav, Empty/Error/Skeleton, VisibilitySummaryRow. Interactive targets в полноразмерном телефоне не меньше 44px; primary 52px. Existing logo сохранён из supplied SVG, canvas/proportions учтены, нового логотипа нет. - **Screen-specific Make composition reused:** гостевая лента сохраняет hero → filters → GameCard → contextual action, а не превращается в набор текстовых инструкций. RadarMapPage использован как опора смысла «видимость отдельно / можно выключить / положение приблизительное». Его карта и список живых игроков намеренно не имитируются: здесь проектируются только вход/consent states, не native карта. Rendered parity не заявлена. - **STYLE_GUIDE_GAP:** native first-launch story, platform safe areas и native auth return не имеют готового реализованного экрана в supplied kit. Добавлены композиции A/B/C, внешний state harness, отдельные OS simulation controls; общие продуктовые компоненты остаются в системе. - **OWNER_VISUAL_OVERRIDE:** текущий Owner brief полностью отверг restrained/text-heavy V1 и явно разрешил крупные иллюстрации и узкое расширение. Поэтому добавлены full-bleed raster art, плакатная типографика B, court-first C и лента A. Это не отмена прав, consent или gates. - Frozen StyleGuide manifest: 48/48 файлов совпали по хешам. Input hashes: 8/8. Это проверка источников, не визуальный PASS. Предыдущие исторические FAIL/UNKNOWN не переписываются. ## Платформы, доступность, motion 390×844 и 430×932 iOS показывают условную верхнюю область 54px и нижнюю 30px; 375×667 — короткую non-notch область 20px без gesture indicator. Это геометрия прототипа, не заявление точного device/OS chrome. Android показывает условную status area 32px и gesture area 24px; трёхкнопочная навигация и реальный edge-to-edge требуют device QA. Safe areas не заняты кнопками приложения. Формы имеют labels, семантические кнопки, inputmode/autocomplete и видимый keyboard focus; при переходе фокус идёт в заголовок. Ошибки имеют alert/status. Native keyboard avoidance, VoiceOver/TalkBack, системный Dynamic Type и реальные safe-area insets **NOT_TESTED**. Пульт 200% меняет размер текста внутри frame, разрешает вертикальный scroll; это не доказательство системной accessibility. Иллюстрация делает короткое появление 320ms / 8px; skeleton может переливаться. Никакая информация не зависит от анимации; `prefers-reduced-motion` и ручной «Без движения» убирают motion. Нет автопрокрутки story, задержки для чтения splash, ожидания всех данных или таймерного удержания. OS splash, быстрая оболочка и content skeleton — три отдельных кадра; selector останавливает их для ревью, реальный lifecycle не реализован. ## Факты и текущие пробелы Текущий source proof (сохранено в частных входных материалах): HEAD `df1d7652fc72df7e1b93dbc7f625345adccafaf1`. Прочитаны актуальный mobile README и узкие auth controllers. Mobile остаётся README-only: **SOURCE_READY=NOT_IMPLEMENTED; BUILD_READY=NOT_BUILT; DEVICE_TESTED=NOT_TESTED; STORE_READY=NOT_READY**. Реальные native sessions/exchange/refresh, browser return, verified links, карта, native APNs/FCM, signing и физические devices не созданы. Email/VK/Яндекс существуют в web по переданным фактам; native адаптация ещё требуется. Apple/Google/SMS/пароль не выдуманы. Согласование iOS login path/4.8, legal/operator/deletion/store channels остаётся из инженерного readiness (сохранено в частных входных материалах) и native plan (сохранено в частных входных материалах). Эта версия не актуализирует SDK versions, внешние доступы или live service status. Privacy сохранена: новый public name «Игрок», email/provider name не публикуются; каталог нового профиля включён, сообщения через contact requests, прежний opt-out сохраняется. Radar OFF; фото и уровень необязательны. Ручной город каталога не записывается молча в профиль. Existing permissions facts остаются в permissions (сохранено в частных входных материалах): push, photo picker и camera запрашиваются только по контексту; в first-launch прототип не добавлены. OS grant не равен push binding/delivery; full photo library, contacts, microphone, tracking не требуются. Текст Radar consent в макете — продуктовый UX draft. Перед implementation сверить точную серверную версию consent, eligibility, срок видимости и geo retention. Не расширять действующий контракт. Synthetic profile показывает defaults нового пользователя, не перезаписывает существующий аккаунт. ## Проверено и не проверено [verification.json](verification.json): шесть адресных авторских deterministic checks — local asset paths, сохранение второй выбранной игры через auth без auto-submit, неверный/верный email code, раздельность consent/OS/enable, ручной каталог после denied, отсутствие network/telemetry/storage/timers в JS. `node --check` обоих scripts выполнен существующим Node 24.21.0 по абсолютному пути; зависимостей нет. [История проверки](verification-history.txt) сохраняет первоначальный FAIL самого harness на произвольной длине минимального splash и отсутствие `node` в PATH; ошибка устранена, продуктовый PASS из неё не выводится. **Исторический статус на завершение авторского вызова — browser layout, screenshots и независимая QA ещё не выполнялись.** Актуальные результаты внешней проверки приведены ниже и в [independent-review.md](independent-review.md). Owner UAT остаётся NOT_TESTED. Проверка в Node использует минимальную DOM-заглушку для переходов и генерации markup; она не измеряет вёрстку и не заменяет браузер. Внешний reviewer снял PNG после завершения авторского вызова. Список приоритетных кадров: [captures.json](captures.json). ## Снимки и передача Для чистого кадра использовать URL `prototype.html?embed=1&concept=a&state=story&platform=ios&device=390x844&motion=reduce`, viewport 390×844 и selector **`#phone`**. Снаружи capture обязательно сохранить подпись «Дизайн V2, синтетические данные, не native build». Пульт и OS simulation снимать по **`#workbench`** или `.stage` на ширине 1100–1440px. Для gallery — `#concepts`, для шорт-листов — `#shortlist` (full-page либо по `.short-row`). Не выдавать снимки браузера за native-device evidence. `concept=a|b|c|d|e`, `platform=ios|android`, `device=360x780|390x844|430x932|375x667`, `state` соответствует select; `entry=returning|deep`; `game=1` для второй игры; `text=2`, `motion=reduce`. URL не хранит введённый email, токены или credentials. Переходы локальны и сбрасываются при reload; точечные screenshot states устанавливают необходимые demo assumptions. Внутри единого прогона намерение и выбранная игра сохраняются в памяти. Передавать Owner сначала галерею и три triptych, затем полный A. Следующий шаг — внешний визуальный review/PNG и решение Owner о варианте, после него обычный разрешённый source → independent QA → CI → trusted DEV процесс. Эта папка — design-only; ничего не публиковалось и Issue не закрывалась. Манифест перечисляет только файлы пакета: session logs, launcher и prompt не нужны для публикации. ## Внешняя браузерная проверка, 09.11.2026 После завершения авторского вызова выполнены 192 проверки размеров/состояний и 10 интерактивных сценариев в Chromium. Ошибок JavaScript и горизонтального переполнения в проверенных состояниях нет. Сняты 12 PNG в папке screenshots. При 200% текста исправлены два CSS-правила переноса фильтров и заголовка каталога на экранах 360/375px. Остальная композиция Astra сохранена. Отдельные итоги доступны в [browser result](operator-browser-result.json) и [interaction result](operator-interaction-result.json). Независимый reviewer проверил восемь дополнительных сценариев. Итоги и ограничения приведены в [independent-review.md](independent-review.md). Owner approval остаётся PENDING. Native build, физические устройства и screen reader остаются NOT_TESTED.