WEB board

всеканоны и докиворкеры↗ iOS↗ Легаси
WEB-424 · Задача · — · web

P1 ПРОД: после перезагрузки редактор исчезает (3/3), повтор FAIL→PASS→FAIL; текст НЕ потерян — линия волн web421/web421b

Закрыт P2 ведёт: —
Суть

--- 30.08 ~14:35Z (Фабл): при живой браузерной пробе на l72c замечен стойкий тост «Не удалось сохранить в облако — работа сохранена локально, повторим» (висел всю сессию чата в тетради Classic Library). Возможная связь с этой линией (редактор исчезает после перезагрузки / потеря записи). Требует разбора: волна на воспроизведение+корень после текущей очереди.

--- 30.08 ~15:25Z (Фабл): ⭐ КОРЕНЬ НАЙДЕН И ВОСПРОИЗВЕДЁН на реальном PG (волна web424probe): POST /api/sync с непустыми messages = 500 из-за ReferenceError buildUserFacingMessage is not defined (route.ts:716) — commit 87339c7a (ANSWERCLEAN10, 29.08) добавил вызовы, но импортирован только buildUserFacingMessages (с s); TS-ошибки отключены (next.config.ts:134) → build пропустил. Полная цепочка клиента задокументирована (useStore 6589→5578→4839→ловля 500→тот самый тост). ЭТО ВТОРОЙ СЛУЧАЙ КЛАССА build-does-not-catch-missing-import (Совет умирал так же 2 недели). Фикс-волна 793-web424fix летит: минимальный импорт + СТРАЖ класса в prebuild (no-undef scoped) + кандидат на хотфикс l72d. Репро-тест сохранён: wave/web424probe de310555. Отчёт: A1 WEB424PROBE-REPORT.md.

--- 30.08 ~16:00Z (Фабл): фикс ГОТОВ автором (b8870f77 «fix(sync): restore cloud chat saves», wave/web424fix): минимальный импорт + WEB428-страж в prebuild (ESLint scope-graph scanner на src/app/api + src/lib — класс missing-import теперь красная сборка). Приёмка 806-accweb424fix = ХОТФИКС-ГЕЙТ, её GO → немедленная сборка l72d (a3c8e3e4+b8870f77) и посадка.

--- 30.08 ~16:10Z (Фабл): ⭐ ХОТФИКС l72d ПОСАЖЕН И ДОКАЗАН БОЕМ. Полный цикл за ~40 мин от GO приёмки: сборка b8870f77 на M4 (16 мин, PACK sha 22de89df…), LAN-перенос со сверкой, attestation подписана+verify+негатив, релиз arm64-l72d-20260830T140108Z, run-dir l72d-b8870f77, сухой прогон paid TRUE, посадка обеих служб (бэкапы .l72c-kept-*), paid TRUE. ДОКАЗАТЕЛЬСТВО: браузерный вопрос через тетрадь → 4 строки в Message за 5 мин (14:06Z), включая ДОСЛАННЫЕ ретраем утренние сообщения («сохранено локально, повторим» отработал догоном); в журнале 0 ReferenceError. Линия закрыта → done. Страж класса missing-import теперь в prebuild.

--- 30.08 ~18:30 IST (Фабл): ДОПОЛНЕНИЕ к закрытой линии: коммит-виновник 87339c7a оказался ДВОЙНЫМ вредителем — он же дал регрессию открытия редактора (синхронная projection в state-seed; раскопано волной slowopen, фикс 5fc25792 → l75). Класс «тяжёлая работа в синхронном критическом пути UI» — на заметку ревьюерам.
Доказательства
Живой дефект из хендоффа №3 §5 (воспроизведён на проде под QA-учёткой; текст цел — подтверждено detail-ответом). Круг 1 (волна wq-web421, коммит d1fd6829): детерминированная цепочка reload → persist → rehydrate. Приёмка ACCWEB421: NO-GO — persist merge ...persisted без валидации (useStore.ts:7703-7708), повреждённое хранилище = невалидное состояние без recovery; достигнутое сохранено (reload/две вкладки/pending-vs-missing PASS). Круг 2: волна web421b (queue/325, база d1fd6829) — merge с валидацией, матрица мусора, лог с маячком. Отчёты: /home/ubuntu/waves/WEB421-REPORT.md, ACCWEB421-REPORT.md на A1. ⚠️ ИМЕНОВАНИЕ: волны названы web421* ДО появления тикета WEB-421 на доске (тот — про открытие источника, prodeyes1); этот тикет — правильный якорь линии редактора.

[BOARDTRIAGE] Последнее доступное evidence — wave web421b, дата в записи не указана; найден merge с валидацией, но текущая l70-проба и acceptance не предъявлены. Нужен свежий reload→persist→rehydrate run.
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-424","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-30T17:23:46.533Z