Files
huncode fb4d8598ab
Build and deploy / deploy (push) Successful in 14s
revise April 2022 accessible interface articles
2026-07-31 13:43:17 +03:00

71 lines
7.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# П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](https://www.w3.org/TR/2018/REC-WCAG21-20180605/), датированной [WAI-ARIA Authoring Practices 1.2, 29.11.2021](https://www.w3.org/TR/2021/NOTE-wai-aria-practices-1.2-20211129/) и неизменяемым [WAI-ARIA 1.2 Candidate Recommendation Draft, 08.12.2021](https://www.w3.org/TR/2021/CRD-wai-aria-1.2-20211208/). Не используется будущая 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-состояние. Интеграция и публикация сознательно не выполнялись.