13 KiB
P113 — июль 2027: «Большой разбор надёжности»
Статус и граница пакета
Редакторская дата: 2026-07-31. Номер: 2027-07. Source cutoff: 2026-07-31. Это будущий editorial plan/scenario, не описание существующей эксплуатации.
В тексте и fixed literal не заявлены actual incident, runbook, failure-injection, SLO/SLI value, telemetry, deployment, recovery, rollout, owner, production outcome или winner. Не использованы fictional incident materials. Единственный accepted positive output evaluator — synthetic-plan-hand-off с productionEffect: not-attempted.
Разрешённый write scope соблюдён. Подготовлены только:
web/scripts/upgrade-2027-07.mjseditorial/reviews/2027-07-draft.mdweb/public/assets/editorial/2027/reliability-capstone-2027-fault-tree-contract.svgweb/public/assets/editorial/2027/reliability-capstone-2027-recovery-evidence-matrix.svgweb/public/assets/editorial/2027/reliability-capstone-2027-response-handoff-loop.svg
Git не использовался. Registry, README, queue, articles.json, app и чужие пакеты не изменялись.
Исследование и temporal boundary
Проверены три официальных источника, существующих до cutoff. RFC являются неизменяемыми опубликованными документами; NIST закреплён датированной редакцией, а не текущей mutable-страницей документации.
- RFC 9110 — HTTP Semantics, IETF Standards Track, June 2022, RFC 9110 / STD 97. Поддерживает различение safe methods, idempotency и ограниченных условий автоматического повтора после communication failure. Не доказывает метод, запрос, бизнес-действие, dependency, retry или outcome P113.
- NIST SP 800-160 Volume 2 Revision 1 — Developing Cyber-Resilient Systems, December 2021. Поддерживает системную рамку устойчивости: противостояние, восстановление и адаптация к неблагоприятным условиям. Не является incident record, recovery plan, SLO/SLI, нагрузочным результатом или доказательством готовности неизвестной системы.
- RFC 9000 — QUIC: A UDP-Based Multiplexed and Secure Transport, IETF Standards Track, May 2021. Поддерживает отделение транспортного состояния от прикладной семантики. Не подтверждает QUIC, traffic, connection, failure, recovery или production state P113.
Источник RFC 9110 проверен по официальной карточке RFC Editor: June 2022 и Standards Track. Источник NIST проверен по официальной CSRC-карточке: SP 800-160 Vol. 2 Rev. 1, date published December 2021. Ни один источник не используется как substitute for evidence о будущем сценарии.
Review 1 — факты, временная граница и голос
- Practice самостоятельно ставит вопрос о контракте отказного сценария и цене неверного retry. Первые два абзаца не начинают с общей важности и не обещают существующую policy. Контракт оставляет retry, replica и recovery как explicit-not-selected.
- Mechanism отдельно разбирает fault tree, восстановление, нагрузку и falsifiability. Схема является картой вопросов и условий опровержения; она не выдана за дерево фактического отказа.
- Field отдельно разбирает hand-off без легенды об actual incident, SLO или owner. Передаётся минимальная форма с visible unknown states, а не операция или поручение.
- Во всех трёх статьях первые два абзаца содержат собственную проблему и цену ошибки. Стиль соответствует траектории 2025–2027: короткая прагматичная русская техническая речь наставника, варианты и цена решения вместо обещания универсального результата.
- Exact body lengths без заголовка, метаданных и section sources: practice — 9 394, mechanism — 9 874, field — 9 814 знаков. Все находятся в требуемом диапазоне 5 000–15 000 и целевой зоне 9 000–13 000.
Review 2 — runnable literal, safety и fail-closed
FIXED_RELIABILITY_CASES — named fixed in-memory literals. Factory делает JSON clone и recursive deep freeze, включая nested scenario и evidence. Evaluator сравнивает вход с известной формой и не читает file, network, environment, clock, secret, telemetry, system или data; он не выполняет работу с внешним миром.
reliability-contract-hand-off-v1— единственный accepted case, возвращаетsynthetic-plan-hand-offиproductionEffect: not-attempted.missing-temporal-boundary-v1—stop-temporal-boundary-required.hidden-evidence-or-configuration-v1—stop-hidden-evidence-or-configuration.implicit-retry-v1—stop-implicit-retry.implicit-replica-or-recovery-v1—stop-implicit-replica-or-recovery.claimed-evidence-v1—stop-hidden-evidence-or-configuration.claimed-operational-result-v1—stop-disallowed-operational-result.- Произвольный object —
stop-unknown-fixed-input.
Runnable examples используют три различные чистые функции: inspectFailureContractLiteral, inspectFaultTreeLiteral и inspectHandoffLiteral. Они выводят только результат операций над literal; не импортируют сетевые, файловые или системные API. В literal нет implicit retry, replica или recovery, а hidden evidence/configuration не имеет default path.
Review 3 — SVG, accessibility, safety и строгая уникальность
- Каждый SVG содержит русские
titleиdesc; каждая статья содержит собственные русскийaltиfigcaption. xmllint --nooutпрошёл для всех трёх SVG. Safety scan не нашёлscript,foreignObject,javascript:,data:imageили event handler.- Sharp создал три PNG шириной 375 px:
375x225для каждой схемы. Ручной visual inspection выполнен по PNG: у contract diagram читаются четыре карточки и две stop-границы; у matrix сохраняются заголовки, пять строк и нижний запрет вывода; у hand-off loop различимы три проверки, stop path и единственный зелёный выход. Обрезания и внешние изображения не обнаружены. - Strict duplicate scan исключал section
Проверяемые источники, но включал<p>и<pre>, поэтому runnable code участвовал в сравнении. После готовности P112 скан повторён по фактическим revisions P102–P113: все 36 статей и 630 попарных сравнений. Результат:common12WordFragments=0,hits=0.
Фактически выполненные проверки
Команды запускались из web/:
node --check scripts/upgrade-2027-07.mjs
node scripts/upgrade-2027-07.mjs --verify-fixture
npm run audit:draft -- scripts/upgrade-2027-07.mjs
node --input-type=module -e "import { createFixedReliabilityCase, assessFixedReliabilityPlan } from './scripts/upgrade-2027-07.mjs'; const ids=['reliability-contract-hand-off-v1','missing-temporal-boundary-v1','hidden-evidence-or-configuration-v1','implicit-retry-v1','implicit-replica-or-recovery-v1','claimed-evidence-v1','claimed-operational-result-v1']; for (const id of ids) console.log(id, assessFixedReliabilityPlan(createFixedReliabilityCase(id)).status); const sample=createFixedReliabilityCase(); console.log(Object.isFrozen(sample), Object.isFrozen(sample.scenario), Object.isFrozen(sample.evidence)); console.log(assessFixedReliabilityPlan({id:'other'}).status);"
xmllint --noout public/assets/editorial/2027/reliability-capstone-2027-fault-tree-contract.svg public/assets/editorial/2027/reliability-capstone-2027-recovery-evidence-matrix.svg public/assets/editorial/2027/reliability-capstone-2027-response-handoff-loop.svg
! rg -n -i '<(script|foreignObject)\\b|javascript:|data:image|(?:^|[[:space:]])on[a-z]+=' public/assets/editorial/2027/reliability-capstone-2027-fault-tree-contract.svg public/assets/editorial/2027/reliability-capstone-2027-recovery-evidence-matrix.svg public/assets/editorial/2027/reliability-capstone-2027-response-handoff-loop.svg
node --input-type=module -e "import sharp from 'sharp'; const names=['reliability-capstone-2027-fault-tree-contract','reliability-capstone-2027-recovery-evidence-matrix','reliability-capstone-2027-response-handoff-loop']; for (const name of names) { const out='/private/tmp/'+name+'-375.png'; const info=await sharp('public/assets/editorial/2027/'+name+'.svg').resize({width:375}).png().toFile(out); console.log(out, info.width+'x'+info.height); }"
Результаты фактического запуска:
- Syntax: PASS, exit 0.
- Fixture: PASS
10/10— семь literal checks и три article checks. - Draft audit: PASS для всех exact slugs и указанных body lengths.
- Public literal checks: accepted case, шесть named negative cases, deep freeze и unknown input — PASS; accepted result сообщает
not-attempted. - XML: PASS. SVG safety scan: PASS, forbidden content отсутствует.
- Sharp + manual 375px inspection: PASS для трёх изображений.
- Strict duplicate scan после независимой приёмки: PASS,
articles=36,comparisons=630,hits=0.
npm run audit:draft вывел существующие предупреждения npm о неизвестных user config store-dir, cache-dir и public-hoist-pattern; сам audit прошёл, предупреждения не связаны с P113.
Независимая приёмка — 2026-07-31
Проход 1 — источники, постановка и M10-голос
- RFC 9110, RFC 9000 и датированная NIST SP 800-160 Vol. 2 Rev. 1 проверены как первичные материалы до cutoff. Их роль ограничена словарём HTTP semantics, transport state и cyber resilience; ни один не превращён в факт об incident, retry, recovery, SLO или readiness неизвестной системы.
- Три текста удерживают отдельные вопросы: contract отказного сценария, границы fault tree и evidence hand-off. В первых двух абзацах каждого есть самостоятельная цена неверного решения, а future plan 2027-07 не выдан за эксплуатационную историю.
Проход 2 — literal safety и автоматический аудит
node --check, fixture10/10, deep-freeze/unknown-input check иnpm run audit:draft -- scripts/upgrade-2027-07.mjsпрошли. Длины body: 9 394, 9 874 и 9 814 знаков.- Только
reliability-contract-hand-off-v1допускается какsynthetic-plan-hand-off; шесть named counterexamples останавливаются fail-closed. Accepted output сохраняетproductionEffect: not-attempted. xmllintпрошёл без output; safety scan не нашёл executable или active content.
Проход 3 — визуал, сквозной scan и выпуск
- Три SVG отрендерены и просмотрены в 375 px: fault contract, evidence matrix и hand-off loop читаются без обрезания; alt/caption в статьях описывают смысл, а не декоративное изображение.
- После публикации P112 scan пересчитан по P102–P113: 36 статей, 630 сравнений, sources excluded/code included,
collisions: []. - В реестр добавлены только три июльские revisions; пользовательские app/data files не включены.