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

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