WEB board

всеканоны и докиворкеры↗ iOS↗ Легаси
WEB-291 · Дефект · release · web

КЛАСС: переключение прода на monet-линию (15.08) потеряло фиксы старой линии — инвентаризация и порт

Закрыт P0 · горит ведёт: coordinator-fable
Суть
Найдено 17.08 по WEB-021 (owner: чинили на прошлой неделе, а на проде без изменений): фикс v4-9379375 (11-12.08, старая линия) ОТСУТСТВУЕТ в monet-линии b4846087 — санитизированный снапшот старше, история переписана (sha-проверка бессмысленна, нужен КОНТЕНТ-аудит). Под риском ВСЕ done-тикеты с деплоем ~09-15.08 на старую линию (WEB-021, 211, 271, редакторные и др.). План: (1) инвентарная волна — контент-сверка старой serving-линии против monet по списку тикетов окна; (2) порт-серия недостающих фиксов на monet-линию; (3) правило впредь: перед переключением линии — контент-аудит deployed-тикетов окна. Источник старой линии: M1 wt/web179 + GitHub backup/mac-live.

## 2026-08-23 BOARDSWEEP: DEAD-SOUL-CLAIM
- Evidence: updatedAt=2026-08-16T20:04:57Z, older than 24h; body contains an old inventory/port plan but no active wave/process named for this ticket. Candidate for return to todo; status unchanged.
- buildFixed: <empty>; canonical: v4-081ff4fb5 / 081ff4fb5f6110f8001daec7ed910ccef2e395dc.
- Status preserved by sweep: in_progress.


## WEB-291 inventory — stage 1
Инвентаризация завершена в режиме только чтение. Найдены 16 уникальных коммитов старой линии: PORTED=15, LOST=1, OBSOLETE=0. Точка развилки: merge-base 708b2169, старый tip cad98a8e, monet parent 6d58a77c, cutover merge 8aca9870.

Полная построчная опись: /home/ubuntu/waves/WEB-291-inventory.jsonl
Отчёт с evidence, тестами/rc, негативным тестом и оценкой порта: /home/ubuntu/waves/WEB-291-FIX-REPORT.md
LOST: cad98a8e7e13 — structured insufficient-funds diagnostics для doc-NER отсутствуют в async canonical path; оценка порта: один файл src/lib/intelligence/deepenAnalysisJob.ts, низкая/средняя конфликтность. Порт на этом этапе не выполнялся.
Исходники и status не менялись, деплой/платное не запускались. Фикс-патч и fix-коммиты не создавались согласно ограничению stage 1: только опись.

WEB291_INVENTORY_READY
Доказательства

[24.08 04:30] СВЕРКА ИНВЕНТАРЯ ПРОТИВ СЕРВА 452800ff4 (волна w291, отчёт /home/ubuntu/waves/W291VERIFY-REPORT.md): 16 позиций старой линии (git cherry 6d58a77..cad98a8 = 16, инвентарь полный). ВЕРДИКТ: 15 SERVED (по символам/поведению/тестам, файл:строки в отчёте), 1 LOST, 0 OBSOLETE. LOST (P0): cad98a8e7e13 — structured insufficient-funds диагностика deepen-analysis потеряна при переходе на async-job (deepenAnalysisJob.ts:432-448 пишет только generic error без estimate/required/spendable). Порт-точка: один файл + тест. Раздано в работу волной w291port (24.08). После порта тикет-класс можно закрывать.


[24.08 07:15] LOST-порт ДОСТАВЛЕН В ПРОД (посадка 42, v4-b1fcad2f0): structured insufficient-funds warning в deepenAnalysisJob.ts (event/jobId/sourceId/mode/estimatedUsd/estimatedCredits/requiredUsd/spendableUsd, без tenant-секретов), контрактный тест 7/7. Итог класса: 16/16 позиций старой линии закрыты (15 были SERVED + 1 портирован). Эпик-класс готов к closed.

[2026-08-26 00:33Z] web291 ИНВЕНТАРЬ ЗАВЕРШЁН @03eb41b (old line e857b22/l48-salvage vs monet a453b16; tree diff 258 файлов, 104 monet-only, 153 изменённых, 1 old-only). ВЫВОД: страх 'потеряли фиксы' в основном ОПРОВЕРГНУТ — Gate D/E/F, WEB-094 accounting fail-closed, WEB-068 SearXNG egress VERIFIED присутствуют в monet, порт НЕ нужен. Единственное old-only поведение: realtime/session-end пускал logout-клиента закрыть VoiceSession при authUserId=null; monet возвращает 401 — это НЕ потерянный фикс, а небезопасный регресс, который monet ПРАВИЛЬНО закрыл (sessionId≠доказательство владения). Прямой порт UNSAFE. → подтикет WEB291-A (proof-bound auth для legit logout-close, если нужно). Реальных потерь фиксов НЕТ. → review/close.
[2026-08-26 06:50Z] ПРИНЯТ acc291 (P0, независимый tree-diff + выборочная проверка семантики): GO — потерянных monet-фиксов НЕ найдено, единственный old-only путь объяснён (небезопасный регресс, закрытый monet), незакрытых подозрений нет. -> done.
Починено в
a453b16
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-291","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-08-26T06:49:00.739Z