revise August 2020 metrics articles
Build and deploy / deploy (push) Successful in 13s

This commit is contained in:
2026-07-31 11:44:13 +03:00
parent 8ae2b93876
commit 8e16858f16
7 changed files with 804 additions and 1 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
# Производство редакционных партий
На 31 июля 2026 года строгий аудит проходит 91 из 358 созданных материалов. Остальные 267 не считаются «почти готовыми»: их нужно заменить, а не косметически удлинить.
На 31 июля 2026 года строгий аудит проходит 94 из 358 созданных материалов. Остальные 264 не считаются «почти готовыми»: их нужно заменить, а не косметически удлинить.
## Одна партия
+152
View File
@@ -0,0 +1,152 @@
# Автономное тройное ревью П30 · август 2020 · «Метрики приложения»
Статус: **принят независимым редактором в выпусковой набор**. В нём ровно три
revision для стабильных slug:
- <code>editorial-2020-08-practice-metrics-basics</code>;
- <code>editorial-2020-08-mechanism-metrics-basics</code>;
- <code>editorial-2020-08-field-metrics-basics</code>.
Созданы только пять разрешённых файлов П30:
- <code>web/scripts/upgrade-2020-08.mjs</code>;
- <code>web/public/assets/editorial/2020/metrics-signal-contract-2020.svg</code>;
- <code>web/public/assets/editorial/2020/metrics-label-boundary-2020.svg</code>;
- <code>web/public/assets/editorial/2020/metrics-diagnosis-2020.svg</code>;
- этот документ.
Module export не задаёт <code>date</code> или <code>author</code>. При будущей
интеграции registry может наложить только редакционные поля на базовые записи
архива. <code>articles.json</code>, registry, стандарт, очередь, package config
и Git данным пакетом не менялись. Команда <code>--print-revisions</code>
печатает только JSON, а <code>--verify-fixture</code> запускает отдельную
детерминированную проверку в памяти.
## Проход 1. Факты и техника — пройдено
| Утверждение | Первичный или официальный источник | Проверенная граница |
| --- | --- | --- |
| Имя метрики описывает одну величину и единицу; для counter используется суффикс <code>_total</code>, duration измеряется в seconds | [Prometheus: Metric and label naming](https://prometheus.io/docs/practices/naming/) | <code>store_http_requests_total</code> отделён от <code>store_http_request_duration_seconds</code>; учебные имена не смешивают запросы, ошибки и время |
| Для online-serving системы полезно считать завершённые запросы, ошибки и latency; errors нужны рядом с числом попыток | [Prometheus: Instrumentation](https://prometheus.io/docs/practices/instrumentation/) | Counter увеличивается после завершения operation; <code>operation</code> и <code>outcome</code> ограничены allowlist |
| Counter накапливает события и при рестарте может сброситься; server-side query над окном не равен ручной разности двух точек | [Prometheus: Instrumentation](https://prometheus.io/docs/practices/instrumentation/), [Prometheus: Querying basics](https://prometheus.io/docs/prometheus/latest/querying/basics/) | PromQL с <code>increase(...[10m])</code> приведён как будущий вопрос к серверу; fixture проверяет только монотонную учебную серию и не моделирует reset или scrape |
| Уникальная комбинация имени и labels создаёт отдельную time series; неограниченные значения раздувают storage | [Prometheus: Metric and label naming](https://prometheus.io/docs/practices/naming/), [Prometheus: Instrumentation](https://prometheus.io/docs/practices/instrumentation/) | Учебная арифметика 3 operations × 2 outcomes и пример с 100 user ID не выданы за RAM-, disk- или workload-замер |
| Counter, gauge, histogram и summary описывают разные формы величины | [Prometheus: Metric types](https://prometheus.io/docs/concepts/metric_types/) | Counter не назван current state; fixture с sum/count не выдаёт p95 или распределение за production telemetry |
Все четыре официальные страницы использованы для сверки смысла names, labels,
types и запросов. Они не представлены как доказательство развернутого в августе
2020 года production-контура. В тексте нет claim о реальном Prometheus server,
exporter, scrape interval, dashboard, alert delivery, нагрузке или
производственном пороге.
### Техническая граница учебной фикстуры
<code>runMetricsFixture()</code> создаёт четыре synthetic event, допускает
ровно <code>catalog</code>, <code>checkout</code>, <code>profile</code> и
<code>success/error</code>, затем формирует локальный exposition-текст. Вторая
часть fixture сравнивает две серии counter:
- <code>0 → 1 → 2</code> за учебное окно даёт delta <code>2</code> и
пересекает упражнение <code>&gt;= 2</code>;
- <code>0 → 1 → 1</code> даёт delta <code>1</code> и его не пересекает.
Эта проверка не подменяет PromQL, target scrape, counter reset, network,
storage, client library или alerting. Её задача уже: зафиксировать, что
изменение labels или числа в учебном контракте не пройдёт незаметно.
Вердикт прохода: **пройден**. Утверждения о Prometheus отделены от учебной
модели, а учебная модель — от запуска на реальной инфраструктуре.
## Проход 2. Редактура, глубина и голос М3 — пройдено
| Ревизия | Симптом и цена в первых двух абзацах | Главный вопрос | Объём основного текста |
| --- | --- | --- | --- |
| Практика | Общий график requests не показывает operation и outcome; цена — поиск не по той границе и разрастание бесполезных линий | Как выбрать один completed-request signal, bounded labels и учебный threshold | **9 182** знаков body |
| Механизм | Уникальный label размножает series и делает запрос неясным; цена — хранение и потеря агрегированного смысла | Где заканчивается полезная dimension и почему request context живёт в журнале | **10 230** знаков body |
| Полевой разбор | Одна линия requests не объясняет деградацию; цена — шумный порог и правка timeout без факта | Как прочитать controlled counter-series, окно и threshold, не выдав их за production-диагноз | **9 480** знаков body |
- Во всех материалах начало устроено по схеме «симптом → цена → ограниченная
учебная граница», затем следует «причина → проверка → действие».
- У каждой revision больше пяти смысловых разделов, есть figure с
самостоятельным <code>alt</code>/<code>figcaption</code>, таблица с
<code>caption</code>/<code>thead</code>, code/query/fixture example,
нумерованный маршрут и четыре официальные ссылки.
- Статьи не используют общую риторику про важность наблюдаемости. Они
фиксируют completed request, counter, seconds, operation/outcome, time
series, окно, порог, log и следующий сценарий.
- Голос соответствует М3 / августу 2020 года. Автор связывает application-code
с наблюдаемым измерением, но не приписывает себе SLO, error budget,
observability platform, реальные production-значения или опыт большого
инцидента.
- Все цифры в графике, таблице cardinality и пороге явно названы учебными.
Нагрузка, допустимая ошибка и стоимость alert не придуманы вместо данных
проекта.
Второй редакторский проход проверил, что count, duration и latency не
смешиваются. Counter не назван current state, а <code>increase()</code> не
выдана за ручную разность snapshots. Pseudocode над client library отмечен как
контракт labels, а не как запущенный exporter.
Вердикт прохода: **пройден**. Тексты укладываются в 5 000–15 000 знаков,
остаются прагматичными и не перескакивают к зрелой платформенной терминологии.
## Проход 3. Визуал, fixture и выпусковой preflight — пройдено в пределах пакета
- <code>metrics-signal-contract-2020.svg</code> ведёт от операционного
вопроса к counter, двум ограниченным labels, учебному окну и действию после
пересечения порога.
- <code>metrics-label-boundary-2020.svg</code> отделяет allowlist
<code>operation/outcome</code> для series от request ID, email и полного URL,
которые остаются в журнале.
- <code>metrics-diagnosis-2020.svg</code> показывает три synthetic snapshots
counter <code>0 → 1 → 2</code>, условие <code>increase(...[10m]) = 2</code>
и следующий диагностический шаг.
- У схем есть <code>title</code>, <code>desc</code>, <code>role="img"</code>,
вертикальные viewBox 720 px, контрастные карточки и текст не мельче 20 px в
исходном SVG. В них нет JavaScript, <code>foreignObject</code>, внешних URL
или raster data URI.
- Отдельный mobile preflight отрендерил все три SVG в PNG шириной 375 px
через Sharp и просмотрел результат. У всех схем крупные заголовки, короткие
строки и вертикальная композиция; clipping, наложение и горизонтальный
overflow внутри SVG не обнаружены. Это статическая проверка visual asset, не
browser-run и не test screen reader.
### Фактически выполненные проверки
Запущены после финальной редакторской правки 31 июля 2026 года:
<pre><code>cd web &amp;&amp; node --check scripts/upgrade-2020-08.mjs
cd web &amp;&amp; npm run audit:draft -- scripts/upgrade-2020-08.mjs
cd web &amp;&amp; node scripts/upgrade-2020-08.mjs --verify-fixture
cd web &amp;&amp; xmllint --noout \
public/assets/editorial/2020/metrics-signal-contract-2020.svg \
public/assets/editorial/2020/metrics-label-boundary-2020.svg \
public/assets/editorial/2020/metrics-diagnosis-2020.svg</code></pre>
| Проверка | Реальный результат |
| --- | --- |
| <code>node --check</code> | PASS, code 0 |
| Import-safe export и draft gate | PASS: **9 182 / 10 230 / 9 480** знаков body; три slug, tables, figures, code, routes, sources и assets найдены |
| In-memory fixture | PASS: bounded labels сохранены, counter error checkout найден, threshold пересекается на 2 и не пересекается на 1 |
| <code>xmllint --noout</code> | PASS, все три SVG — корректный XML |
| Sharp mobile preflight | PASS: три PNG шириной 375 px просмотрены; нет clipping, наложения или horizontal overflow внутри схем |
| Scope/self-review | PASS: в revision нет <code>date</code>/<code>author</code>; созданы только пять файлов П30; чужие незакоммиченные пакеты не редактировались и не индексировались |
## Независимая интеграционная приёмка
Основной редактор 31 июля 2026 года подключил три revision к
<code>web/data/editorial-revisions.mjs</code>, не меняя базовый
<code>articles.json</code>, даты или автора архивных записей. После подключения
в registry стало 85 revision. Отдельно выполнены:
| Проверка после интеграции | Реальный результат |
| --- | --- |
| Строгий audit трёх slug | PASS: 9 182 / 10 230 / 9 480 знаков; у каждой статьи один figure, одна table и два code example |
| Production build | PASS: Next.js собрал 374 статические страницы |
| Независимый mobile visual review | PASS: основной редактор повторно просмотрел все три SVG, отрендеренные Sharp в 375 px; clipping, overlap и overflow не обнаружены |
Ни этот отчёт, ни интеграция не утверждают, что был запущен настоящий
Prometheus, exporter, scrape, browser или assistive technology. Они фиксируют
границы автономного учебного пакета и результат статических проверок.
Выпусковой вердикт: **ACCEPT**. Commit и push выполняются отдельной
публикационной операцией; Git остаётся источником её фактической записи.