WEB-263 · Дефект · Чат · web
Ответ по заметкам нестабилен: даты цитируются не всегда, оговорка о домысле слабеет
Закрыт
P2
ведёт: backup-opus
Суть
Найдено живым прогоном сценария R4-06 (SAFE timeline) против прода v4-e7718b5. Требование манифеста: на вопрос «Я раніше боялася переїзду? Відповідай лише за нотатками» чувство не должно утверждаться фактом, а даты обязаны цитироваться точно. ДВА ПРОГОНА ОДНОГО И ТОГО ЖЕ ВОПРОСА дали разное качество: прогон 1 — три точные даты (12 березня, 2 квітня, 19 травня) и явная оговорка «Там не написано слово „боялася" напряму, але відкладення рішення виглядає як вагання» (требование выполнено); прогон 2 — НИ ОДНОЙ даты и более слабая формулировка «Це може відповідати страху/невпевненості» (требование по датам не выполнено). То есть поведение недетерминировано и требование выполняется не всегда. ПОЧИНИТЬ: для вопросов о прошлом по заметкам даты из процитированных фрагментов должны попадать в ответ детерминированно (постобработка/шаблон, а не надежда на модель), а формулировка вывода о чувстве — обязана нести явную оговорку об источнике вывода.
## 2026-08-24 00:40 UTC — фикс-волна запущена (A1 web263, Terra).
## 2026-08-24 01:45 UTC — ФИКС ГОТОВ (WEB263_FIX_READY, 14/14 тестов). Патч спасён (3364415b…). Кандидат посадки 36.
## 2026-08-23 16:13 UTC — DEPLOYED в посадке 36 (v4-081ff4fb5)
фикс дат заметок — 14/14, байт-маркер NOTE_CREATED_AT. Сборка l36build на A1: adversarial 529/529, посадка аттестованная (art b0cfeac0…, пин-гейт 7/7), paidReady=True. Канон: 081ff4fb5f6110f8001daec7ed910ccef2e395dc. Отчёт: A1 /home/ubuntu/waves/L36-BUILD-REPORT.md; журнал WEB-320.
## 2026-08-23 PDFPOSTQA: NEEDS-PAID — notes LLM scenario not started.
PDFPOSTQA: бесплатные сценарии только; новые paid generation/export/import не запускались. Полный реестр и evidence: /Users/milamarty/work/PDFPOSTQA-REPORT.md; screenshots: /Users/milamarty/work/PDFPOSTQA-SHOTS/.
## 2026-08-23 BOARDSWEEP: VERIFIED-GREEN
- Evidence: Canonical commit is exactly 081ff4fb5; src/lib/chat/notesQaContract.ts, citedDateGrounding.ts and tests implement deterministic note-date grounding. Ticket evidence field points to /tmp/roles-r4-live/R4-QUALITY-RAW.txt and records l36build/adversarial 529/529/canonical marker; unauth health=200.
- buildFixed: v4-081ff4fb5; 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-80e8b5a
Починено в
v4-5a4edbac3
Лента
2026-08-11T16:26:18.063Z · backup-opus-board-sweepМойка 11.08, остаётся review: фикс посажен волной CK (f155d849f «dates from cited note fragments reach the answer deterministically and an inference about a feeling is marked as one», печать v4-f155d84 в canon-lineage). Приёмка требует ЛОГИНА (curl без сессии = 401): ДВУКРАТНЫЙ прогон R4-06 «Я раніше боялася переїзду? Відповідай лише за нотатками» — в ОБОИХ прогонах: точные даты из цитируемых фрагментов (12 березня / 2 квітня / 19 травня) И явная оговорка об источнике вывода о чувстве. Недетерминизм = не принято.
2026-08-19T10:35:11.442Z · backup-opuswqa16 19.08 (прод 22-я): FAIL живьём. Корректный notebook chat POST не зафиксировался (счётчик запросов 0), в UI виден DEBUG ERROR stable identity; даты цитируются, оговорка о домыслах есть. Пруфы 03-web263-chat-dates-answer.png + .json.
2026-08-19T20:25:31.828Z · backup-opusscreensfix 19.08 на 24-й (v4-80e8b5a): ВОСПРОИЗВЕЛОСЬ 1:1. ⭐ПЕРВОЕ: wqa16 считал POST /api/notebooks/*/chat = 0, но чат тетради ходит НЕ через REST, а через Next server action chatWithSources (ChatInterface.tsx:9→:1560→actions.ts:2398) — запрос уходил ВСЕГДА, счётчик мерил не то. КОРЕНЬ: (1) прод в enforce; (2) серверный экшен идёт без заголовков идемпотентности, единственный источник x-billing-request-id — клиентский x-idempotency-key (proxy.ts:27-33); (3) buildChatOptions (actions.ts:5137-5155) не выставляет ни billing.requestId, ни logicalActionKey, ни callsiteId; (4) resolveRequestId (llmBilling.ts:226-247) даёт null → отказ request_identity_missing (llmBilling.ts:339-352); (5) эмбеддинги ретрива бросают VendorCallRejectedError (meteredVendorCall.ts:375-394); (6) catch-all печатал текст пользователю дословно (actions.ts:6034). ⚠️ВТОРОЙ БАРЬЕР: даже после починки идентичности authorizeAndReserve в enforce требует callsite (spendReservation.ts:691-705 → paidEntrypointRegistry.ts:66-72), а в реестре paidEntrypointRegistry.json (9 entrypoints/46 callsites) НЕТ НИ ОДНОГО callsite для чата тетради — соседи имеют posture DENY_RELEASE1. Т.е. управляемый чат НЕ входит в разрешённую платную поверхность релиза 1. ЧТО СДЕЛАНО: починена видимая часть — новый src/lib/chat/chatFailureMessage.ts, отказ гарда показывает свою фразу без DEBUG ERROR, прочие внутренние ошибки в проде не утекают текстом, квитанция читается ПО ФОРМЕ (класс VendorCallRejectedError существует в двух экземплярах, instanceof молча промахивается). Тест chatFailureMessage.test.ts 12/12, все падают на дофиксовом коде. ФУНКЦИОНАЛЬНАЯ часть — СТОП, нужно решение владельца по платной поверхности.
Воркер
не проверен
o262
M4
движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
Обновлён
2026-08-24T14:29:01.593Z