8.3 KiB
П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 или пользовательского исследования.
Источники и временная граница
- HTML 5.2, W3C Recommendation, 14 December 2017 — неизменяемая нормативная версия для form controls и constraint validation.
- WAI-ARIA 1.2, W3C Candidate Recommendation Draft, 8 December 2021 — датированный нормативный снимок для
aria-invalidиaria-errormessage. - WAI-ARIA Authoring Practices 1.2, W3C Group Note, 29 November 2021 — датированное официальное 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 принята и интегрирована после трёх независимых проходов. В коммит войдут только пять файлов июня и два точечных файла интеграции.