10 KiB
P106 — December 2026: «Инженерный кейс от проблемы до результата»
Статус и временная граница
Редакторская дата: 31 июля 2026. Декабрь ещё не наступил. Все три статьи прямо обозначены как план/сценарий на 2026-12 с source cutoff 2026-07-31. Это не отчёты о проектном кейсе, ADR, benchmark, метрике, тесте, инциденте, change, rollout или результате: ни одно из таких событий не утверждается как произошедшее.
Модель работает только с named fixed synthetic case и fixed in-memory literals. Factory использует JSON clone и deep freeze; evaluator fail-closed. Единственный положительный output — synthetic-plan-hand-off с productionEffect: not-attempted. В коде нет сетевых, браузерных, файловых, environment, clock, secret, telemetry или external-tool API, а также нет действия над production.
Источники и boundary
- NIST SP 800-30 Rev. 1: Guide for Conducting Risk Assessments, Revision 1, September 2012, DOI
10.6028/NIST.SP.800-30r1. Первичный pinned источник терминов риска и неопределённости. Не подтверждает case, ADR, benchmark, metric, test, incident, change, rollout или результат P106. - RFC 2119, BCP 14, March 1997, DOI
10.17487/RFC2119. Первичный pinned источник модальности требований. Не превращает scenario в принятое решение или доказательство. - RFC 8174, BCP 14, May 2017, DOI
10.17487/RFC8174. Первичный pinned источник уточнения BCP 14. Не подтверждает future outcome или производственный эффект.
Все источники опубликованы до cutoff. Они отделены от собственной synthetic model P106: named case, options, rejected option, причинный ledger, статусы, deep freeze и safe hand-off — редакционные конструкции данного будущего сценария.
Review pass 1 — проблема, тон, плотность, неповторяемость
- Practice открывается опасностью ретроспективно подогнать контекст под итог; цена — ложное основание для следующего действия. Угол: структура
контекст → варианты → решение → evidence → residual risk. - Mechanism открывается ложной причинной связью между изменением и желаемым исходом; цена — proof сильнее входов. Угол: причинность, provenance и контрфакты.
- Field открывается передачей фразы о собранных доказательствах без доказательств; цена — поиск несуществующих артефактов и ложная операционная память. Угол: synthetic evidence hand-off.
- Тон M9: краткая русская техническая речь, конкретные boundary и stop; нет рекламного кейса, обещания эффекта или «успеха» проекта. В первых двух абзацах каждой статьи есть проблема и цена.
- Строгая pairwise uniqueness исключила source lists, но включила code. Для practice/mechanism, practice/field и mechanism/field финальный scan дал:
exactParagraphs160: 0,common12WordFragments: 0.
Review pass 2 — source cutoff, факты, literal safety
- Для всех known literals обязательны
planDate: 2026-12иsourceCutoff: 2026-07-31;undated-scenario-v1возвращаетstop-undated-scenario-or-cutoff. - Factory возвращает JSON clone и recursive deep freeze. Evaluator принимает только byte-identical named fixed cases; произвольный input закрывается
stop-unknown-fixed-input. - Опасные cases покрыты явно: пропущенный rejected option →
stop-missing-rejected-option; claim сильнее scenario-only input →stop-evidence-stronger-than-input; попыткаcase-complete→stop-disallowed-positive-result. - Разрешённый literal оставляет evidence
scenario-only,not-collectedи возвращает толькоsynthetic-plan-hand-offсproductionEffect: not-attempted. - Очередь будущих артефактов не выдумана: нет ссылок на ADR, benchmark, metrics, tests, incidents, changes или rollouts. Официальные источники ниже применены только как терминология и явно отделены от модели.
Review pass 3 — XML/safety, Sharp 375px и команды
- У каждого SVG есть русские
title/desc, русские article alt/caption и data-bearing схема. Макет 720×500, шрифт 14–24 px, не содержит внешних ссылок,script,foreignObject,javascript:,data:imageили event handlers. - Sharp render на 375 px осмотрен визуально: causal timeline сохраняет пять смысловых полей и три stop; ledger сохраняет соотношение input/claim и контрфактический блок; hand-off loop сохраняет зелёную передачу и красный возврат. Обрезания текста не обнаружены.
- Команды ниже выполнены из
web/. Экспорт literals подтвердил все пять status, audit проверил три точных slug, XML и safety scan прошли для трёх SVG.
node --check scripts/upgrade-2026-12.mjs
node scripts/upgrade-2026-12.mjs --verify-fixture
npm run audit:draft -- scripts/upgrade-2026-12.mjs
node --input-type=module -e "import { createFixedPortfolioCase, assessFixedPortfolioCase } from './scripts/upgrade-2026-12.mjs'; for (const id of ['portfolio-case-plan-v1','undated-scenario-v1','missing-rejected-option-v1','evidence-stronger-than-input-v1','disallowed-positive-result-v1']) console.log(id, assessFixedPortfolioCase(createFixedPortfolioCase(id)).status);"
xmllint --noout public/assets/editorial/2026/portfolio-case-2026-causal-timeline.svg public/assets/editorial/2026/portfolio-case-2026-tradeoff-ledger.svg public/assets/editorial/2026/portfolio-case-2026-evidence-boundary-loop.svg
rg -n -i "<(script|foreignObject)\\b|javascript:|data:image|(?:^|[[:space:]])on[a-z]+=" public/assets/editorial/2026/portfolio-case-2026-causal-timeline.svg public/assets/editorial/2026/portfolio-case-2026-tradeoff-ledger.svg public/assets/editorial/2026/portfolio-case-2026-evidence-boundary-loop.svg
node --input-type=module -e "import sharp from 'sharp'; for (const n of ['portfolio-case-2026-causal-timeline','portfolio-case-2026-tradeoff-ledger','portfolio-case-2026-evidence-boundary-loop']) await sharp('public/assets/editorial/2026/'+n+'.svg').resize({width:375}).png().toFile('/private/tmp/'+n+'-375.png');"
Disposition
P106 фиксирует три выполненных review-прохода: проблема/тон/плотность/неповторяемость; source cutoff/факты/literal safety; XML/safety + Sharp visual review 375px + команды. node --check прошёл; fixture — 8/8; draft audit — 10 547 / 10 518 / 11 022 знаков; public literal exports, XML и SVG safety прошли; строгая pairwise uniqueness дала нули во всех трёх парах; три 375px PNG осмотрены вручную. Этот draft не меняет registry, README, articles.json, app, production queue, чужие P102–P105 файлы или Git-state.
Независимая приёмка основного редактора — 31.07.2026
Принято только как декабрьский план/сценарий. Все три текста сохраняют 2026-12 и cutoff 2026-07-31; у кейса нет заявленного ADR, метрики, теста, incident, change, rollout или результата. Единственный positive branch — synthetic-plan-hand-off c productionEffect: not-attempted.
NIST SP 800-30 Rev. 1, RFC 2119 и RFC 8174 повторно сверены как устойчивые первичные источники до cutoff. NIST поддерживает только язык риска, ограничений методик и интерпретации; RFC — язык требований. Ни один источник не используется как доказательство причинности, проектной истории или будущего артефакта P106. Options, rejected option, ledger и statuses явно остаются synthetic model.
Повторно выполнены syntax, fixture 8/8, draft audit с объёмами 10 547 / 10 518 / 11 022, XML и SVG safety-scan. Literal checks возвращают synthetic-plan-hand-off, stop-undated-scenario-or-cutoff, stop-missing-rejected-option, stop-evidence-stronger-than-input и stop-disallowed-positive-result. Три SVG отрендерены Sharp на 375 px и визуально приняты: текст, стрелки и stop labels не обрезаются. Строгий scan внутри тройки дал нули; дополнительный scan 15 статей августа–декабря также не нашёл совпадающих абзацев или общих 12-словных фрагментов.
В registry добавлены только три декабрьские ревизии. Пользовательские application-файлы, articles.json, production queue и остальная незакоммиченная работа не включены в приёмку.