revise October 2023 slo articles
Build and deploy / deploy (push) Successful in 14s

This commit is contained in:
2026-07-31 15:16:33 +03:00
parent 2c860caddd
commit 6da24704e1
7 changed files with 670 additions and 1 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# Производство редакционных партий
На 31 июля 2026 года строгий аудит проходит 205 из 358 созданных материалов. Остальные 153 не считаются «почти готовыми»: их нужно заменить, а не косметически удлинить.
На 31 июля 2026 года строгий аудит проходит 208 из 358 созданных материалов. Остальные 150 не считаются «почти готовыми»: их нужно заменить, а не косметически удлинить.
## Одна партия
+54
View File
@@ -0,0 +1,54 @@
# P68 · 2023-10 · SLI/SLO и error budget без декоративных метрик — три прохода саморевью
## Рамка sidecar-партии
- Slug: `editorial-2023-10-practice-sli-slo`, `editorial-2023-10-mechanism-sli-slo`, `editorial-2023-10-field-sli-slo`.
- Голос: М6, октябрь 2023. Системный практик начинает с наблюдаемого сбоя и цены, затем проходит путь «симптом → причина → проверка → действие», называет owner, границу данных и обратимость. Текст не выдаёт учебную модель за собственный production-опыт.
- Созданы ровно пять sidecar-файлов: этот review, один import-safe script и три локальные SVG. `articles.json`, registry, README, очередь, Git и чужие файлы не менялись; пакет не интегрирован.
- Fixture работает только с фиксированными synthetic JS-объектами в памяти. Он не читает проект, файлы, переменные окружения, часы, monitoring, CI, сеть, HTTP, SDK или production-конфигурацию. Его PASS не заявляет реальный SLI, availability, incident, burn rate, traffic, alert, rollout или release authority.
## Проход 1 — факты, источник и техника
- Источники перепроверены 31.07.2026; все существовали до конца октября 2023: [Google SRE Book, Service Level Objectives, copyright 2017](https://sre.google/sre-book/service-level-objectives/), [Google SRE Workbook, Example SLO Document, 19.02.2018](https://sre.google/workbook/slo-document/), [Example Error Budget Policy, 19.02.2018](https://sre.google/workbook/error-budget-policy/) и [Alerting on SLOs, copyright 2018](https://sre.google/workbook/alerting-on-slos/). Первые два дают определения SLI/SLO, scope и пример четырёхнедельного rolling window; policy описывает баланс надёжности и изменения, а не наказание; alerting разбирает отдельную модель burn rate и проблему low traffic.
- В статьях эти материалы ограничены их фактическими выводами. Четырёхнедельное окно названо примером Google, а не универсальной нормой. Формула fixture не названа burn rate. Policy не превращена в автоматический release gate. Google-примеры не используются как доказательство поведения неизвестного сервиса.
- `createSyntheticSloContract()` принимает только полный `synthetic-slo-contract-input-v1` с фиксированными synthetic scope, 28-day window, good/eligible rules, target и owner. Отрицательные ветки отвергают неотмеченный вход, лишнее network-like поле без его вызова, пропущенное обязательное поле, другую область, другое окно, размытый индикатор, target 100, нулевой знаменатель и impossible counts.
- `runSloFixture()` вычисляет только учебные `syntheticGoodCount`, `syntheticEligibleCount`, `syntheticBadCount`, допустимые synthetic bad и synthetic остаток. Он явно возвращает `observed=not-observed`, `realSli=not-claimed`, `realIncident=not-claimed`, `realBurnRate=not-calculated`, `realAvailability=not-claimed`, `releaseAuthority=not-granted`.
- На техническом проходе найден и исправлен дефект отрицательной ветки rollback: она ошибочно пробовала accepted exhausted sample. Теперь ей передаётся отклонённый `wrongScope`, а assertion требует `restored=false`. Это проверяет границу модели, а не создаёт ложный operational rollback.
- `rollbackSyntheticSloContract()` возвращает только snapshot договора и явно сообщает: monitoring/CI не затронуты, сеть не использовалась, production effect не предпринимался. Он не удаляет данные и не управляет release.
## Проход 2 — редактура, полнота и голос
- Три статьи различаются вопросом. Practice собирает SLI-contract от пользовательского пути; mechanism раскрывает арифметику окна, знаменателя и policy; field строит петлю решения с owner и evidence. Они не пересказывают один текст разными заголовками.
- В первых двух абзацах каждого текста названы проблема и цена: декоративный процент ведёт к неверному релизному решению, неполная формула — к ложной остановке или рисковому rollout, а красный график без owner — к скрытым полномочиям и плохой диагностике.
- В каждой ревизии есть доступная таблица, figure с содержательными `alt` и подписью, исполнимый synthetic fixture, явные ограничения, rollback, финальный следующий шаг и упорядоченный маршрут «симптом → причина → проверка → действие».
- `audit:draft` зафиксировал объём основного текста, включая короткий executable пример и без источников: practice — 9 606, mechanism — 9 892, field — 9 770 знаков. Все три текста находятся в заданной цели 8–10 тыс. и обязательном диапазоне 5–15 тыс. знаков.
- Речь краткая и предметная: термины `SLI`, `SLO`, `eligible`, `good`, `window`, `policy`, `owner` и `proxy` привязаны к контракту или решению. Нет обобщений про «современный мир», фантазий о production-инциденте, обещаний «универсальной доступности» или подмены технической проверки ярким заголовком.
## Проход 3 — визуал, безопасность и выпуск
- SVG разделяют понятия: договор SLI, окно с synthetic арифметикой и петля ручного решения. В них нет `script`, `foreignObject`, внешних URL, `data:image`, event-handler-атрибутов или пользовательского ввода.
- Sharp-render всех трёх SVG на ширине 375 px открыт вручную. После первого рендера были перенесены две нижние подписи и сокращён заголовок петли решения, чтобы текст не обрезался справа. Финальные 375 px варианты читаемы: блоки, стрелки, числа, ограничения и ручная граница release decision не перекрываются.
- Выполнены проверки: `node --check web/scripts/upgrade-2023-10.mjs` — PASS; `node web/scripts/upgrade-2023-10.mjs --verify-fixture` — PASS 22/22 после независимого model review; `cd web && npm run audit:draft -- scripts/upgrade-2023-10.mjs` — PASS для трёх slug; import-safe export без `date`/`author` — PASS; `xmllint --noout` — PASS; SVG safety scan — чистый результат; Sharp 375 px — PASS.
- Пакет не коммитился, не пушился, не интегрировался в registry и не запускал production build: эти действия намеренно оставлены за пределами sidecar и пользовательского ограничения ровно пяти файлов.
## Интеграционное ревью главного агента
Отдельно сверены первичные страницы Google SRE: SLO — target/range измеряемого
SLI; error budget связывается с решением о риске; Example SLO Document даёт
четырёхнедельное rolling window как пример; Example Error Budget Policy не
называет остановку изменений наказанием; Alerting on SLOs разбирает burn rate
и особенно риск ложной чувствительности low-traffic систем. В статьях эти
утверждения сохранены как исторический контекст, не как политика проекта.
Model review закрыл форму synthetic-входа. Раньше helper запрещал лишние keys,
но не требовал полный набор собственных полей. Теперь top-level и все nested
records обязаны быть plain records с точным expected shape; добавлена
отрицательная ветка без `sample`. Fixture после исправления проходит `22/22`
assertions и по-прежнему не получает полномочие на release.
На визуальном проходе в SLI-схеме мобильный рендер обрезал последнюю часть
подписи исключения. Подпись разбита на две строки; повторный Sharp-render 375
px читаем. Все SVG прошли XML и safety scan. Повторный draft audit: 9 640 /
9 892 / 9 770 знаков; строгий archive audit — PASS для трёх slug; registry
содержит 199 уникальных ревизий. `npm run build` успешно сгенерировал 374
статические страницы.