revise July 2022 poor network articles
Build and deploy / deploy (push) Successful in 13s

This commit is contained in:
2026-07-31 13:51:28 +03:00
parent 2bfc9d929f
commit ec1fa93fd2
7 changed files with 673 additions and 1 deletions
+69
View File
@@ -0,0 +1,69 @@
# П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](https://fetch.spec.whatwg.org/review-drafts/2021-12/), [W3C Service Workers Candidate Recommendation Draft, 12.07.2022](https://www.w3.org/TR/2022/CRD-service-workers-20220712/) и нормативному [RFC 9110, июнь 2022](https://www.rfc-editor.org/rfc/rfc9110.html). Текущие 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 принята и интегрирована после трёх независимых проходов. В коммит войдут
только пять файлов июля и два точечных файла интеграции.