# P94 · Декабрь 2025 · Синтез инженерного года Пакет намеренно остаётся изолированным. Он заменяет только содержимое трёх декабрьских overlay-ревизий и не подключён к registry, README, очереди, articles.json, app-файлам или Git. ## Проход 1 — проблема, структура и техническая речь - Прочитаны все три тела без списка источников. У практической статьи свой вопрос: как собрать timeline, в котором не исчезают варианты и цена. Механизм разбирает, почему порядок «decision → observation» не доказывает причинность. Полевая статья строит короткий counterfactual review и маршрут repair request. Тексты не являются разрезанным общим введением. - Первые два абзаца каждой статьи содержат symptom и cost. Practice называет цену витрины успехов — повторную работу на основании памяти. Mechanism называет стоимость ложного эффекта — продолжение дорогого пути без основания. Field называет цену гладкой истории — следующий цикл повторяет уже любимое объяснение вместо выбора по записи. - Каркас у каждой статьи самостоятельный: отдельные figure, table, executable snippet, ordered sequence, границы и следующий шаг. Практика развивает контракт timeline и различие окна решения с окном observation; механизм — типы ложного causal claim и условия метода сравнения; поле — правила repair request, два вида несогласия и цену самого review. - Язык соответствует уровню M8: короткая цепочка «симптом → причина → проверка → действие», явный trade-off, спокойная граница утверждения. Английские слова используются как названия полей fixed модели и раскрыты рядом русским смыслом. Удалены обещания универсального эффекта, реальные кейсы, организации, команды, люди, идентификаторы и интеграции. - Финальные размеры основного текста после удаления HTML и source list: practice — **9 262**, mechanism — **9 398**, field — **9 349** знаков. Все тексты находятся в обязательном диапазоне 5 000–15 000 и целевом диапазоне 9–10 тыс. без искусственного растягивания. ## Проход 2 — источники, историческая граница и исполняемый код - Историческая граница пакета — **2025-12-31**. Все три источника первичные, официальные и доступны до этой даты: | Источник | Pin / версия | Проверенный узкий факт | Граница использования | | --- | --- | --- | --- | | RFC 3339 | July 2002, immutable RFC text; SHA-256 9ab2b8864a85dca73a88f49b0927bc7bc85f596926e4fd1890905777924e700a | Раздел 5.6 задаёт составной date-time с датой, T, временем и offset. | Использован только для синтаксиса fixed UTC timestamp; не задаёт причинность. | | RFC 7282 | June 2014, immutable RFC text; SHA-256 d060ec156f5d0699e2c0afd50ea6678293059feb84f1293c2db7ac67f482ae8d | Документ прямо называет trade-off частью инженерного выбора. | Не переносит процедуру IETF в другую среду и не валидирует решение. | | NIST SP 800-61r3 | April 2025, immutable published PDF; SHA-256 e5593d6bb85daecec7e8d9549400c7b3473bcc3f06e469c82218073afa7fba2d | Lessons learned анализируются, приоритизируются и возвращаются в Improvement. | Это пример направления цикла из cybersecurity incident response, не доказательство causal effect и не шаблон ADR. | - Все URL прочитаны прямым curl -L --fail; PDF дополнительно проверен через pdfinfo и pdftotext. В article source list у каждой ссылки видны version/date и boundary; аудит нашёл **3 HTTPS source и 3 visible version** в каждой из трёх статей. Изменяемые live docs без pin не используются. - FIXED_YEAR_SYNTHESIS содержит только frozen JavaScript literals в памяти. У каждого timeline item есть at, decision, две alternatives, cost, observation, unknown, comparisonBoundary и запрет effect claim. Нет файлов, сети, clock, telemetry, Git, CI, production data, user data, реальных организаций, команд, людей, идентификаторов или интеграций. - Проверка fail-closed. Неполная traceability, неверный timestamp, отсутствующие alternative/cost/observation/unknown/boundary и effect-established блокируют hand-off. Произвольный объект получает unknown-fixed-input. Положительная ветка возвращает только synthetic-review-hand-off-only с productionEffect: not-attempted. - Видимые snippets буквально запущены через публичные exports createFixedYearSynthesisInput, inspectYearSynthesis и prepareSyntheticYearReviewHandOff. Practice вернул безопасный synthetic hand-off; mechanism вернул ровно missing-cost, missing-unknown, missing-comparison-boundary, effect-claim-not-allowed; field сохранил stop-and-repair-boundary на обоих шагах. ## Проход 3 — figure, mobile, uniqueness и выпускной контроль - Каждая статья содержит отдельную безопасную SVG: decision timeline, decision/cost/observation matrix и counterfactual review loop. Все XML прошли xmllint --noout. Safety scan не нашёл script, foreignObject, javascript:, data:image или inline event handlers. - Все три схемы отрендерены Sharp на ширине 375 px и просмотрены вручную. При первом просмотре две нижние подписи вышли за край canvas; они были сокращены, центрированы и повторно проверены. Финальные mobile-версии сохраняют читаемый порядок блоков и видимые stop/hand-off границы. - Cross-article scan исключал code и source list, нормализовал основной текст и сравнивал каждую пару. Результат: **0** одинаковых абзацев длиной от 160 знаков и **0** общих последовательностей из 12 слов во всех трёх парах. - Выполнены проверки: ~~~text node --check scripts/upgrade-2025-12.mjs PASS node scripts/upgrade-2025-12.mjs --verify-fixture PASS fixture: 16/16 assertions npm run audit:draft -- scripts/upgrade-2025-12.mjs PASS: 9262 / 9398 / 9349 body chars xmllint --noout <3 P94 SVG> PASS SVG safety scan PASS: 0 forbidden constructs Sharp 375 px render + manual inspection PASS after caption correction git diff --check PASS ~~~ - Пакет не интегрирован, не staged, не committed и не published. Для подключения требуется отдельная независимая приёмка, audit целевых статей после registry и только затем отдельное решение о Git. ## Независимый выпускной проход — 31.07.2026 Три source pin проверены повторно через прямой HTTPS fetch: SHA-256 RFC 3339, RFC 7282 и NIST SP 800-61r3 совпали с зафиксированными в этом review. Тексты источников подтвердили только заявленные факты: формулу RFC 3339 date-time, инженерные trade-off в RFC 7282 и путь lessons learned → analysis/prioritization → Improvement у NIST. Границы статей не расширены до causal или production claim. Practice, mechanism и field прочитаны целиком. Попарная проверка полного HTML-body, включая code blocks, дала 0 одинаковых абзацев от 160 знаков и 0 общих 12-словных фрагментов. Все три snippets выполнены через public exports: valid case возвращает `synthetic-review-hand-off-only`; correlation-only — четыре точные stop reasons; incomplete case сохраняет `stop-and-repair-boundary`. Три SVG повторно отрендерены Sharp на 375 px и читаемы. ~~~text node --check scripts/upgrade-2025-12.mjs PASS node scripts/upgrade-2025-12.mjs --verify-fixture PASS fixture: 16/16 assertions npm run audit:draft -- scripts/upgrade-2025-12.mjs PASS: 9262 / 9398 / 9349 body chars npm run audit:articles -- <3 December slugs> PASS: each article has 1 table, 1 code example and 1 figure ~~~ После приёмки overlay подключён в `editorial-revisions.mjs` после November 2025. Все решения, timeline, alternatives, costs и observations по-прежнему fixed synthetic literals и не являются историей реального года или основанием для production decision.