WEB board

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

P1 [цитаты]: тот же вопрос в той же тетради дал 7 цитат 31.08 и 1 цитату 09.09 — сузилась широта цитирования

Закрыт P1 · важно ведёт: —
Суть

---
## Эволюция 09.09 (вечер) — полный след для нулевого агента

**Живой прод:** l114u `54243a5cff19ef2bacf2531a0951b7bb82a71633`, посажен 09.09 ~20:0xZ. Откат = l114t `3b1a451cf6cf5b300bd32ce75c9304098448a308`.
**Расписки линий:** `L114S-RELEASE-RECEIPT.md`, `L114T-RELEASE-RECEIPT.md` — лежат в очередях волн на A1/A2/M4 и у security lead в `~/audit/inbox` на M1.
**Обзорный документ эпика энтерпрайза:** https://bugs.wool2.online/labs/enterprise-ent093-20260909.html
**Паспорт, топология парка (добавлен Нео, исправлена строка M4):** https://bugs.wool2.online/passport/03-TOPOLOGY-INFRA.md
**Живой журнал координатора:** `/Users/annakorin/Downloads/OPS-STATUS-LIVE.md` на ноуте владельца.
**Линии, посаженные 09.09:** l114m → l114u, каждая с браузерной пробой открытия документа на проде.

### Ширина цитат — посажено
- **Симптом владельца:** один и тот же вопрос в той же тетради дал 7 цитат 31.08 и 1 цитату 09.09. Экспорт диалога: `/Users/annakorin/Downloads/chat-json-2026-09-09T16-04-19-809Z.json`.
- **Координатор исключила две очевидные причины прямым замером боевой базы ДО постановки волны:** все семь источников августовского ответа живы и лежат в одной тетради «Passport» (`8e32d378-9d00-4d90-af48-b9a039f4eb53`); ни один не в карантине (28/58/48/16/24/25 кусков, `sourceContentRevision` заполнен везде). Значит это не карантин и не сужение области тетради.
- **Волна 3218 → GO**, коммит `3b1a451cf fix(chat): preserve compound citation breadth`.
- **Посажено:** линия l114t, прод с 09.09 18:29Z, проверено браузерной пробой.

### Читалка источника по клику на цифру цитаты (связанный симптом)
- **Симптом владельца:** «раньше клик по инлайн-цифре открывал лёгкую читалку источника с подсветкой цитаты — сейчас открывает редактор дока сначала и без подсветки».
- **Волна 3265 на M4**, коммит `a2e827bec`, 77/77 тестов, включая контракты подсветки источника и окно утверждений совета. Собрана в линию l114v.
- Приёмка 3270 на Нео обязана отдельно доказать, что два уже посаженных фикса цитат (ширина WEB-588 и бездоказательные утверждения совета) не сломаны.


**Статус 09.09 22:4xZ → review.** ширина цитат посажена в l114t (3b1a451cf); читалка источника по цитате посажена в l114v (9d63bc4e1); ЖДЁТ приёмки


**Приёмка круга 2 (Нео, Клод, 09.09 23:2xZ):** читалка источника по цитате — GO, автосохранение больших документов — GO. **Генерация книги — NO-GO: фикс оказался ПУСТЫМ.** Снятый код был уже мёртв:  с коммита 3def9644 возвращает undefined безусловно, значит заголовок учётных данных никогда не отправлялся и 403 из браузера недостижим. Ответ маршрута побайтово одинаков до и после фикса: 200, fallback=true, «no OpenAI key was available in this session», длина 294. **Баг владельца НЕ починен и остаётся на проде.** Коммит 76f02b486 не откатываю: он снял мёртвый код, вреда нет, пользы тоже. Зацепка для круга 3 (волна 3273): книга, похоже, генерируется локальной заглушкой вместо модели.


**ПОПРАВКА к предыдущей записи (в ней шелл съел имена в обратных кавычках).** Полный текст приёмки круга 2 (Нео, Клод):
читалка источника по цитате — GO, автосохранение больших документов — GO, генерация книги — NO-GO, фикс ПУСТОЙ.
Снятый код был уже мёртв: `resolveClientApiKeys` в `src/lib/ai/clientApiKeys.ts`, начиная с коммита `3def9644`,
возвращает `undefined` безусловно. Значит выражение `...(apiKeys?.openai ? { 'x-openai-key': apiKeys.openai } : {})`
всегда ложно, заголовок никогда не отправлялся, и 403 из браузера недостижим. Реалистичный POST на маршрут даёт
побайтово одинаковый ответ до и после: `status 200`, `fallback: true`,
`fallbackReason: "Used the local fallback because no OpenAI key was available in this session."`, длина истории 294.


---
## Обновление 10.09 утро — состояние и статус

**Живой прод:** l114v `76f02b486189d481ebdeb7735580481d60ff205d`. Откат: l114u `54243a5cff19ef2bacf2531a0951b7bb82a71633`.
**Собирается:** l114w с принятым гейтом схемы P19.
**Документ эпика (обновлён):** https://bugs.wool2.online/labs/enterprise-ent093-20260909.html

### Обе части приняты
Ширина цитат (`3b1a451cf`, l114t) и читалка источника по цитате (`9d63bc4e1`, l114v) — приёмка круга 2 на Клоде дала GO по обеим. Тикет закрыт.
Воркер
не привязан — привязать: curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \ -d '{"issueId":"WEB-588","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-09-10T07:07:04.061Z