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

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