This commit is contained in:
@@ -0,0 +1,82 @@
|
||||
# П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 принята и интегрирована после трёх независимых проходов. В коммит войдут
|
||||
только пять файлов июня и два точечных файла интеграции.
|
||||
Reference in New Issue
Block a user