Files
huncode 2bfc9d929f
Build and deploy / deploy (push) Successful in 16s
revise June 2022 form errors articles
2026-07-31 13:48:48 +03:00

83 lines
8.3 KiB
Markdown
Raw Permalink 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.
# П52 · 2022-06 · Ошибки формы — draft review
## Граница пакета
- Slug: `editorial-2022-06-practice-form-errors`, `editorial-2022-06-mechanism-form-errors`, `editorial-2022-06-field-form-errors`.
- Голос: М5, системный frontend-практик 2022 года. Текст начинается с конкретного пользовательского сбоя и отделяет проектную модель от наблюдений в браузере.
- Пакет намеренно не меняет registry, README, базовый архив, документы, очередь, стандарт качества или Git-состояние.
- Fixture — детерминированная in-memory модель. В ней нет HTTP, Fetch, сети, таймеров, DOM, браузера, screen reader, accessibility tree, реального server status, telemetry или пользовательского исследования.
## Источники и временная граница
1. [HTML 5.2, W3C Recommendation, 14 December 2017](https://www.w3.org/TR/2017/REC-html52-20171214/) — неизменяемая нормативная версия для form controls и constraint validation.
2. [WAI-ARIA 1.2, W3C Candidate Recommendation Draft, 8 December 2021](https://www.w3.org/TR/2021/CRD-wai-aria-1.2-20211208/) — датированный нормативный снимок для `aria-invalid` и `aria-errormessage`.
3. [WAI-ARIA Authoring Practices 1.2, W3C Group Note, 29 November 2021](https://www.w3.org/TR/2021/NOTE-wai-aria-practices-1.2-20211129/) — датированное официальное guidance, не подменяющее проверку конкретного интерфейса.
Не использованы floating current docs как доказательство прошлого. Источники не подтверждают project-specific `attemptId`, version, retry или rollback: это явно обозначенные решения учебной модели.
## Проход 1 — факты и техника
- Проверен сценарий с локально невалидным вводом, активной попыткой, изменением поля после submit, stale response, совпавшей server error, retry, duplicate response и одноразовым rollback.
- В response сначала сопоставляется `attemptId`, затем versions снимка и текущих полей. Старый ответ не применяет message и снимает active attempt, поэтому новый input можно отправить повторно.
- Semantic payload хранит только declared `invalid`, `describedBy`, `errorMessageId` и text. Он не выдаётся за DOM, accessibility tree или результат речи screen reader.
- Rollback возвращает только последний локальный accepted snapshot и не называется отменой server-side действия. Повторный rollback блокируется.
- `node --check` и `node web/scripts/upgrade-2022-06.mjs --verify-fixture`: PASS, 18/18 assertions.
## Проход 2 — редактура и голос
- Практика: **6 756** знаков основного текста.
- Механизм: **8 531** знак основного текста.
- Поле: **8 820** знаков основного текста.
- Во всех трёх материалах проблема и цена названы в первых двух абзацах; есть таблица, figure с alt/caption, исполнимый JS-пример, маршрут, ограничения и следующий проверяемый шаг.
- Убраны неподтверждённые слова о production-инциденте, сетевой записи, реальной задержке и пользовательском исследовании. Формула текста выдержана: симптом → причина → проверка → действие.
- М5 соблюдён: системность выражена через владение состоянием и проверяемый переход, а не через общий стратегический тон или выдуманные метрики.
## Проход 3 — визуал и выпуск sidecar
- `node web/scripts/audit-editorial-draft.mjs scripts/upgrade-2022-06.mjs`: PASS для всех трёх slug.
- XML проверен `xmllint --noout`; safety scan не нашёл `script`, `foreignObject`, external URL или `data:image`.
- Каждая SVG — vector-only и отвечает на отдельный вопрос: автомат state, declared association ошибки, диагностика retry/rollback.
- Рендеры Sharp на 375 px просмотрены вручную. После первого прохода увеличены шрифты и упрощены подписи в блоках, чтобы на узкой ширине сохранялись читаемые состояния и граница модели.
- Выпуск, интеграция registry, production build, commit и push намеренно не выполнялись: это автономный sidecar из пяти файлов.
## Независимый редакторский приём
### Проход 1 — источники и переходы
Проверены три датированных W3C URL: HTML 5.2 Recommendation 14 декабря 2017
года, WAI-ARIA 1.2 Candidate Recommendation Draft 8 декабря 2021 года и APG
1.2 Group Note 29 ноября 2021 года. Все ответили `200`; ни один документ не
используется как доказательство сетевого ответа или поведения учебной формы.
Независимый code review ужесточил fixture. Раньше assertions о stale response
и очистке server error смотрели на финальное состояние длинного сценария.
Теперь сохраняются `versionAfterEdit`, `staleServerError`, active attempt и
semantic payload сразу в соответствующих переходах. Так тест ловит возврат
старого сообщения до следующего retry, а не случайно проходит после позднего
rollback. Модель всё ещё не выполняет HTTP, Fetch, DOM или доступность
платформы. Fixture прошла **18/18 assertions**.
### Проход 2 — текст и границы
Повторно прочитаны problem/cost, таблицы, code examples, ordered route и
rollback во всех трёх статьях. Они различают local validation, active attempt,
stale response, matching server error и accepted snapshot; `attemptId` и
versions названы решениями пакета, а не свойствами HTML или ARIA. Draft audit
подтвердил 6 756 / 8 531 / 8 820 знаков; import-safe проверка вернула три
revision-объекта без `date` и `author`.
### Проход 3 — визуал и выпуск
`xmllint` прошёл; safety scan не нашёл script, `foreignObject`, внешних URL
или `data:image`. Sharp-рендеры на 375 px отдельно проверены: state machine,
semantic association и diagnosis/recovery различают вопросы и не выдают
локальные значения за browser trace. После подключения июня registry содержит
151 ревизию. Строгий slug-audit прошёл с одной figure, таблицей и code example
на статью; production build успешно сгенерировал 374 страницы.
Неинтегрированные материалы июля и позже не затрагиваются.
## Финальный вердикт
П52 принята и интегрирована после трёх независимых проходов. В коммит войдут
только пять файлов июня и два точечных файла интеграции.