This commit is contained in:
@@ -0,0 +1,65 @@
|
||||
# P102 — August 2026: «End-to-end наблюдаемость»
|
||||
|
||||
## Статус и фактическая граница
|
||||
|
||||
Это изолированный draft-пакет. На дату подготовки — **31 июля 2026** — август ещё не наступил. Поэтому все три текста прямо оформлены как план/сценарий на август 2026, а не как field report, внедрение, измерение, публикация или результат production-наблюдаемости. Это обязательное применение риска Р-Ф из очереди.
|
||||
|
||||
Разрешённый положительный результат кода — только `synthetic-observability-plan-hand-off`. Он не выполняет release, deployment, approval, доступ к production, чтение сети, файлов, секретов, браузера, очереди или telemetry backend. Во всех accepted result присутствует `productionEffect: not-attempted`.
|
||||
|
||||
## Исследование источников до cutoff
|
||||
|
||||
1. [OpenTelemetry Specification, immutable commit `c6520a73287040ca16499cba62cea1b3508dc4da`](https://github.com/open-telemetry/opentelemetry-specification/tree/c6520a73287040ca16499cba62cea1b3508dc4da), Release 1.29.0, 11 January 2024. Локально проверены pinned `specification/trace/api.md`: API содержит `SpanContext`, `TraceId` и определение parent context; pinned `specification/metrics/data-model.md` описывает удаление attributes и re-aggregation с меньшим набором attributes. Граница вывода: спецификация даёт терминологию и варианты обработки данных, но не подтверждает наличие SDK, collector, pipeline, telemetry или safety конкретного продукта.
|
||||
2. [W3C Trace Context, dated Recommendation 23 November 2021](https://www.w3.org/TR/2021/REC-trace-context-1-20211123/). Локально проверены дата документа, `traceparent`, `trace-id`, `parent-id`, требование переносить `traceparent`/`tracestate`, а также разделы privacy/security considerations. Граница вывода: документ задаёт переносимый HTTP context; он не доказывает прохождение context через конкретные UI, API, queue или worker и не даёт право передавать персональные данные.
|
||||
|
||||
Ни один source claim не зависит от факта после 2026-07-31. Исторические факты отделены от моей модели fixed literals.
|
||||
|
||||
## Review pass 1 — проблема, плотность, голос, независимость
|
||||
|
||||
- **Practice** начинает с утраты correlation на API → worker и цены в виде невозможности различить очередь, API и worker. Угол статьи — карта проектирования: один путь, разные trace/log/metric роли, ownership schema и запретные поля.
|
||||
- **Mechanism** начинает с ложной причинной истории из совпадающих имён сигналов. Угол — пределы вывода: propagation, error classes, time boundary, cardinality и sampling как независимые решения.
|
||||
- **Field** начинается с небезопасного hand-off без data boundary. Угол — будущий, безопасный сценарий передачи evidence/retention-вопроса; это не production report.
|
||||
- Общие формулировки убраны из открывающих абзацев. Тон M9: короткие утверждения, named boundaries, stop вместо уверенной риторики, без benchmark, incident или claim о внедрении.
|
||||
- Основной текст: 10 029 / 9 775 / 9 553 знака. Каждая статья в диапазоне 5 000–15 000 и в целевом M9 диапазоне 9 000–13 000.
|
||||
|
||||
## Review pass 2 — факты, Р-Ф и literal execution
|
||||
|
||||
- В `web/scripts/upgrade-2026-08.mjs` все данные — named fixed synthetic literals; factory применяет JSON clone и deep freeze.
|
||||
- Literal snippets выполнены через public exports. Получены именно заявленные статусы: `synthetic-observability-plan-hand-off`, `stop-broken-correlation-context`, `stop-forbidden-signal-field`.
|
||||
- Fixture: 6/6. Он проверяет hand-off без production effect, три signal entries, fail-closed отсутствие worker context, запрет `email` и disallowed positive result.
|
||||
- Code не использует часы, сеть, файлы, env, браузер, SDK, queue, collector или secrets. В источниках и тексте нет утверждений о факте августа.
|
||||
- Три статьи содержат отдельную доступную HTML-таблицу, SVG с русским alt/caption, literal executable example, ordered actions, limitations и следующий шаг.
|
||||
|
||||
## Review pass 3 — публикационное качество, mobile SVG, уникальность
|
||||
|
||||
- XML валиден для трёх SVG; safety surface scan не нашёл `script`, `foreignObject`, `javascript:`, `data:image` или event handlers.
|
||||
- Каждый SVG отрендерен Sharp в 375 px и визуально проверен. После первой мобильной проверки в графике cardinality сокращён обрезавшийся заголовок, а в investigation loop сокращена нижняя подпись. Итог: текст читается, стрелки и подписи не обрезаны.
|
||||
- Figures не декоративны: signal map фиксирует ownership по границе; tradeoff разъединяет sampling и cardinality; loop показывает допустимый hand-off и stop.
|
||||
- Строгая pairwise проверка исключает source lists и включает code: во всех трёх парах `exactParagraphs160: 0`, `common12WordFragments: 0`.
|
||||
|
||||
## Команды локальной проверки
|
||||
|
||||
Запуск из `web/`:
|
||||
|
||||
```sh
|
||||
node --check scripts/upgrade-2026-08.mjs
|
||||
node scripts/upgrade-2026-08.mjs --verify-fixture
|
||||
npm run audit:draft -- scripts/upgrade-2026-08.mjs
|
||||
node --input-type=module -e "import { createFixedObservabilityPlan, reviewFixedObservabilityHandOff, reviewFixedSignalBoundary } from './scripts/upgrade-2026-08.mjs'; const a=reviewFixedObservabilityHandOff(createFixedObservabilityPlan('ui-api-worker-plan-v1')); const b=reviewFixedSignalBoundary(createFixedObservabilityPlan('missing-worker-context-v1')); const c=reviewFixedObservabilityHandOff(createFixedObservabilityPlan('personal-field-v1')); console.log(a.status, b.status, c.status);"
|
||||
xmllint --noout public/assets/editorial/2026/end-to-end-observability-2026-signal-boundary-map.svg public/assets/editorial/2026/end-to-end-observability-2026-cardinality-sampling-tradeoff.svg public/assets/editorial/2026/end-to-end-observability-2026-investigation-evidence-loop.svg
|
||||
```
|
||||
|
||||
Результат: syntax pass; fixture `6/6`; audit pass для всех трёх статей; literal statuses совпадают с комментариями; SVG XML pass.
|
||||
|
||||
## Disposition
|
||||
|
||||
Draft готов к отдельной независимой приёмке. Registry, README, application files, articles JSON, production queue, staging, commit, push и любые Git-команды намеренно не выполнялись.
|
||||
|
||||
## Независимая приёмка основного редактора — 31.07.2026
|
||||
|
||||
Принято как **плановая августовская партия**, не как описание совершившейся работы. Во всех трёх текстах сохранены явные `2026-08` и cutoff `2026-07-31`; единственный положительный результат — `synthetic-observability-plan-hand-off` c `productionEffect: not-attempted`. Поэтому публикация не создаёт легенду о production-наблюдаемости в ещё не наступившем месяце.
|
||||
|
||||
Повторно проверены первоисточники в их зафиксированных версиях: W3C Recommendation от 23.11.2021 задаёт `traceparent`, `trace-id`, `parent-id` и разделы privacy/security; pinned OpenTelemetry source задаёт `SpanContext`/`TraceId` и допускает re-aggregation метрик при меньшем наборе attributes. Из них сделаны только словарные и модельные выводы — не вывод о наличии pipeline, SDK, collector, telemetry backend или доступа к данным конкретного продукта.
|
||||
|
||||
Три SVG прошли XML и safety-scan; их PNG-рендеры осмотрены на ширине 375 px: подписи, стрелки и границы читаемы, обрезания нет. Повторные локальные проверки: syntax, fixture `6/6`, draft audit и audit статей; literal checks возвращают `synthetic-observability-plan-hand-off`, `stop-broken-correlation-context`, `stop-forbidden-signal-field` и `stop-disallowed-positive-result` на соответствующих fixed inputs. Строгий cross-article scan, включая code и исключая source lists, дал ноль совпадающих абзацев от 160 символов и ноль общих 12-словных фрагментов во всех трёх парах.
|
||||
|
||||
В registry добавлены только три ревизии августа; пользовательские application-файлы, `articles.json`, production queue и остальная незакоммиченная работа в приёмку не включены.
|
||||
Reference in New Issue
Block a user