WEB-272 · Дефект · Чат · web
Инлайн-ссылка на источник ведёт в никуда: [Source ID: N] в тексте при ПУСТОМ массиве цитат
Закрыт
P0 · горит
ведёт: backup-opus
Суть
Найдено независимым ревизором в наших же сырых прогонах Round 5 (мы это пропустили). В 10 одинаковых прогонах таймлайна: только 1 из 10 ответов содержит настоящие объекты цитат; в 7 из 10 текст показывает маркер [Source ID: N], а массив citations ПУСТ. То есть пользователь видит ссылку на источник, которой физически нет в ответе — кликать не по чему, проверить нечем. ПОЧИНИТЬ: обязательная финальная проверка перед отдачей ответа — каждый инлайн-маркер источника обязан (а) существовать в массиве цитат и (б) действительно подтверждать соответствующее утверждение; маркер-сирота либо получает свою цитату, либо вычищается из текста. Тест с положительным контролем: ответ с маркером и пустыми цитатами не проходит гейт; ответ с корректной парой проходит.
## 2026-08-23 12:25 UTC — НОВАЯ грань от owner (живьём, v4-4482925): непризёмленный ответ декорируется НЕрелевантными цитатами
Экспорт owner ~/Downloads/chat-json-2026-08-23T10-17-17-082Z.json + 2 скрина. Репро: вопрос «когда было восстание Спартака» в notebook, где источники = только MOBY-DICK.TXT.
- Ответ №1 ЧЕСТНЫЙ: «в источниках только Moby-Dick, даты нет» — цитаты на фрагменты о бунте Стилкилта (семантически ближайший ретривал; поведение легитимное).
- Ответ №2 (после уточнения «1», routed gpt-5.4-nano) — ДЕФЕКТ: факт из общих знаний («73–71 до н.э.»), но КАЖДОЕ предложение декорировано [1][2] → чанки… ЛИЦЕНЗИИ Project Gutenberg из MOBY-DICK.TXT (id cmr9tnikv…-1274/-1268). Баннер «Джерела не підтверджено» горит (верификация ловит), но инлайн-цифры всё равно рисуются и вводят в заблуждение.
СУТЬ: при knowledge-based ответе пайплайн всё равно прикрепляет top-K ретривал-чанки как per-sentence цитаты. Ожидание: непризёмленные утверждения БЕЗ инлайн-цитат (или явная пометка «из общих знаний, не из ваших документов»); баннера недостаточно.
Это сестра исходного кейса (пустой массив citations + [Source ID: N] в тексте): семейство «инлайн-цитаты не привязаны к реальному evidence». Кандидат фикса: рендерить инлайн-номера ТОЛЬКО для предложений, прошедших verify (тот же механизм, что зажигает баннер, — сигнал уже есть в рантайме).
## 2026-08-23 17:20 UTC — фикс-волна запущена (A1 web272, Terra high)
Скоуп: инлайн-номера только для verify-подтверждённых предложений; knowledge-ответ = 0 цифр + i18n-пометка «из общих знаний»; санация [Source ID: N] при пустых citations; 4 негатива. Ожидаю WEB272_FIX_READY — кандидат посадки 34/35.
## 2026-08-23 17:50 UTC — ФИКС ГОТОВ (A1 web272, маркер WEB272_FIX_READY)
Коммит bce9c44a (от 00c402c), патч спасён (a0cb6eda…). Найден ГЛАВНЫЙ корень: chat-global считал judgedCitations, но ВОЗВРАЩАЛ несуженный список — теперь второй integrity-проход ПОСЛЕ citationEntailmentJudge, возвращаются verifiedText/verifiedCitations. Инлайн-маркер выживает только при трёх сигналах верификатора (judge applied + pass + supported); knowledge-ответ = 0 цифр + i18n-пометка «из общих знаний» (en/ru/uk, runtime-каталог); [Source ID: N] при пустых citations вычищается. 6 регресс-кейсов (включая гутенберг-класс owner). Кандидат посадки 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).
Живая приёмка: цифры только у verify-подтверждённых — проверить экспортом на кейсе Спартак/Моби-Дик.
## 2026-08-23 BOARDSWEEP: STALE-NOT-DEPLOYED
- Evidence: Canonical contains the earlier verified-only citation code in src/lib/chat/citationVerificationPresentation.ts, citationMarkerIntegrity.ts and web272 tests, but the ticket's current bce9c44a fix and v4-b21dea6a0 landing are after v4-081ff4fb5. buildFixed=v4-7716068 is stale; no paid request sent.
- buildFixed: v4-7716068; 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-7722b05
Починено в
v4-5a4edbac3
Лента
2026-08-10T23:50:14.380Z · backup-opus11.08: активна на GPT-нити фактчек R8 (V2I на M4: selected-source visibility, full-document, source-ID citations). Не QA-review — ждёт V2I-пакета.
2026-08-11T19:33:08.379Z · backup-opusРевизия 11.08: живое — V8: маркеры больше не дорисовываются без реальных объектов цитат (детерминированное вето + binding verifier). Done = посадка линии ролей.
Воркер
не проверен
o272
M4
движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
Обновлён
2026-08-24T14:28:58.763Z