revise February 2027 legacy lessons plan articles
Build and deploy / deploy (push) Successful in 16s
Build and deploy / deploy (push) Successful in 16s
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
# Производство редакционных партий
|
||||
|
||||
На 31 июля 2026 года строгий аудит проходит 325 из 358 созданных материалов. Остальные 33 не считаются «почти готовыми»: их нужно заменить, а не косметически удлинить.
|
||||
На 31 июля 2026 года строгий аудит проходит 328 из 358 созданных материалов. Остальные 30 не считаются «почти готовыми»: их нужно заменить, а не косметически удлинить.
|
||||
|
||||
## Одна партия
|
||||
|
||||
|
||||
@@ -0,0 +1,73 @@
|
||||
# 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 и остальная незакоммиченная работа в приёмку не включены.
|
||||
Reference in New Issue
Block a user