Files
progcode/editorial/reviews/2022-04-draft.md
T
huncode fb4d8598ab
Build and deploy / deploy (push) Successful in 14s
revise April 2022 accessible interface articles
2026-07-31 13:43:17 +03:00

7.6 KiB
Raw Blame History

П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 от committed savedChannel; 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-состояние. Интеграция и публикация сознательно не выполнялись.