Files
progcode/editorial/reviews/2027-07-draft.md
T
huncode 88bb775c1f
Build and deploy / deploy (push) Successful in 15s
revise July 2027 reliability capstone articles
2026-07-31 20:47:38 +03:00

103 lines
13 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.
# 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.mjs`
- `editorial/reviews/2027-07-draft.md`
- `web/public/assets/editorial/2027/reliability-capstone-2027-fault-tree-contract.svg`
- `web/public/assets/editorial/2027/reliability-capstone-2027-recovery-evidence-matrix.svg`
- `web/public/assets/editorial/2027/reliability-capstone-2027-response-handoff-loop.svg`
Git не использовался. Registry, README, queue, `articles.json`, app и чужие пакеты не изменялись.
## Исследование и temporal boundary
Проверены три официальных источника, существующих до cutoff. RFC являются неизменяемыми опубликованными документами; NIST закреплён датированной редакцией, а не текущей mutable-страницей документации.
1. [RFC 9110 — HTTP Semantics](https://www.rfc-editor.org/rfc/rfc9110.html), IETF Standards Track, June 2022, RFC 9110 / STD 97. Поддерживает различение safe methods, idempotency и ограниченных условий автоматического повтора после communication failure. Не доказывает метод, запрос, бизнес-действие, dependency, retry или outcome P113.
2. [NIST SP 800-160 Volume 2 Revision 1 — Developing Cyber-Resilient Systems](https://csrc.nist.gov/pubs/sp/800/160/v2/r1/final), December 2021. Поддерживает системную рамку устойчивости: противостояние, восстановление и адаптация к неблагоприятным условиям. Не является incident record, recovery plan, SLO/SLI, нагрузочным результатом или доказательством готовности неизвестной системы.
3. [RFC 9000 — QUIC: A UDP-Based Multiplexed and Secure Transport](https://www.rfc-editor.org/rfc/rfc9000.html), 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/`:
```sh
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`, fixture `10/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 не включены.