Files
progcode/editorial/reviews/2026-09-draft.md
T
2026-07-31 22:26:56 +03:00

6.3 KiB
Raw Blame History

Пакет 2026-09 — три редакторских прохода

Пакет переписан как три самостоятельные технические статьи. В тексте нет описания авторской траектории, редакционного плана, даты отсечения источников, отчёта о публикации или обещаний о состоянии системы. Стабильные slug сохранены.

Проход 1 — проблема, структура и практический результат

Для каждой статьи выполнена отдельная замена предмета, а не косметическая правка.

Статья Было Стало
Practice «План на сентябрь: карта границы между экраном и доменом» и рассуждение о synthetic hand-off «Ответ 200 — ещё не модель экрана: валидируем JSON на границе UI и API»; в первых абзацах названы сломанный payload, цена рассинхрона и порядок проверки status → media type → JSON → screen model
Mechanism «План на сентябрь: на что boundary даёт право сделать вывод» и fixed literal ownership «Состояние экрана не угадывают по статусу: разделяем query, command и ошибку»; добавлены 2xx/204/409/422/429/5xx, problem envelope и отдельная retry policy
Field «Сценарий на сентябрь: synthetic hand-off для границы UI и API» и карточка передачи «UI и API расходятся: полевой протокол диагностики без догадок»; добавлены четыре наблюдения intent/request/response/render input и маршрутизация к adapter, cache или selector

Для всех трёх материалов добавлены самостоятельные разделы, доступные таблицы, SVG-схемы, кодовый пример, последовательность действий, ограничения и следующий шаг. Повторы между текстами убраны: у первой статьи центр тяжести — форма ответа, у второй — семантика результата, у третьей — локализация рассинхрона.

Проход 2 — факты, техническая проверка и источники

Статья Конкретная правка Проверка границы
Practice Убрано утверждение, что HTTP 200 равен успеху экрана; добавлена функция checkScreenResponse с закрытым словарём status/actions и непустым messageCode 200 проверяется отдельно от runtime shape; 204 не проходит в JSON parser; generated types не выданы за runtime validation
Mechanism Убрана универсальная ветка «красный статус = сетевой сбой»; добавлена classifyHttpResponse с отдельными ветками 409/422 и 429/5xx RFC 9110 используется только для HTTP semantics, RFC 9457 — только для Problem Details, OpenAPI — только для описания response variants
Field Убрана имитация UI/network trace; добавлена diagnoseBoundaryObservation, которая различает валидный response и устаревший render input Код не обращается к сети, секретам или реальному браузеру; curl-пример ограничен чтением тестового ресурса и явно отделён от mutation

Проверяемые ссылки находятся в конце каждой статьи. Для каждой указаны название, версия/дата, конкретное использование и граница применимости. Внутренние выводы статьи не приписываются стандартам.

Проход 3 — язык, визуальная подача и выпускная вычитка

Статья До правки После правки
Practice «карта владельцев», «сценарий», «положительная ветка» прагматичный глагольный маршрут: «проверить», «остановить», «не передавать в компонент»
Mechanism «hand-off», «approval», «synthetic» в основном тексте короткие технические формулировки о response, problem detail, retry и read model
Field «передать карточку следующему reviewer» конкретные поля диагностики, безопасные заголовки, порядок сравнения и критерий остановки

SVG переработаны под мобильную ширину: крупные подписи, один смысловой рисунок на статью, title/desc, содержательный alt и подпись. Убраны схемы, которые показывали редакционный процесс вместо технического механизма.

Выполненные проверки

  • node --check scripts/upgrade-2026-09.mjs — pass.
  • node scripts/upgrade-2026-09.mjs --verify-fixture — 8/8; объём тел: 7 581, 6 998 и 8 459 знаков.
  • npm run audit:draft -- scripts/upgrade-2026-09.mjs — pass после добавления явного слова «Проблема» в открытие Mechanism.
  • xmllint --noout для трёх SVG — pass.
  • SVG safety scan — pass: нет script, foreignObject, javascript:, data:image и inline event handlers.

Пакет не меняет articles.json, application-файлы, registry и чужие незакоммиченные изменения.