# П51 · 2022-05 · Маленькая дизайн-система — три прохода саморевью ## Рамка пакета - Slug: `editorial-2022-05-practice-design-system`, `editorial-2022-05-mechanism-design-system`, `editorial-2022-05-field-design-system`. - Голос: М5, системный практик 2022 года. Тема продолжает доступный control: внешняя форма, состояния и семантика должны иметь явный контракт, но не раздуваются до выдуманной универсальной платформы. - Граница компетентности: в текстах нет существующей библиотеки, команды, production-дефекта, пользовательского исследования, скриншота, visual-regression запуска или результата accessibility-проверки. - Fixture: детерминированные локальные объекты и массивы. `visualPayload` — объявленные входы будущей проверки, не screenshot, score или тестовый результат. DOM, браузер, Playwright, screen reader, CSS compilation, HTTP и реальные visual tests не запускаются. ## Проход 1 — факты и техника - Историческая рамка сверена по датированным W3C-снимкам: [CSS Custom Properties Level 1, Candidate Recommendation Draft, 11.11.2021](https://www.w3.org/TR/2021/CRD-css-variables-1-20211111/), [WAI-ARIA 1.2, Candidate Recommendation Draft, 08.12.2021](https://www.w3.org/TR/2021/CRD-wai-aria-1.2-20211208/) и неизменяемой [WCAG 2.1 Recommendation, 05.06.2018](https://www.w3.org/TR/2018/REC-WCAG21-20180605/). Ссылки существуют до мая 2022 года; современные mutable docs не используются как доказательство прошлого состояния. - Уточнена граница CSS Custom Properties: спецификация задаёт `--*` и `var()`, но не taxonomy дизайн-токенов. WAI-ARIA/WCAG не выданы за правила конкретного token API, инвентаря или visual pipeline. - Fixture проверяет named tokens, пять required states, name/role/state, три именованных usage, declared payload с каждым required state, два invalid configuration и безопасную пару correction/rollback. В ней нет симуляции CSS, пикселей, accessibility tree или browser behavior. - После финальной правки успешно выполнены `node --check web/scripts/upgrade-2022-05.mjs`, `node web/scripts/upgrade-2022-05.mjs --verify-fixture` (13/13) и `npm run audit:draft -- scripts/upgrade-2022-05.mjs`. ## Проход 2 — редактура и голос - В первых двух абзацах каждой статьи есть конкретный симптом и цена: рассинхрон кнопок, разрыв владельцев contract или опасная общая правка token. - Речь построена как «симптом → причина → проверка → действие». М5 проявляется в разделении слоёв, явном радиусе изменения, тестовой границе и обратимой правке, без роли автора как владельца большой дизайн-платформы. - Во всех трёх статьях есть таблица, рисунок с содержательным `alt` и caption, исполнимый JS-пример, нумерованный маршрут, ограничение и следующий проверяемый шаг. - Основной текст без источников проверен редакционным аудитом: 6 862 / 8 576 / 8 495 знаков — внутри диапазона 5 000–15 000. ## Проход 3 — визуал и выпуск - SVG разделены по задаче: token flow, четыре слоя component contract и diagnosis с обратимой правкой. Каждый открыт после Sharp-рендера на ширине 375 px: заголовки, ключевые ветки, подписи и границы модели читаемы. - XML-проверка прошла для всех трёх SVG. Safety scan подтвердил отсутствие `script`, `foreignObject`, внешних URL и `data:image`; изображения содержат только встроенную vector-разметку. - Sidecar содержит ровно пять новых файлов. Registry, README, `articles.json`, QUALITY_STANDARD, очередь, `docs/`, Git и чужие sidecar-файлы не менялись. Интеграция и публикация намеренно не выполнялись. ## Независимый редакторский приём ### Проход 1 — фактчек и модель Проверка исторических ссылок обнаружила неверный URL WAI-ARIA: вариант с суффиксом `20211209` возвращал `300`, хотя текст правильно называл документ от 8 декабря. Ссылка заменена на `CRD-wai-aria-1.2-20211208`; она, как и датированные CSS Custom Properties CR Draft и WCAG 2.1 Recommendation, отвечает `200`. Статус WAI-ARIA не повышен до будущей Recommendation. В code review обнаружен второй разрыв: `requiredStates` содержал пять значений, а declared visual payload не включал `hover`. Payload дополнен пятым state, fixture получила отдельный assertion о покрытии каждого required state. Это по-прежнему только вход будущего visual test, а не screenshot, diff или результат browser run. Fixture завершилась с **13/13 assertions**. ### Проход 2 — текст и полнота Повторно проверены problem/cost, таблицы, исполнимые примеры, ordered route, rollback и ограничения трёх статей. Тексты не выдают CSS custom properties за taxonomy токенов, а visual payload — за факт visual regression. Draft audit подтверждает 6 862 / 8 576 / 8 495 знаков в требуемом диапазоне; import-safe проверка вернула три revision-объекта без `date` и `author`. ### Проход 3 — визуал и выпуск `xmllint` прошёл; safety scan не нашёл script, `foreignObject`, внешних URL или `data:image`. Sharp-рендеры на 375 px просмотрены: token flow, четыре слоя contract и correction/rollback отвечают на разные вопросы и явно отделяют declared payload от реального результата. После подключения мая registry содержит 148 ревизий. Строгий slug-audit прошёл с одной figure, таблицей и code example на статью; production build успешно сгенерировал 374 страницы. Материалы июня и позже не затрагиваются. ## Финальный вердикт П51 принята и интегрирована после трёх независимых проходов. В коммит войдут только пять файлов мая и два точечных файла интеграции.