# P88 · 2025-06 · Удобство внутреннего инструмента как наблюдаемая инженерная задача — три прохода ревью ## Граница самостоятельного draft-пакета - Overlay меняет только три June 2025 slug через web/scripts/upgrade-2025-06.mjs. - Все task journeys, роли, stages, timestamps, wait buckets, observations, support signals, owners, changes, follow-up и results — versioned fixed synthetic JavaScript literals в памяти с версией fixed-synthetic-developer-experience-2025-06-v1. - Модуль не читает файлы, не делает запросы, не использует часы, не касается реального инструмента, пользователя, telemetry, support ticket, Git, CI, network, production или внешнего API. Положительный decision означает только валидность учебного контракта; effectClaim остаётся not-established, а productionEffect — false. - Registry, README, очередь, articles.json, app-страницы, production build, staging, commit и push намеренно не входят в этот пакет. ## База исследования и историческая граница Все четыре URL ниже проверены обычным HTTPS GET без TLS bypass и без авторизации: каждый вернул HTTP 200. Меняющиеся источники закреплены immutable commit, датированным стандартом или immutable Internet Archive capture, существовавшим к 30 июня 2025. Для двух GOV.UK руководств не используется текущая страница: source list ведёт на captures 2024-07-05 и 2023-05-12. Источники используются только для узких утверждений о форме event/time record, комбинировании видов evidence, пути задачи и обратной связи. | Источник | Версия / дата | Узкое утверждение в статьях | Явная граница | | --- | --- | --- | --- | | [OpenTelemetry Trace API v1.31.0](https://raw.githubusercontent.com/open-telemetry/opentelemetry-specification/3985e212f0ef5439daf9b10f0ee490e349c69368/specification/trace/api.md) | immutable commit 3985e212f0ef5439daf9b10f0ee490e349c69368, tag v1.31.0, 13.03.2024 | Span описан как операция со start/end timestamps и timestamped events; event имеет name, timestamp и optional attributes. | Спецификация задаёт форму observability record. Она не измеряет удобство, не назначает владельца и не даёт доказательства эффекта. | | [W3C Performance Timeline](https://www.w3.org/TR/2025/CRD-performance-timeline-20250521/) | Candidate Recommendation Draft, 21.05.2025 | PerformanceEntry несёт name, entry type, start time и duration; временная запись имеет явную форму. | Это web performance standard, а не методика исследования внутреннего сервиса и не DX-score. | | [GOV.UK: Measuring the success of your service](https://web.archive.org/web/20240705183252id_/https://www.gov.uk/service-manual/measuring-success/measuring-the-success-of-your-service) | immutable capture 05.07.2024 официальной страницы с public update 06.08.2018 | Для транзакции руководство сочетает performance metrics и user research, предостерегает от одного digital-канала; для journey упоминает completion и время задачи при повторном сравнении. | Методическое руководство не создаёт общий KPI, не определяет схему данных команды и не доказывает эффект учебного изменения. | | [GOV.UK: Set up and manage user support](https://web.archive.org/web/20230512135336id_/https://www.gov.uk/service-manual/helping-people-to-use-your-service/set-up-and-manage-user-support) | immutable capture 12.05.2023 официальной страницы с public update 24.11.2016 | Feedback support служит входом в улучшение; сигналы разумно связывать с группой, способной действовать. | Support signal указывает направление проверки, но не измеряет масштаб, причинность или качество решения. | Историческая оговорка: в текст не добавлены поздние product claims, имена инструментов, современные vendor terms или реальные DX benchmarks. Перед применением в конкретной среде команда должна заново проверить доступы, privacy boundary, допустимые источники, retention и владельцев. ## Проход 1 — факты, историческая граница и техника Проверены все внешние факты против таблицы. OpenTelemetry и W3C используются только как примеры дисциплины event/time contract; GOV.UK — только как основание не сводить путь к одному цифровому каналу и считать support input отдельным источником. Ни один источник не используется для утверждения о реальном человеке, очереди, стоимости, telemetry, causal effect или конкретном внутреннем инструменте. Технический contract жёстко разделяет: 1. ux-observation — сформулированное непонимание declared role. 2. instrumented-event — stage, timestamps, wait bucket и источник записи. 3. support-signal — категория фиксированной карточки и owner, который может продолжить вопрос. 4. candidateChange — hypothesis, target stage, owner, bounded window и stop condition. 5. claimedEffect — строго not-established, пока не существует сопоставимого повторного evidence. Fixture проверяет exact contracts, missing/extra fields, forged event source, forged role, forged result claim, missing wait bucket, sparse array, cyclic value и нарушенный порядок времени. Любая ошибка возвращает closed decision с safe stop; model не выполняет реальное действие. ~~~text node --check scripts/upgrade-2025-06.mjs PASS node scripts/upgrade-2025-06.mjs --verify-fixture PASS fixture: 33/33 assertions ~~~ Ограничение прохода: положительный result доказывает только согласованность fixed in-memory literals. Он не измеряет user experience, cognitive cost, support demand, latency, effect size или безопасность реальной instrumentation. ## Проход 2 — редактура, M8 и усиленный draft audit Первые два абзаца каждой статьи называют конкретную проблему и цену ошибки: очередь ожидания, ручные обходы, потерю контекста, повторную работу и решение на неверном доказательстве. Плотность соответствует уровню М8: текст не обещает «улучшить DX», а отделяет симптом, причину, проверку и действие; owner и safe stop названы до любого вывода об эффекте. Перед финальным audit проведена cross-article проверка только основного текста, без раздела источников: нет одинаковых абзацев длиной от 160 знаков и нет общих 12-словных фрагментов между practice, mechanism и field. Общий scope-блок удалён. Теперь каждая статья имеет собственную границу: practice ограничивает порядок постановки вопроса, mechanism — валидатор контрактов, field — учебный случай и его comparison boundary. | Статья | Основной текст | Редакторская проверка | | --- | ---: | --- | | Practice | 8 415 знаков | Путь одной задачи, пять видов evidence, wait buckets, owner, compact contract и следующий шаг. | | Mechanism | 8 867 знаков | Exact fields, fail-closed evaluator, distinction occurred/observed time, known unknowns и comparison boundary. | | Field | 8 694 знака | Fixed case, карта фактов и unknowns, forged result, bounded follow-up и safe stop. | ~~~text npm run audit:draft -- scripts/upgrade-2025-06.mjs PASS editorial-2025-06-practice-developer-experience: 8415 body chars PASS editorial-2025-06-mechanism-developer-experience: 8867 body chars PASS editorial-2025-06-field-developer-experience: 8694 body chars ~~~ Усиленный audit также подтвердил для каждого текста: 5 000–15 000 знаков, пять смысловых разделов, HTML table с thead, figure с meaningful alt/caption, code example, ordered sequence, минимум две ссылки, стартовую постановку проблемы и цену ошибки в первых двух paragraphs. Текст специально не вводит общий score, реальные цифры, выдуманный инцидент или неподтверждённый causal claim. Ограничение прохода: качество языка и полнота HTML не делают hypothesis истинной. Текст оставляет real research, data governance и comparison design следующему разрешённому этапу. ## Проход 3 — SVG, fixture и выпускная граница | Asset | Sharp render 375 px | Ручная проверка | | --- | --- | --- | | developer-experience-2025-task-journey.svg | 375 × 700 | Все пять карточек, стрелки и safe stop читаемы. В первом render заголовок подходил к правой границе; он сокращён до «Одна задача, пять видов данных», затем render повторён. | | developer-experience-2025-wait-time-histogram.svg | 375 × 620 | Buckets, ось и правило чтения различимы. В первом render длинные title/subtitle уходили вправо; title сокращён, subtitle разбит на две строки, после чего render повторён. | | developer-experience-2025-feedback-loop.svg | 375 × 670 | Observe → Decide → Change → Recheck → Effect evidence и красная safe-stop ветка полностью видимы. Правка не потребовалась. | ~~~text xmllint --noout <3 SVG> PASS SVG safety scan for script, foreignObject, javascript:, data:image and event handlers PASS Sharp 375 px + manual visual review PASS after two narrow-screen typography fixes ~~~ Полная production build, registry update, staging, commit и push не запускались: они запрещены границей самостоятельного P88 draft-пакета. До будущей публикации нужен отдельный интеграционный выпускной проход с подключением overlay к registry и повторной проверкой уже собранных статей. ## Независимый выпускной проход — 31.07.2026 Перед подключением draft был прочитан отдельным редактором целиком. В выпускном проходе найдены и исправлены две границы, которые self-review не должен был скрывать: 1. Две живые GOV.UK ссылки могли измениться после июня 2025. Они заменены в source list и в таблице ревью на immutable Internet Archive captures 2024-07-05 и 2023-05-12; утверждения повторно сверены только с этими снимками. 2. Примеры ссылались на приватные `cloneFixed` и `fixedCases`. В модуль добавлен публичный `createFixedJourneyInput`; каждый показанный import повторно запущен буквально и дал ожидаемый closed result. После этих правок отдельно прочитаны practice, mechanism и field. У них нет одинаковых абзацев от 160 знаков и общих 12-словных фрагментов: practice задаёт порядок исследования, mechanism проверяет fail-closed contract, field ограничивает вывод учебным кейсом. На мобильных 375 px ещё раз просмотрены три SVG; текст и safe-stop ветки читаемы. ~~~text node --check scripts/upgrade-2025-06.mjs PASS node scripts/upgrade-2025-06.mjs --verify-fixture PASS fixture: 33/33 assertions npm run audit:draft -- scripts/upgrade-2025-06.mjs PASS practice: 8415 body chars PASS mechanism: 8867 body chars PASS field: 8694 body chars npm run audit:articles -- <3 June slugs> PASS: each article has 1 table, 1 code example and 2/2/3 figures npm run build PASS: 374 static pages ~~~ Overlay подключён в `editorial-revisions.mjs` между May и July. Реестр после подключения содержит 262 уникальных slug. Выпускной проход не меняет границу статей: fixed literals остаются учебными, а положительный результат не является результатом production, telemetry, исследования человека или claim об эффекте.