8.0 KiB
П54 · 2022-08 · Изображения и медиа — три прохода саморевью
Рамка пакета
- Slug:
editorial-2022-08-practice-media-performance,editorial-2022-08-mechanism-media-performance,editorial-2022-08-field-media-performance. - Голос: М5, начало 2022 года. Прагматичная техническая речь: один media slot, отдельные владельцы state, проверяемая граница и обратимая правка вместо общего обещания «ускорить картинки».
- Граница: fixture не создаёт DOM,
img, CSS layout, сеть, browser scheduler,decode(),PerformanceObserver, trace или product metric.markup, geometry, load/decode labels, priority intent и observation record — локальные данные модели. В частности, PASS не означает загрузку, декодирование, LCP или CLS. - Источники: датированный W3C FPWD Largest Contentful Paint от 24.05.2022 и W3C HTML 5.2 Recommendation от 14.12.2017. Оба URL проверены на HTTP 200; не использованы плавающие editor drafts как доказательство состояния августа 2022 года.
Проход 1 — факты и техника
- W3C LCP First Public Working Draft от 24 мая 2022 года назван именно Working Draft. Текст использует его только для границы: LCP — API наблюдения candidates с ограничениями, не синоним большой картинки и не результат unit fixture.
- HTML 5.2 Recommendation остаётся исторической первичной ссылкой для
img; статья не приписывает ему product policy, responsive selection или конкретный scheduler priority. - Учебный contract различает
markup,geometry,request.priorityIntent, declared load, declared decode и caller-supplied observation.priorityIntentпрямо маркирован как намерение приложения, не как приоритет браузера.geometryReservedпрямо не называется отсутствием layout shift. - Fixture намеренно отвергает decode до declared load и load без markup, принимает только положительную geometry, сохраняет deferred slot неготовым и всегда возвращает
realMetricMeasured: false. - После финальной правки пройдены:
node --check web/scripts/upgrade-2022-08.mjs;node web/scripts/upgrade-2022-08.mjs --verify-fixture;npm run audit:draft -- scripts/upgrade-2022-08.mjs; import/CLI comparison безdateиauthor.
Проход 2 — редактура, голос и полнота
- Первые два абзаца каждой статьи называют ситуацию и цену: поздний контент, изменение layout, неподтверждённый priority, необъяснимый релиз и невозможность корректно откатить смешанную правку.
- Маршрут в каждой статье построен как «симптом → причина → проверка → действие», с отдельным rollback и списком того, чего модель не измеряет.
- У всех статей есть table, локальный SVG с alt/caption, исполнимый fixture command и нумерованный маршрут. Тон М5 не выдумывает production case, проценты, LCP/CLS trace, сроки или эффект; он отделяет contract от browser observation.
- Размер основного текста контролируется скриптом: все три статьи находятся в обязательном диапазоне 5 000–15 000 знаков без списка источников.
Проход 3 — визуал и безопасность
- SVG отвечают на три разные задачи: contract slot, state boundary и diagnosis/rollback. Во всех есть
title,desc,role="img", а в статьях — развёрнутые alt и подписи. - В SVG нет
script,foreignObject, внешних URL иdata:image. Проверка XML и safety scan не нашли запрещённых конструкций. - Все три диаграммы открыты через Sharp-рендер на ширине 375 px: заголовки, состояния, подписи границы и ветка rollback остаются читаемыми; визуал не используется как доказательство браузерной метрики.
- Sidecar содержит ровно пять новых файлов. Registry, README,
articles.json, очередь, Git, ранее созданные месяцы и чужие файлы не менялись; интеграция и публикация не выполнялись.
Независимый редакторский приём
Проход 1 — фактчек и модель
Проверены оба датированных W3C URL: LCP First Public Working Draft 24 мая
2022 года и раздел img HTML 5.2 Recommendation ответили 200. Название
LCP сохранено как Working Draft, а не повышено до Recommendation. Фактчек
подтвердил ключевую границу текста: API описывает browser-side candidates и
ограничения, поэтому fixture не вправе объявлять свой candidate-note
измерением LCP или CLS.
Просмотрены все переходы createMediaContract: markup precedes plan,
declared load precedes declared decode, и supplied observation возможен только
после decode label. Geometry не названа результатом layout calculation;
priorityIntent возвращает transport: not-performed; readiness всегда
оставляет realMetricMeasured: false. Fixture прошла 14/14 assertions.
Проход 2 — текст и полнота
Проверены problem/cost в первых абзацах, tables, examples, ordered routes,
rollback и ограничения. Все три статьи различают component contract,
application intent, browser work и внешний observation record. Они не
заявляют загрузку, decode, LCP, CLS или скорость устройства. Draft audit
подтвердил 6 982 / 7 584 / 8 019 знаков; import-safe проверка вернула три
revision-объекта без date и author.
Проход 3 — визуал и выпуск
xmllint прошёл; safety scan не нашёл script, foreignObject, внешних URL
или data:image. Sharp-рендеры на 375 px просмотрены: slot contract, state
boundary и diagnosis/rollback самостоятельны и читаемо фиксируют границу
«не browser metric». После подключения августа registry содержит 157 ревизий.
Строгий slug-audit прошёл с одной figure, таблицей и code example на статью;
production build успешно сгенерировал 374 страницы. Sidecar сентября и позже
не затрагиваются.
Финальный вердикт
П54 принята и интегрирована после трёх независимых проходов. В коммит войдут только пять файлов августа и два точечных файла интеграции.