Files
progcode/editorial/reviews/2027-02-draft.md
T
huncode 9e3cd52f80
Build and deploy / deploy (push) Successful in 16s
revise February 2027 legacy lessons plan articles
2026-07-31 20:18:11 +03:00

74 lines
12 KiB
Markdown
Raw 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.
# P108 — February 2027: «Уроки Bitrix для legacy-разработки»
## Статус и временная граница
Редакторская дата: **31 июля 2026**. Февраль 2027 ещё не наступил. Все три статьи прямо обозначены как **план/сценарий на 2027-02** с source cutoff **2026-07-31**. Это не описание существующего проекта, Bitrix-установки, версии, API-вызова, пользователя, поля, migration test, релиза или результата. Архивная документация Bitrix не использована как факт: подтверждённой версии у сценария нет.
Модель работает только с named fixed synthetic cases и fixed in-memory literals. Factory выполняет JSON clone и recursive deep freeze; evaluator fail-closed и принимает только byte-identical known literal. Единственный положительный output — `synthetic-plan-hand-off` с `productionEffect: not-attempted`. Код не читает сеть, browser, files, environment, clock, secrets, telemetry, external tools или production и не пытается выполнять migration.
## Источники и boundary
1. [RFC 2119: Key words for use in RFCs](https://www.rfc-editor.org/rfc/rfc2119), BCP 14, March 1997, DOI `10.17487/RFC2119`. Первичный pinned источник точной нормативной лексики. Он не описывает Bitrix, не подтверждает API, версию, migration или результат.
2. [RFC 8174: Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words](https://www.rfc-editor.org/rfc/rfc8174), BCP 14, May 2017, DOI `10.17487/RFC8174`. Первичный pinned источник контекста модальных слов. Он не создаёт совместимость, evidence или будущий release.
3. [NIST SP 800-160 Vol. 1 Rev. 1: Engineering Trustworthy Secure Systems](https://doi.org/10.6028/NIST.SP.800-160v1r1), Revision 1, November 2022, DOI `10.6028/NIST.SP.800-160v1r1`. Первичный pinned источник общих инженерных границ и evidence. Он не является документацией Bitrix и не подтверждает project/test/field result.
Все источники опубликованы не позже cutoff. Их общие принципы отделены от модели P108: `keep/wrap/replace`, placeholders, stop-status, evidence state и hand-off — собственные synthetic конструкции будущего номера.
## Review pass 1 — проблема, фокус, тон, плотность
- **Practice** начинает с ранней замены старого участка без названного правила и цены потери неявного соглашения. Угол: дерево `сохранить → обернуть → заменить`, где ни одна ветка не выдается за выполненную миграцию.
- **Mechanism** начинает с ошибки «имя вызова равно гарантии поведения» и цены ложного инварианта. Угол: граница версии и контракт существуют отдельно от вида API-вызова; ни один вызов не назван фактом Bitrix.
- **Field** начинает с фразы о подтверждённой миграции без provenance и цены несуществующего evidence. Угол: synthetic migration evidence hand-off без заявленного test, проекта, релиза или успеха.
- Во всех первых двух абзацах названы проблема и цена. Голос M10: сжатая русская техническая речь, прямые запреты на вымысел, без оправдания бездействия legacy-возрастом.
- В каждом тексте есть механизм, HTML-table, русские alt/caption для своего SVG, literal runnable safe example, ordered actions, ограничения и следующий шаг. Финальные body lengths: practice — `9 469`, mechanism — `9 663`, field — `9 576` знаков.
## Review pass 2 — cutoff, факты, literal safety
- `planDate: 2027-02` и `sourceCutoff: 2026-07-31` обязательны; `undated-future-scenario-v1` возвращает `stop-undated-future-scenario-or-cutoff`.
- В модели есть только `unnamed-legacy-contract` и `unnamed-version-boundary` как named synthetic placeholders. Пропуск каждого закрывается соответственно `stop-unnamed-legacy-contract` и `stop-unnamed-version-boundary`; ни версия, ни контракт не выдумываются.
- `missing-migration-evidence-v1` возвращает `stop-missing-or-claimed-migration-evidence`. У allowed literal evidence остаётся `not-collected/synthetic-input`, поэтому сценарий не маскирует отсутствие test или record.
- `positive-conclusion-v1` закрывается `stop-disallowed-positive-conclusion`; `migration-succeeded`, release и любой позитивный future outcome не допускаются.
- JSON clone + deep freeze не дают caller изменить вложенный literal после выдачи. Произвольный input останавливается `stop-unknown-fixed-input`; safe examples не обращаются к Bitrix или какой-либо живой системе.
## Review pass 3 — SVG, мобильный осмотр и фактические проверки
- Все три SVG содержат русские `title` и `desc`, data-bearing схему и русские article alt/caption. Нет внешних ссылок, `script`, `foreignObject`, `javascript:`, `data:image` или event handlers.
- Sharp-рендеры 375×260 осмотрены вручную. Дерево сохраняет три ветки и два красных stop; матрица сохраняет четыре колонки после сокращения заголовка до «Вывод» без наложения; evidence loop сохраняет зелёную передачу и красные запреты. Обрезания текста не обнаружены.
- Строгая pairwise проверка исключала source sections, но включала `<pre><code>`. Для всех трёх пар получены `exactParagraphs160: 0` и `common12WordFragments: 0`.
Команды действительно выполнены из `web/`; результаты ниже зафиксированы после финальной правки SVG.
```sh
node --check scripts/upgrade-2027-02.mjs
node scripts/upgrade-2027-02.mjs --verify-fixture
npm run audit:draft -- scripts/upgrade-2027-02.mjs
node --input-type=module -e "import { createFixedLessonCase, assessFixedLessonPlan } from './scripts/upgrade-2027-02.mjs'; for (const id of ['keep-wrap-replace-v1','undated-future-scenario-v1','unnamed-contract-v1','unnamed-version-boundary-v1','missing-migration-evidence-v1','positive-conclusion-v1']) console.log(id, assessFixedLessonPlan(createFixedLessonCase(id)).status);"
xmllint --noout public/assets/editorial/2027/bitrix-lessons-2027-keep-wrap-replace-tree.svg public/assets/editorial/2027/bitrix-lessons-2027-version-boundary-matrix.svg public/assets/editorial/2027/bitrix-lessons-2027-migration-evidence-loop.svg
rg -n -i "<(script|foreignObject)\\b|javascript:|data:image|(?:^|[[:space:]])on[a-z]+=" public/assets/editorial/2027/bitrix-lessons-2027-keep-wrap-replace-tree.svg public/assets/editorial/2027/bitrix-lessons-2027-version-boundary-matrix.svg public/assets/editorial/2027/bitrix-lessons-2027-migration-evidence-loop.svg
node --input-type=module -e "import sharp from 'sharp'; for (const n of ['bitrix-lessons-2027-keep-wrap-replace-tree','bitrix-lessons-2027-version-boundary-matrix','bitrix-lessons-2027-migration-evidence-loop']) { const out='/private/tmp/'+n+'-375.png'; const info=await sharp('public/assets/editorial/2027/'+n+'.svg').resize({width:375}).png().toFile(out); console.log(out, info.width+'x'+info.height); }"
```
Фактические результаты: syntax — pass; fixture — `9/9` (`6/6` literals + `3/3` article checks); audit — pass для трёх exact slug с lengths `9 469 / 9 663 / 9 576`; public exports вернули один `synthetic-plan-hand-off` и пять ожидаемых stop-status; `xmllint` — pass; SVG safety scan — empty/pass; Sharp — три файла `375x260`; визуальный inspection — pass; pairwise duplicate scan — нули по обеим метрикам во всех парах.
## Disposition
Изменены только пять файлов P108:
- `web/scripts/upgrade-2027-02.mjs`
- `editorial/reviews/2027-02-draft.md`
- `web/public/assets/editorial/2027/bitrix-lessons-2027-keep-wrap-replace-tree.svg`
- `web/public/assets/editorial/2027/bitrix-lessons-2027-version-boundary-matrix.svg`
- `web/public/assets/editorial/2027/bitrix-lessons-2027-migration-evidence-loop.svg`
Registry, README, `articles.json`, application files, очередь, P102–P107 и Git-state не менялись. P108 передаёт только synthetic plan hand-off; он не заявляет тест, проект, API, релиз, пользователя, поле или положительный будущий результат.
## Независимая приёмка основного редактора — 31.07.2026
Принято исключительно как **февральский план/сценарий 2027**. В текстах сохранены `2027-02` и cutoff `2026-07-31`; нет выдуманного Bitrix API, версии, установки, migration test, release или результата. Единственный positive result — `synthetic-plan-hand-off`, `productionEffect: not-attempted`.
Проверка первоисточников обнаружила и устранила ошибку в ссылке: NIST SP 800-160 Vol. 1 Rev. 1 официально называется *Engineering Trustworthy Secure Systems* и опубликован в **November 2022**, не November 2021. RFC 2119 и RFC 8174 подтверждены как BCP 14. Все три документа оставлены только для дисциплины границ/модальности; они не служат документацией Bitrix и не доказывают version boundary или migration evidence.
Повторно выполнены syntax, fixture/guard `9/9`, draft audit с объёмами 9 469 / 9 663 / 9 649, XML и SVG safety-scan. Literal exports дали expected six branches, включая `stop-unnamed-legacy-contract`, `stop-unnamed-version-boundary`, `stop-missing-or-claimed-migration-evidence` и `stop-disallowed-positive-conclusion`. Три SVG осмотрены через Sharp на 375 px: ветви дерева, строки матрицы и arrows hand-off не обрезаются. Один общий 12-словный label между practice и field был устранён; итоговый scan 21 статьи августа 2026 — февраля 2027 дал `collisions: []`.
В registry добавлены только три февральские ревизии. Пользовательские application-файлы, `articles.json`, production queue и остальная незакоммиченная работа в приёмку не включены.