7.6 KiB
П50 · 2022-04 · Доступный интерфейс — три прохода саморевью
Рамка пакета
- Slug:
editorial-2022-04-practice-accessible-interface,editorial-2022-04-mechanism-accessible-interface,editorial-2022-04-field-accessible-interface. - Голос: М5, системный практик 2022 года. Мост от рендеринга и frontend-сценариев к надёжности интерактивного изменения: имя, роль, состояние, маршрут фокуса и обратимое сохранение.
- Граница компетентности: автор не заявляет a11y-платформу, production-дефект, user study, ручной screen-reader результат или полную доступность продукта.
- Fixture: только локальные объекты/массивы. Все
focus/focusRouteиdeclaredAnnouncement— проектные модельные значения. DOM, браузер, keyboard events, HTTP, accessibility tree и assistive technology не создаются и не наблюдаются.
Проход 1 — факты и техника
- Историческая рамка сверена с неизменяемой W3C Recommendation WCAG 2.1, 05.06.2018, датированной WAI-ARIA Authoring Practices 1.2, 29.11.2021 и неизменяемым WAI-ARIA 1.2 Candidate Recommendation Draft, 08.12.2021. Не используется будущая Recommendation 2023 года.
- Убраны непроверяемые формулировки о том, что screen reader «объявил» текст: статьи говорят о declared status и требуют отдельной платформенной проверки.
- Fixture отделяет draft
channelот committedsavedChannel; invalid branch не коммитит состояние, save оставляет prior value для одного undo, повторный undo останавливается. - Проверки после финальной правки:
node --check web/scripts/upgrade-2022-04.mjs— PASS;node web/scripts/upgrade-2022-04.mjs --verify-fixture— PASS 16/16;npm run audit:draft -- scripts/upgrade-2022-04.mjs— PASS.
Проход 2 — редактура и голос
- В первых двух абзацах каждой статьи есть конкретный сбой и цена: потерянный фокус, разрыв visual/semantic state, неверный commit или непредсказуемый откат.
- Основная речь следует маршруту «симптом → причина → проверка → действие». Термины
WCAG,role,radiogroup, declared status и rollback привязаны к контракту одной панели, а не используются как общий лозунг. - В каждой статье есть таблица, рисунок с содержательным alt/caption, исполнимый детерминированный пример, нумерованный маршрут, ограничения и следующий шаг.
- Размер основного текста проверяется самим скриптом: 8 002 / 8 743 / 8 980 знаков без списка источников; все значения в диапазоне 5 000–15 000.
Независимый редакторский приём
Проход 1 — факты и контракт
Проверены даты, статусы и доступность трёх W3C URL: WCAG 2.1 —
Recommendation 5 июня 2018 года; APG 1.2 — Group Note 29 ноября 2021 года;
WAI-ARIA 1.2 — Candidate Recommendation Draft 8 декабря 2021 года. Все
датированные URL ответили 200. Источники используются только для критериев,
практик и исторической границы; они не выдаются за результат проверки конкретной
панели.
Независимый просмотр fixture выявил разрыв между текстом и кодом: у статичных
описаний email/sms признак checked не менялся после выбора SMS. Он удалён
из статических descriptor-объектов. Новая declaredOptionState() выводит
учебный selected state только из channel; добавлены assertions initial,
выбора SMS и undo. Отдельно сохранён текст status до undo, поэтому assertion о
save больше не проверяет сообщение rollback. Модель по-прежнему не создаёт DOM
или aria-checked и не наблюдает accessibility tree.
Проход 2 — речь и доказательства
Повторно прочитаны problem/cost в первых двух абзацах, таблицы, код, маршруты
и ограничения всех трёх статей. Они не обещают screen-reader speech,
универсальную доступность или проведённое исследование. Целевой audit подтвердил
8 002 / 8 743 / 8 980 знаков, по одной figure и таблице в каждой статье и
1 / 1 / 1 code example. После правки fixture завершилась с 16/16
assertions, а import-safe проверка вернула три объекта без date и author.
Проход 3 — визуал и выпуск
xmllint прошёл для всех SVG; safety scan не нашёл script, foreignObject,
внешних URL или data:image. Sharp-рендеры на 375 px просмотрены: схема
focus route, semantic contract и diagnosis/undo отвечают на разные вопросы и
сохраняют читаемую границу «модель, не DOM». После подключения апреля registry
содержит 145 ревизий. Строгий аудит slug прошёл; production build успешно
сгенерировал 374 страницы. Материалы мая–июля этой партией не затрагиваются.
Финальный вердикт
П50 принята и интегрирована после трёх независимых проходов. В коммит войдут только пять файлов апреля и два точечных файла интеграции.
Проход 3 — визуал и выпуск
- SVG различаются по задаче: focus sequence, semantic/state contract и diagnosis/rollback. В них нет
script,foreignObject, внешних URL илиdata:image. - Выполнены XML-проверка, safety scan без совпадений и рендер всех трёх SVG на ширине 375 px через Sharp; подписи и ключевые ветки остаются различимыми.
- Sidecar не меняет registry, README,
articles.json, очередь, стандарт качества, документацию или Git-состояние. Интеграция и публикация сознательно не выполнялись.