This commit is contained in:
@@ -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 принята и интегрирована после трёх независимых проходов. В коммит войдут
|
||||
только пять файлов июля и два точечных файла интеграции.
|
||||
Reference in New Issue
Block a user