Files
progcode/editorial/reviews/2022-08-draft.md
T
huncode a7c2991b49
Build and deploy / deploy (push) Successful in 14s
revise August 2022 media performance articles
2026-07-31 13:55:03 +03:00

8.0 KiB
Raw Blame History

П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 принята и интегрирована после трёх независимых проходов. В коммит войдут только пять файлов августа и два точечных файла интеграции.