WEB-323 · Задача · — · web
Движок: интеграция DocumentSession в основную линию note-clone ship-dark (флаг OFF) — предпосылка Gate D
Закрыт
P1 · важно
ведёт: fable-coordinator
Суть
# Интеграция движка в прод-линию (ship-dark)
## Карта: ДВЕ лестницы движка (зафиксировано 23.08 после вопроса owner)
ЛЕСТНИЦА ГЕЙТОВ DocumentSession (доверие движку): Gate A контракт ✅ (document-session-contract-v1) → Gate B библиотека ✅ (F01-F06, 311+135 тестов, 8 раундов V4→V4Q) → Gate C legacy shadow ✅ (ЗАКРЫТ 23.08: пакет R22G-F4, вердикт аудита GO — браузерные пруфы selection/clipboard/edit-mirror, ON/OFF артефакты, WEB-089 CLOSED-VERIFIED) → Gate D controlled writer (NO-GO, ждёт интеграции+одобрения) → Gate E mutating AI (NO-GO) → Gate F production collaboration (NO-GO).
ПРОДУКТОВАЯ лестница этапов редактора (другая!): этап A P0-фиксы ✅ (в проде) → этап B docsession-веер фич (WEB-283) → этап C CodeMirror-гибрид для ТЯЖЁЛЫХ ФАЙЛОВ (WEB-086) → этап D спайк ProseMirror.
ВАЖНО: движок-библиотека живёт в ОТДЕЛЬНОМ дереве (wq/o3/docsession-*) и НЕ является предком прод-линии (WEB-304) — т.е. Gates B/C приняты аудитором, но этот код НЕ в serving. Первый шаг к проду = WEB-323 (интеграция ship-dark).
## Скоуп
Аккуратной волной перенести shadow-код движка (принятый Gate B/C) из отдельного дерева wq/o3/docsession-* в основную линию note-clone: ship-dark, env-флаг по умолчанию OFF (правило ship-dark-deploy-dormant). Включает shadow-адаптер + рекордер расхождений. После посадки: включение флага на своей учётке → сбор телеметрии расхождений на живых страницах → это вход в Gate D.
Осторожно: WEB-304 (волны W1-W4 не предок линии — сверить, что переносим ПРИНЯТУЮ версию из пакета R22G-F4, source-bundle в леджере), WEB-305 (замороженная 311-сюита красная — разморозить в рамках интеграции), WEB-291 (класс потерянных фиксов).
## Эволюция вопроса
Связки: [[WEB-085]] (Gate C пакет GO), [[WEB-283]], [[WEB-304]], [[WEB-305]], [[WEB-291]].
## 2026-08-23 15:40 UTC — интеграционная волна ЗАПУЩЕНА (A1 web323, Luna xhigh)
Бандл принятой линии (613МБ, engc-C01, verify OK) доехал A1. Скоуп: перенос DocumentSession+shadow на ветку web323-shipdark от 00c402c, 3 пруфа тёмности при OFF, тесты ядра. Ожидаю WEB323_SHIPDARK_READY → посадка 34.
## 2026-08-23 18:00 UTC — ИНТЕГРАЦИЯ ГОТОВА (WEB323_SHIPDARK_READY)
Ветка web323-shipdark (c8a64ff37 от 00c402c). Перенос выборочный (у линий независимые корни — merge-base нет): вся библиотека DocumentSession (полная цепь Gate B V2→V4P, 26 коммитов) + Gate C shadow (W1 adapter, W2 runtime, telemetry+JSONL recorder, gated admin endpoint, fail-closed mutation inventory) + guarded seams в EditorModal. CodeMirror-seam НЕ переносился (это WEB-086). Флаги: DOCUMENT_SESSION_SHADOW_W1_ENABLED (runtime) + NEXT_PUBLIC_… (build-inline, default '0').
ТЁМНОСТЬ доказана трижды: (а) карта всех callsites — каждый за if(!runtime) return; (б) легаси-набор 31/31 без изменений; (в) негатив: OFF + фабрика-которая-бросает → конструктор не вызван. Полный adversarial 529/529, scoped tsc rc=0, DS-T013 11/11. pnpm-lock БЕЗ изменений → пины посадки не меняются. Груз посадки 34.
## 2026-08-23 22:25 UTC — 🎉 ПОСАДКА 34 СЕЛА (v4-b21dea6a0, 1-я попытка)
rel-b21dea6a0 (SHA d79a9e3e…), пин-гейт 7/7, paidReady=true, канон проштампован. В посадке: ДВИЖОК ship-dark (OFF заморожен байт-пруфом Object.freeze("0")) + sync hotfix + WEB-087 + WEB-272. Дельта-гейт тайпчека: 0 новых против baseline-407 (WEB-281), гейт .next/types починен честно (e46995c32).
Движок ВПЕРВЫЕ в прод-линии. WEB-304/291 закрываемы: перенос сделан из ПРИНЯТОГО пакета — сверка при приёмке.
## 2026-08-23 BOARDSWEEP: STALE-NOT-DEPLOYED
- Evidence: buildFixed is empty. Canonical DocumentSession ship-dark/editor wiring exists, but the ticket is a Gate-D prerequisite with flag OFF and no deployed build pointer/evidence.
- buildFixed: <empty>; canonical: v4-081ff4fb5 / 081ff4fb5f6110f8001daec7ed910ccef2e395dc.
- Status preserved by sweep: review.
Доказательства
[2026-08-24 STALEREV против 61bc04462; в проде с посадки 45 v4-5a4edbac3] Вердикт SERVED: реализация+тесты доказаны в target tree; принято по приёмке 45-тикетного разбора. Отчёт: A1 /home/ubuntu/waves/STALEREVIEW-REPORT.md (STALEREVIEW_DONE).
Починено в
v4-5a4edbac3
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-323","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-24T14:29:00.781Z