Files
huncode ec1fa93fd2
Build and deploy / deploy (push) Successful in 13s
revise July 2022 poor network articles
2026-07-31 13:51:28 +03:00

7.8 KiB
Raw Permalink Blame History

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