This commit is contained in:
@@ -0,0 +1,70 @@
|
||||
# П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-состояние. Интеграция и публикация сознательно не выполнялись.
|
||||
Reference in New Issue
Block a user