# 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.