Files
progcode/editorial/reviews/2026-10-draft.md
T
huncode 3d879666ea
Build and deploy / deploy (push) Successful in 20s
revise October 2026 code review plan articles
2026-07-31 19:54:32 +03:00

65 lines
9.9 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.
# 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
1. [RFC 2119: Key words for use in RFCs to Indicate Requirement Levels](https://www.rfc-editor.org/rfc/rfc2119), BCP 14, March 1997, DOI `10.17487/RFC2119`. Проверены дата, определение `MUST`, `SHOULD`, `MAY` и ограничение: императивы надо применять бережно там, где они действительно нужны для совместимости или ограничения вредного поведения. Граница: RFC не является policy code review и не создаёт обязанностей этой команды.
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`. Использован только для уточнения контекста прописных терминов. Граница: документ не делает synthetic validator стандартом проекта.
3. [NIST SP 800-218, SSDF Version 1.1](https://doi.org/10.6028/NIST.SP.800-218), 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/`:
```sh
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 и остальная незакоммиченная работа не вошли в приёмку.