6.8 KiB
Февраль 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()показывает mappingPERSONAL_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, приложение и файлы других месяцев не изменялись.