7.8 KiB
П53 · 2022-07 · Работа при плохой сети — три прохода саморевью
Рамка пакета
- Slug:
editorial-2022-07-practice-poor-network,editorial-2022-07-mechanism-poor-network,editorial-2022-07-field-poor-network. - Голос: М5, frontend-системщик 2022 года. Мост от ошибок формы и идемпотентности к пользовательскому сценарию: видимое состояние, владение черновиком, граница попытки и подтверждение результата.
- Граница компетентности: нет выдуманного production SLO, инцидента, offline trace, browser-прогона, настоящего Fetch/HTTP, service worker или ответа сервера. Network labels, keys и acknowledgement — учебные значения модели.
- Fixture: только локальные объекты и массивы. Она не создаёт DOM, storage API, worker, таймер или запрос.
unknown-outcomeозначает отсутствие acknowledgement в модели, а не установленный факт о сети или сервере.
Проход 1 — факты и техника
- Историческая рамка проверена по датированному WHATWG Fetch Review Draft, 19.12.2021, W3C Service Workers Candidate Recommendation Draft, 12.07.2022 и нормативному RFC 9110, июнь 2022. Текущие mutable-версии документации не используются как доказательство состояния 2022 года.
- Убрана ложная цепочка «нет ответа → сервер ничего не сделал». В тексте остаётся только проверяемое утверждение: текущая модель не приняла acknowledgement с ожидаемыми ключами и версией.
- Fixture разделяет
draft.version, persisted copy,requestKey,attemptKey, phase и acknowledgement. Retry сохраняет logical request key и меняет attempt key; stale/duplicate payload не делает второй commit; acknowledgement старой версии не очищает более новый draft. - После финальной правки пройдены:
node --check web/scripts/upgrade-2022-07.mjs— PASS;node web/scripts/upgrade-2022-07.mjs --verify-fixture— PASS 15/15;npm run audit:draft -- scripts/upgrade-2022-07.mjs— PASS.
Проход 2 — редактура и голос
- Первые два абзаца каждой статьи называют наблюдаемый сбой и цену: ложный success, дублирование действия, потерянный текст и невозможность объяснить состояние пользователю.
- Речь строится по маршруту «симптом → причина → проверка → действие». Термины acknowledgement, request key, attempt key, stale reply и recovery привязаны к одной модели, а не используются как абстрактные признаки надёжности.
- В каждой статье есть таблица, figure с содержательными alt/caption, исполнимый JS fixture, нумерованный маршрут, ограничения и проверяемый следующий шаг.
- Размер основного текста проверяется самим скриптом: 8 276 / 9 358 / 9 319 знаков без списка источников. Все три текста попадают в целевой диапазон М5 8–10 тыс. и в обязательный диапазон 5–15 тыс.
Проход 3 — визуал и выпуск
- Три SVG отвечают на разные вопросы: user-visible network state, contract request/attempt/acknowledgement и диагностика/recovery. В них нет
script,foreignObject, внешних URL илиdata:image. - Пройдены XML-проверка, safety scan без совпадений и Sharp-рендер всех SVG на ширине 375 px; на узком экране читаются названия состояний, ключевые ветки и нижняя граница модели.
- Sidecar меняет только пять разрешённых файлов. Registry, README,
articles.json, очередь, QUALITY_STANDARD,docs/, Git и чужие sidecar-файлы не затрагиваются. Интеграция и публикация не выполнялись.
Независимый редакторский приём
Проход 1 — источники и переходы
Проверены доступность и статус фиксированных источников: WHATWG Fetch Review
Draft декабря 2021 года, Service Workers Candidate Recommendation Draft 12
июля 2022 года и RFC 9110 отвечают 200. Статья использует их только для
исторической границы Fetch/HTTP/service worker; прикладные keys и
acknowledgement остаются решениями учебной модели.
В fixture усилены три проверки переходов. Снимок persisted draft теперь сохраняется сразу после offline block; stale acknowledgement сравнивает phase/request/attempt/acknowledgement до и после обработки; принятие старой версии сохраняет новый draft в отдельном снимке до duplicate branch. Это исключает ложный PASS, когда последующее действие маскирует раннюю мутацию. Ни Fetch, ни транспорт, ни сервер при этом не создаются. Fixture прошла 15/15 assertions.
Проход 2 — текст и полнота
Перечитаны problem/cost, таблицы, исполнимые примеры, routes, rollback и
границы трёх материалов. unknown-outcome везде означает отсутствие
model acknowledgement, а не утверждение о судьбе серверного действия. Draft
audit подтвердил 8 276 / 9 358 / 9 319 знаков; import-safe проверка вернула
три revision-объекта без date и author.
Проход 3 — визуал и выпуск
xmllint прошёл; safety scan не нашёл script, foreignObject, внешних URL
или data:image. Sharp-рендеры на 375 px просмотрены: схема видимых
состояний, retry contract и diagnosis/recovery читаемы и отделяют model ack
от ответа сервера. После подключения июля registry содержит 154 ревизии.
Строгий slug-audit прошёл с одной figure, таблицей и code example на статью;
production build успешно сгенерировал 374 страницы. Sidecar следующих месяцев
не затрагиваются.
Финальный вердикт
П53 принята и интегрирована после трёх независимых проходов. В коммит войдут только пять файлов июля и два точечных файла интеграции.