9.9 KiB
P104 — October 2026: «Стандарт code review»
Статус и фактическая граница
Это изолированный draft-пакет. На дату подготовки — 31 июля 2026 — октябрь ещё не наступил. Все три статьи прямо оформлены как план/сценарий на октябрь 2026, а не как field report, история pull request, CI-прогон, merge, release, deploy, публикация или результат настоящего review.
Все входы — named fixed synthetic literals в памяти. Разрешённый положительный статус только synthetic-review-hand-off, в нём есть productionEffect: not-attempted. Код не читает repository, diff, сеть, файловую систему, часы, secrets, CI или production и не совершает внешних действий.
Исследование источников до cutoff
- RFC 2119: Key words for use in RFCs to Indicate Requirement Levels, BCP 14, March 1997, DOI
10.17487/RFC2119. Проверены дата, определениеMUST,SHOULD,MAYи ограничение: императивы надо применять бережно там, где они действительно нужны для совместимости или ограничения вредного поведения. Граница: RFC не является policy code review и не создаёт обязанностей этой команды. - RFC 8174: Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words, BCP 14, May 2017, DOI
10.17487/RFC8174. Использован только для уточнения контекста прописных терминов. Граница: документ не делает synthetic validator стандартом проекта. - NIST SP 800-218, SSDF Version 1.1, February 2022, DOI
10.6028/NIST.SP.800-218. Проверены месяц публикации, статус рекомендаций и назначение: высокоуровневые secure-development practices, интегрируемые в разные SDLC. Граница: NIST не подтверждает риск, уязвимость, CI или review конкретной организации.
Ни одно утверждение не зависит от факта после cutoff 2026-07-31. Внешние документы отделены от моей проектной модели матрицы и fixed literals.
Review pass 1 — проблема, плотность, голос, независимость
- Practice начинается с contract/migration change, который тонет в замечаниях о стиле; цена — не названные consumers и rollback. Угол: decision/evidence matrix.
- Mechanism начинает с вывода, который сильнее evidence; цена — ложная определённость о поведении системы. Угол: риск → evidence → допустимый вывод → fail-closed gate.
- Field начинается с hand-off, передающего вердикт вместо вопроса; цена — исчезновение consumer и rollback boundary. Угол: bounded synthetic hand-off без имитации истории.
- Тон M9: прагматичные короткие утверждения, ownership границ и различение факта, question, stop и вывода. Общего вводного блока нет; одинаковая терминология объяснена через разные задачи.
- Основной текст: 9 229 / 10 115 / 10 190 знаков (practice / mechanism / field). Все три тела в контракте 5 000–15 000 и в целевом диапазоне 9 000–13 000.
Review pass 2 — факты, future boundary и literal execution
- Все fixed cases несут
planDate: 2026-10иsourceCutoff: 2026-07-31; недатированный вход закрывается fail-closed status. - Factory применяет JSON clone и deep freeze. Полный case не даёт approval: только
synthetic-review-hand-offсproductionEffect: not-attempted. - Проверены четыре stop: неизвестный риск, недостаточный evidence, style вместо contract risk и positive conclusion
approve-and-merge. - Literal snippets выполнены через public exports. Получены статусы:
synthetic-review-hand-off,stop-insufficient-evidence,stop-disallowed-positive-conclusion. - В каждой статье есть независимые: механизм, HTML-таблица, оригинальный SVG с точными русскими alt/caption, runnable example, упорядоченные действия, границы и следующий шаг.
Review pass 3 — выпуск, mobile SVG, уникальность
- XML валиден для трёх SVG; safety scan не нашёл
script,foreignObject,javascript:,data:imageили event handlers. Рабочий текст 20–27 px в viewBox 720×500. - Все SVG отрендерены Sharp в 375 px и визуально проверены: заголовок и 4 колонки матрицы читаются, два stop gate не обрезаны, loop сохраняет стрелки и нижний stop. Фигуры несут данные о связи risk/evidence/conclusion, а не иллюстрируют тему декоративно.
- Строгая pairwise проверка исключила source lists, но включила code. Фактический результат каждой из трёх пар:
exactParagraphs160: 0,common12WordFragments: 0.
Команды локальной проверки
Запуск из web/:
node --check scripts/upgrade-2026-10.mjs
node scripts/upgrade-2026-10.mjs --verify-fixture
npm run audit:draft -- scripts/upgrade-2026-10.mjs
node --input-type=module -e "import { createFixedReviewCase, createFixedReviewHandOff, assessFixedDecisionEvidence } from './scripts/upgrade-2026-10.mjs'; const a=createFixedReviewHandOff(createFixedReviewCase('decision-evidence-ready-v1')); const b=assessFixedDecisionEvidence(createFixedReviewCase('missing-consumer-map-v1')); const c=createFixedReviewHandOff(createFixedReviewCase('approval-word-v1')); console.log(a.status, b.status, c.status);"
xmllint --noout public/assets/editorial/2026/code-review-standard-2026-decision-evidence-matrix.svg public/assets/editorial/2026/code-review-standard-2026-risk-escalation-gates.svg public/assets/editorial/2026/code-review-standard-2026-review-handoff-loop.svg
rg -n -i "<(script|foreignObject)\\b|javascript:|data:image|(?:^|[[:space:]])on[a-z]+=" public/assets/editorial/2026/code-review-standard-2026-decision-evidence-matrix.svg public/assets/editorial/2026/code-review-standard-2026-risk-escalation-gates.svg public/assets/editorial/2026/code-review-standard-2026-review-handoff-loop.svg
Disposition
Локальные проверки прошли: syntax; fixture 7/7; editorial audit для всех трёх slug; literal execution; XML; SVG safety; Sharp mobile inspection; strict duplicate scan. Draft ожидает отдельной независимой приёмки. Registry, README, application files, articles JSON, production queue и все Git-действия намеренно не затрагивались.
Независимая приёмка основного редактора — 31.07.2026
Принято только как октябрьский plan/scenario. Месяц и cutoff 2026-07-31 явно присутствуют, а максимальный positive output — synthetic-review-hand-off с productionEffect: not-attempted; review не подменяется approval, merge, release или фактом о CI/production.
Проверены первичные источники: RFC 2119 — BCP 14 от March 1997 и действительно требует осторожности с императивами; RFC 8174 — BCP 14 от May 2017 и уточняет особый смысл только uppercase терминов. NIST SP 800-218 v1.1 подтверждает February 2022 и описывает высокоуровневые практики, интегрируемые в SDLC; исходное неподтверждённое уточнение «final, 3 February» удалено до интеграции. Из документов не выводятся локальные policy, реальный риск или состояние review.
Повторно выполнены syntax, fixture 7/7, draft audit с объёмами 9 229 / 10 115 / 10 190, XML и SVG safety-scan. Public exports возвращают synthetic-review-hand-off, stop-insufficient-evidence, stop-disallowed-positive-conclusion и stop-style-displaces-risk на fixed inputs. PNG-рендеры трёх SVG визуально осмотрены на 375 px: таблица, stop-gates и loop читаются без обрезания. Строгий scan, включающий code и исключающий source lists, дал ноль совпадающих абзацев от 160 символов и ноль общих 12-словных фрагментов во всех трёх парах.
В registry добавлены только три октябрьские ревизии. Пользовательские application-файлы, articles.json, production queue и остальная незакоммиченная работа не вошли в приёмку.