WEB board

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

Инлайн-цитаты «протухают»: свежие ответы — интерактивные чипы с попапом цитаты, ответы 2-дневной давности в том же диалоге — голый текст «[3] [6]» без интерактива (регресс, чинили раньше)

Закрыт P1 · важно ведёт: —
Суть
Owner 02.09 18:00 (терминал, 2 скриншота прода l91, тетрадь Passport): свежий ответ — синие чипы 1 2 с попапом «Точна цитата»; ответ двухдневной давности — «[2] [3]», «[5][2] [3]», «[7][3] [7] [8]» как обычный текст, не кликается. История: WEB-199 (сегментные чипы), WEB-289 (клик → подсветка), WEB-110 (глобальный чат), WEB-272 ([Source ID: N] при пустом массиве цитат), WEB-380/382 (цитаты 16→0 при конфликте идемпотентности). Гипотезы: метаданные цитат у старых сообщений отсутствуют/переписаны; ссылки на переиндексированные фрагменты (WEB-447) не резолвятся → фолбэк в текст; зависимость рендера от TTL-кэша. План: волна 1297-inlinecitations (A1): репро Playwright под QA + форма данных read-only SQL → корень → фикс (чипы живут от сохранённых метаданных, деградированный кликабельный чип вместо сырого «[3]») → приёмка → l92; бэкфилл старых сообщений — по оценке.
Лента
2026-09-02T19:19:40.272Z · Fable
[A1 19:45 Фабл] Волна 1297-inlinecitations сдана: коммит d2750ad942d724f4346d4e30c87a55c22e5a0b5e (ветка inlinecitations-1297, база l91-candidate): корни по обоим тикетам с доказательствами на проде (скриншоты/форма данных, evidence A1 /home/ubuntu/waves/INLINECITATIONS-EVIDENCE/), фикс + тесты. Отчёт: A1 /home/ubuntu/waves/INLINECITATIONS-REPORT.md. Дальше: приёмка 1324-accinlinecitations (A1, другой verifier: старые сообщения без метаданных → деградированный кликабельный чип, без зависимости от TTL; транскрипт без envelope и с чипами по событиям OpenAI/Google) → GO → l93 → проверка owner-ом (старый диалог + голосовой режим). Бандл: A1 mirrors/lines/inlinecitations-1297.bundle; A2 ref inlinecitations-1297/head.
2026-09-02T20:06:45.383Z · Fable
[A1 20:15 Фабл] Приёмка 1324-accinlinecitations = NO-GO (отчёт A1 /home/ubuntu/waves/ACCINLINECITATIONS-REPORT.md). Что работает: старый маркер без payload → кликабельный amber degraded chip; сохранённые citations → чип с якорем в source-viewer; realtime entity-envelope вырезается на границах транскрипта; OpenAI/Google envelopes извлекаются общим helper-ом. Блокер A: citation с сохранённым sourceId, но устаревшим chunkId/quote после переиндексации рендерится полноценным синим чипом; quote-not-found обнаруживается только после клика — нарушает «переиндексированный фрагмент → честный фолбэк». B: round-trip для обоих провайдеров на реальных по форме payload не доказан. Круг 2 = волна 1335-inlinecitations2 (A1, Luna xhigh, от d2750ad9): проверка актуальности citation ДО рендера + ленивый backfill с кэшем + round-trip тесты. Затем приёмка → l94.
2026-09-02T21:27:27.327Z · Fable
[A1 21:50 Фабл] Волна 1355-inlinecitations2 (перезапуск 1335 после капа) сдана: коммит f466d50f88 (проверка актуальности citation до рендера + ленивый backfill с кэшем + round-trip тесты OpenAI/Google). Отчёт: A1 /home/ubuntu/waves/INLINECITATIONS2-REPORT.md. Дальше: приёмка 1372-accinlinecitations2 (A1, Sol high, в очереди) → l94.
2026-09-02T22:33:53.111Z · Fable
[A1 00:55 Фабл] Приёмка 1372-accinlinecitations2 = NO-GO (отчёт A1 /home/ubuntu/waves/ACCINLINECITATIONS2-REPORT.md): A (устаревшая цитата → degraded-чип до клика, кэш) и B (round-trip OpenAI/Google, границы transcript) — PASS; блокеры: backfill делает запрос на каждую цитату (7 цитат одного источника = 7 POST, надо O(источников) через существующий batch endpoint) и новый endpoint не проходит scoped tsc (2× TS2345, nullable body). Круг 3 = волна 1397-inlinecitations3 (A1, Luna high, от f466d50f).
2026-09-02T23:39:57.181Z · Fable
[A1 04:45 Фабл] Волна 1397-inlinecitations3 сдана: коммит 481a12bc06 (backfill батчами по (sourceId, indexVersion) через существующий batch endpoint; scoped tsc чист). Отчёт: A1 /home/ubuntu/waves/INLINECITATIONS3-REPORT.md. Приёмка 1417 (A1, Sol high, в очереди) → l95.
2026-09-03T00:24:44.222Z · Fable
[A1 08:20 Фабл] Приёмка 1417-accinlinecitations3 = GO (Sol): backfill O(источников) через batch endpoint, scoped tsc чист, A/B-кейсы (degraded-чип до клика, round-trip OpenAI/Google) держатся. Линия inlinecitations3 (481a12bc) идёт в l95-candidate (первая линия l95).
2026-09-03T00:25:11.229Z · Fable
[A1 08:25 Фабл] Cherry-pick inlinecitations3 на l94-candidate конфликтует в src/components/chat/ChatInterface.tsx с rolesc3chain7 (уже в l94). Слияние = волна 1434-l95citationsmerge (A1, Luna high): объединение обеих логик + тесты chat/citations/realtime → база l95-candidate.
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-486","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-09-03T06:12:22.191Z