Files
progcode/editorial/reviews/2027-02-draft.md
T
2026-07-31 22:26:56 +03:00

6.8 KiB
Raw Blame History

Февраль 2027 — редакторское ревью после переписывания

Объём партии

  • editorial-2027-02-practice-bitrix-lessons — 5 691 знак основного текста;
  • editorial-2027-02-mechanism-bitrix-lessons — 5 398 знаков;
  • editorial-2027-02-field-bitrix-lessons — 5 080 знаков.

Stable slugs сохранены. Все три материала говорят с читателем о Bitrix/PHP boundary, а не о редакционном процессе. В body нет плановой или сценарной мета-лексики, статусов отсутствующих артефактов, synthetic hand-off и сюжета о развитии автора.

Проход 1 — факты, техника, пример и источники

  • Practice. До: выбор keep/wrap/replace был описан как безопасная передача вопроса. После: chooseLegacyBoundary() принимает callers, characterization tests, unknown side effects и canonical contract. Причина: решение привязано к наблюдаемым условиям legacy-кода.
  • Mechanism. До: имя метода Bitrix подавалось как версия контракта. После: inspectBitrixSurface() отдельно проверяет module loaded, legacy surface и D7 surface. Причина: подключение модуля, наличие метода и семантика поля — разные факты.
  • Field. До: миграционная статья описывала форму evidence без read-back. После: migrateUserFields() показывает mapping PERSONAL_PHONE/EMAIL, сохраняет legacy snapshot и маркирует обратимость. Причина: пример проверяет именно данные поля и повторяемое преобразование.

Источники проверены HTTP 200 и применены с границами:

  • CUser — документация API, проверена 31 July 2026, класс с версии 3.0.6; поля ID, EMAIL, PERSONAL_PHONE, XML_ID и аналог D7; не описывает local events, права и callers.
  • CModule::IncludeModule — документация API, проверена 31 July 2026, CModule с версии 3.0.1; условие подключения модуля; не подтверждает состояние конкретной установки.
  • PHP filter_var — PHP Manual, проверена 31 July 2026; валидация входного email; не определяет бизнес-правила Bitrix.
  • Semantic Versioning 2.0.0 — Version 2.0.0, 2013; граница обещаний совместимости; не делает внутренний Bitrix API semver-совместимым автоматически.

Проход 2 — структура, голос, плотность и мета-лексика

  • Practice. До: вступление начиналось с «старый код нужно обновлять». После: первые два абзаца называют неявные поля, hooks, callers и цену потерянного поведения. Причина: возраст файла заменён конкретным риском.
  • Mechanism. До: текст повторял названия CUser/UserTable. После: порядок стал «модуль → поверхность → поля → семантика», а таблица связывает каждый слой с проверкой. Причина: читатель может выполнить диагностику без лозунга о миграции.
  • Field. До: успешный ID выглядел достаточным результатом. После: добавлены различия missing/empty, read-back и повторный запуск. Причина: статья отвечает на реальную поломку данных, а не на факт вызова API.

Запрещённая мета-лексика проверена в body: 0 совпадений. Порядок «симптом → причина → проверка → действие → ограничение» сохранён для каждой статьи; общий вводный блок между тремя текстами не повторяется.

Проход 3 — визуал, мобильная читаемость, доступность и повторы

  • Practice. До: дерево содержало synthetic contract и даты. После: SVG сравнивает callers, tests и side effects с тремя решениями. Причина: рисунок стал визуальным продолжением chooseLegacyBoundary().
  • Mechanism. До: матрица показывала placeholder и hand-off. После: строки описывают module, method, fields и semantics; последний статус — «неясно, остановить замену». Причина: граница версии стала технической.
  • Field. До: петля заканчивалась отсутствующим migration result. После: схема проходит mapping, write, read-back и retry; отдельный узел различает missing и clear. Причина: визуал повторяет проверяемый порядок миграции.

У SVG русские title/desc, alt/caption в статьях, локальная разметка и нет опасных элементов. Мобильный просмотр на 375 px повторён после правки длинных подписей в нижних узлах Bitrix-графики.

Проверки

node --check scripts/upgrade-2027-02.mjs — PASS
node scripts/upgrade-2027-02.mjs --verify-fixture — PASS, 4/4
npm run audit:draft -- scripts/upgrade-2027-02.mjs — PASS, 3/3
локальные Bitrix mapping/surface examples — PASS, 12/12 для всей партии
xmllint --noout для 3 SVG — PASS
SVG safety scan — PASS
Sharp resize width=375 для 3 SVG — PASS; визуально проверены матрица, дерево и цикл
strict cross-article scan января–апреля: collisions: []

Git, registry, README, articles.json, приложение и файлы других месяцев не изменялись.