46 lines
6.3 KiB
Markdown
46 lines
6.3 KiB
Markdown
# Пакет 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 и чужие незакоммиченные изменения.
|