# П55 · 2022-09 · Мобильный сценарий — три прохода саморевью ## Рамка sidecar - Slug: `editorial-2022-09-practice-mobile-ux`, `editorial-2022-09-mechanism-mobile-ux`, `editorial-2022-09-field-mobile-ux`. - Голос: М5, системный frontend-практик 2022 года. Текст остаётся коротким и предметным: симптом, граница, проверка, действие, ограничение. Нет выдуманного опыта руководства продуктом или «проверенных» пользовательских эффектов. - Граница модели: profile `narrow/coarse/unavailable` задаётся вручную. Fixture не запускает DOM, CSS, `matchMedia`, browser, pointer events, сетевой запрос, метрику, usability-тест или реальный rollback. `platform: not-observed` и `usability: not-measured` являются частью возвращаемого результата. - Источники проверены до написания и отвечают 200: [Media Queries Level 4 CRD, 25.12.2021](https://www.w3.org/TR/2021/CRD-mediaqueries-4-20211225/), [Pointer Events Level 2 Recommendation, 04.04.2019](https://www.w3.org/TR/2019/REC-pointerevents2-20190404/), [WCAG 2.1 Recommendation, 05.06.2018](https://www.w3.org/TR/2018/REC-WCAG21-20180605/). Все URL неизменяемые и документы были доступны в сентябре 2022 года. ## Проход 1 — факты и техника - Сверена историческая статусная рамка. Media Queries Level 4 на 25.12.2021 — Candidate Recommendation Draft, Pointer Events Level 2 и WCAG 2.1 — Recommendations; поздние WCAG 2.2 и текущие плавающие URL не используются. - Убрана ложная логика «`hover: none` означает touch-only» и «pointer event доказывает достижимость действия». В тексте остаётся ограниченное утверждение: media features описывают capability среды, а не намерение и удобство конкретного пользователя. - Fixture проверяет только локальные строки и массив route: валидный explicit path, порядок `summary > details > confirm`, блокировку `hover-only` для teaching profile, invalid input и неизмеряемость platform/usability. В ней нет claims о device, browser, trace, результатах людей или продуктовой метрике. - Пройдены после последней правки: `node --check web/scripts/upgrade-2022-09.mjs`; `node web/scripts/upgrade-2022-09.mjs --verify-fixture`; `npm run audit:draft -- scripts/upgrade-2022-09.mjs`; import-safe `--print-revisions` без `date` и `author`. ## Проход 2 — голос, полнота и объём - Первые два абзаца всех трёх статей называют конкретный сценарий и цену: скрытое основное действие, незавершённая операция, ошибочное подтверждение и невозможность объяснить релиз. Нет общих фраз о «важности мобильности». - В каждой статье есть проблема, таблица, проверяемый JS-пример, figure с осмысленными alt/caption, нумерованный маршрут «симптом → причина → проверка → действие», rollback boundary, перечень того, что модель не покрывает, и следующий отдельный шаг для реальной реализации. - Основной текст (без источников): practice 7 562 знака, mechanism 8 362 знака, field 8 253 знака. Каждая статья находится в заданном диапазоне 5 000–15 000 знаков и не описывает учебный contract как реальный браузерный или пользовательский результат. ## Проход 3 — визуал и безопасность - SVG разделены по вопросу: route (`summary → details → confirm`), граница четырёх слоёв и diagnosis/rollback. Они не изображают device screenshot, человека, продуктовый funnel или реальные тестовые данные. - В SVG нет `script`, `foreignObject`, external URL, `data:image` и event-handler attributes. У всех есть ``, `<desc>`, role `img`, содержательная подпись в статье и контрастные блоки для чтения на узком экране. - Пройдены: `xmllint --noout` для трёх SVG; safety scan без совпадений; Sharp-рендер каждого SVG на 375 px и визуальный просмотр. Sidecar меняет ровно пять новых файлов; registry, README, `articles.json`, очередь, Git и прочие месяцы не менялись. ## Независимый редакторский приём ### Проход 1 — факты и контракт Проверены все три датированных W3C URL: Media Queries Level 4 Candidate Recommendation Draft 25 декабря 2021 года, Pointer Events Level 2 Recommendation 4 апреля 2019 года и WCAG 2.1 Recommendation 5 июня 2018 года ответили `200`. Источники разделены по роли: Media Queries описывает capabilities среды, Pointer Events — browser event model, WCAG — критерии; ни один из них не доказывает usability отдельного человека. `planTeachingMobilePath` просмотрен как локальный contract: profile вводится вручную, route всегда имеет `summary → details → confirm`, narrow/coarse/no hover block относится только к `hover-only`, а wide profile явно оставляет `platform: not-observed` и `usability: not-measured`. Fixture прошла **9/9 assertions** без DOM, `matchMedia` или pointer event. ### Проход 2 — речь и полнота Повторно проверены первые абзацы, tables, code, ordered routes, rollback и границы статей. Они не делают из hover-сигнала определение устройства и не называют route результатом usability-test. Draft audit подтвердил 7 562 / 8 362 / 8 253 знака; import-safe проверка вернула три revision-объекта без `date` и `author`. ### Проход 3 — визуал и выпуск `xmllint` прошёл; safety scan не нашёл script, `foreignObject`, внешних URL, `data:image` или event-handler attributes. Sharp-рендеры на 375 px просмотрены: route, четыре слоя контрактной границы и diagnosis/rollback самостоятельны и не изображают device screenshot или пользователя. После подключения сентября registry содержит 160 ревизий. Строгий slug-audit прошёл с одной figure, 1 / 2 / 2 tables и одним code example на статью; production build успешно сгенерировал 374 страницы. Sidecar октября и позже не затрагиваются. ## Финальный вердикт П55 принята и интегрирована после трёх независимых проходов. В коммит войдут только пять файлов сентября и два точечных файла интеграции.