Files
2026-07-31 22:26:56 +03:00

54 lines
6.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Февраль 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](https://dev.1c-bitrix.ru/api_help/main/reference/cuser/index.php) — документация API, проверена 31 July 2026, класс с версии 3.0.6; поля `ID`, `EMAIL`, `PERSONAL_PHONE`, `XML_ID` и аналог D7; не описывает local events, права и callers.
- [CModule::IncludeModule](https://dev.1c-bitrix.ru/api_help/main/reference/cmodule/includemodule.php) — документация API, проверена 31 July 2026, CModule с версии 3.0.1; условие подключения модуля; не подтверждает состояние конкретной установки.
- [PHP `filter_var`](https://www.php.net/manual/en/function.filter-var.php) — PHP Manual, проверена 31 July 2026; валидация входного email; не определяет бизнес-правила Bitrix.
- [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html) — 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-графики.
## Проверки
```text
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`, приложение и файлы других месяцев не изменялись.