Files
progcode/editorial/reviews/2022-06-draft.md
T
huncode 2bfc9d929f
Build and deploy / deploy (push) Successful in 16s
revise June 2022 form errors articles
2026-07-31 13:48:48 +03:00

8.3 KiB
Raw Blame History

П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 — неизменяемая нормативная версия для form controls и constraint validation.
  2. WAI-ARIA 1.2, W3C Candidate Recommendation Draft, 8 December 2021 — датированный нормативный снимок для aria-invalid и aria-errormessage.
  3. 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 принята и интегрирована после трёх независимых проходов. В коммит войдут только пять файлов июня и два точечных файла интеграции.