WEB-505 · Задача · — · web
P1 [роли/ретривал]: ответ возвращается БЕЗ цитат на кейсах, где источник есть — C1-2, C1-5, C5-1 (новые провалы батареи на l97, cites=0)
Закрыт
P1 · важно
ведёт: —
Суть
## ЭВОЛЮЦИЯ 04.09.2026 (карта для нулевого агента)
**Якорь прода:** живая линия **l103**, коммит **d91ebefe740ae83484c1de16710f2e6a68610432**, флип **13:51Z 04.09**. Раньше в этот же день: l101 `d825eb0d`, l102 `1b081c5a`. Ветка линии в репозитории-базе `/home/ubuntu/nc` на A1: `l103-line` (проверено `git branch -a --contains d91ebefe...` → `l103-line`).
**Доска:** живая доска — `web-board.sqlite` + HTTP API `http://127.0.0.1:8787/api/web/*` на M1 (`ssh poolpooly@192.168.1.74`). НЕ `board.sqlite` (это iOS/легаси, таблицы `issues`/`ios_issues`, 2225 строк, ключи другие).
### СЕЙЧАС
Батарея ролей на ЖИВОМ проде: **30/50** до l102, **32/50** после l102. Гейт **C2 как был 4/14, так и остался**: 10 падений до фикса и 10 падений после. Фикс окна цитирования, который по замыслу должен был сдвинуть C2, **не изменил ничего**.
### ПРИЧИНА — НАЙДЕНА, ДОКАЗАНА
Каждое падение C2 протаскивает в ответ **один и тот же документ**: `Fixture Note T-364 (outside both windows).txt`.
При этом собственная расписка движка сообщает **`outOfWindowAdmitted: 0`**.
Вывод: предыдущий круг починил **УЧЁТ** (счётчик перестал считать), а не **ДОСТАВКУ** (документ по-прежнему доезжает в контекст ответа). Это ровно класс «фикс одного слоя ≠ фикс фичи»: расписка врёт относительно факта.
**Эвристика «16 цитат = провал» ОПРОВЕРГНУТА.** Граничные кейсы падают с **9**, **3** и **15** цитатами. Число цитат ни о чём не говорит — не строить на нём ни диагностику, ни критерий приёмки.
### ЧТО ИЗМЕНЕНО И ГДЕ СЕЛО
Работа круга 6 перебазирована на живую линию как **`472e0629`** — `fix(WEB-505): remove confirmation token stop-lists`, принята, **села в l103** (`d91ebefe`, флип 13:51Z 04.09). Проверено на A1: `git -C /home/ubuntu/nc log --oneline -1 472e0629` → `472e0629 fix(WEB-505): remove confirmation token stop-lists`.
### ЧТО ОСТАЛОСЬ — КОНКРЕТНОЕ ДЕЙСТВИЕ
1. Волна **`1746-c2window3`** лежит в `/home/ubuntu/waves/queue/active/1746-c2window3-brief.md` и **не запущена** (в `running` только 1776). Её бриф надо переписать под настоящую причину: чинить **путь доставки документа в контекст**, а не счётчик `outOfWindowAdmitted`.
2. Критерий приёмки (жёсткий, проверяемый): в C2-кейсе на живом проде документ `Fixture Note T-364 (outside both windows).txt` **отсутствует в списке источников ответа**. Не «счётчик равен нулю» — счётчик уже равен нулю и при этом всё сломано.
3. Приёмка — только replay живой батареи на проде (`roles-acceptance-must-replay-live-battery-json`), не на моках. Фикстуру батареи пере-сеять непосредственно перед прогоном (`roles-battery-fixture-drifts-reseed-before-run`) — она протухает.
4. Целевые числа: C2 > 4/14 на живом проде, общий счёт > 32/50.
### ЛОВУШКИ
- **Пара тестов «красный на родителе / зелёный после фикса» здесь уже проходила — и фикс всё равно ничего не изменил живьём.** Такая пара НЕОБХОДИМА, но НЕ ДОСТАТОЧНА. Без прогона на живом проде вердикт не считается.
- Не верить расписке движка: `outOfWindowAdmitted: 0` при фактической утечке документа. Смотреть фактический список источников в ответе.
- Не использовать количество цитат как сигнал (падения на 9, 3 и 15).
- Тест-раннер проекта — `node:test`, НЕ Vitest (см. WEB-491): бриф, требующий `vitest`, даст тест, который не запускается.
---
## ДОПИСКА 05.09.2026 ~00:15 IST (18:45Z 04.09) — координатор: вердикты дня 04.09
Правила обогащения: WEB-449. Эта секция ДОПИСАНА в конец (append-only), ничего выше не перезаписано.
**Ленты дня 04.09 (время UTC / IST = UTC+5:30):**
- **l101 `d825eb0d`** — флип **08:47Z / 14:17 IST**. Девять ранее принятых изменений + фикс realtime-сокета, который отдавал 500 с l96.
- **l102 `1b081c5a`** — флип **11:18Z / 16:48 IST**. Этап C движка, фикс окна цитат, мобильные боковые панели, преflight окна восстановления бэкапа.
- **l103 `d91ebefe`** — флип **13:51Z / 19:21 IST**. Перебазированная работа по ролям, фикс диалога приглашения, фикс контура бэкапа.
- **l104 `4d858be7`** — флип **18:03Z / 23:33 IST**. Проводка движка, регрессионный тест телеграм-бота, фикс ретенции бэкапа.
**Якорь прода на момент записи: линия l104, коммит `4d858be7`.** Отдельных тикетов-линий для l101–l104 на доске НЕТ — журнал посадок ведётся здесь и в [[WEB-320]].
### ВЕРДИКТ ДНЯ: круг 3 принят приёмкой и ОТКЛОНЁН на гейте l104 — это третий подряд круг, рвущий один и тот же шов
**Кто:** приёмка кругов 2–3 + гейт посадки l104 (координатор). **Когда:** 04.09. **Коммит круга 3:** `36a8bd39`. **Линия на момент записи:** l104 `4d858be7`.
### ЗАМЕРЫ НА ЖИВОМ ПРОДЕ (батарея ролей)
- l100 — **30/50**
- l102 — **32/50**
- Гейт **C2 не сдвинулся: 4/14 в обоих прогонах**, десять одинаковых падений.
### КОРЕНЬ (доказан, не гипотеза)
В КАЖДОМ падении утекает один и тот же документ **`Fixture Note T-364 (outside both windows).txt`**, при этом расписка движка честно рапортует **`outOfWindowAdmitted: 0`**. То есть **круг 2 починил УЧЁТ, а не ДОСТАВКУ**. Счётчик уже равен нулю — и при этом всё сломано.
**Опровергнутая эвристика:** «16 цитат = провал» — НЕВЕРНО. Граничные кейсы падают на **9, 3 и 15** цитатах. Число цитат сигналом не является.
### КРУГ 3 — ПРИНЯТ ПРИЁМКОЙ, НО ЗАРУБЛЕН НА ГЕЙТЕ ПОСАДКИ l104
`36a8bd39` чинит именно доставку и был принят. На гейте l104 **отклонён** за регресс НЕТРОНУТОГО теста:
- файл `src/lib/agents/__tests__/rolePolicyEnforcementWiring.test.ts`,
- **побайтово идентичен** на обоих деревьях,
- на проде даёт **13/13**, с пиком — **11/13**.
**Механика регресса:** расписка строится ДО ремонта в claim-judge, и после правки две воронки перестают делить один гвард. То есть починка доставки в одной воронке рассинхронизирует вторую.
### ЭТО ФАКТ УСТРОЙСТВА, А НЕ БАГ
**Третий круг подряд рвёт один и тот же шов «расписка → доставка».** По правилу «третья находка того же класса = устройство, а не баги» круг 4 брифуется НЕ на перестановку гварда, а на **установление инварианта** между распиской и фактической доставкой.
### ЧТО ЭТО ЗНАЧИТ ДЛЯ ПРИЁМКИ
Пара «красный на родителе / зелёный после фикса» здесь проходила уже трижды и трижды ничего не доказала. Обязательны: (1) прогон живой батареи на проде с пере-сеянной фикстурой, (2) проверка фактического списка источников ответа (а не счётчика), (3) прогон нетронутого `rolePolicyEnforcementWiring.test.ts` на дереве-кандидате.
**Путь отчёта:** очередь волн `/home/ubuntu/waves/queue/` на A1; точные имена файлов отчётов кругов 2–4 в переданном вердикте не зафиксированы — не выдумываю.
## ДЛЯ НУЛЕВОГО АГЕНТА (обновлено 2026-09-05 UTC)
- **Суть одной строкой:** P1 [роли/ретривал]: ответ возвращается БЕЗ цитат на кейсах, где источник есть — C1-2, C1-5, C5-1 (новые провалы батареи на l97, cites=0)
- **Текущее состояние:** статус: in_progress; Якорь прода: живая линия l103, коммит d91ebefe740ae83484c1de16710f2e6a68610432, флип 13:51Z 04.09. Раньше в этот же день: l101 d825eb0d, l102 1b081c5a. Ветка линии в репозитории-базе /home/ubuntu/nc на A1: l103-line (проверено git branch -a --contains d91ebefe... → l103-line). | Батарея ролей на ЖИВОМ проде: 30/50 до l102, 32/50 после l102. Гейт C2 как был 4/14, так и остался: 10 падений до фикса и 10 падений после. Фикс окна цитирования, который по замыслу должен был сдвинуть C2, не изменил ничего. | Эвристика «16 цитат = провал» ОПРОВЕРГНУТА. Граничные кейсы падают с 9, 3 и 15 цитатами. Число цитат ни о чём не говорит — не строить на нём ни диагностику, ни критерий приёмки. | Работа круга 6 перебазирована на живую линию как 472e0629 — fix(WEB-505): remove confirmation token stop-lists, принята, села в l103 (d91ebefe, флип 13:51Z 04.09). Проверено на A1: git -C /home/ubuntu/nc log --oneline -1 472e0629 → 472e0629 fix(WEB-505): remove confirmation token stop-lists. | 1. Волна 1746-c2window3 лежит в /home/ubuntu/waves/queue/active/1746-c2window3-brief.md и не запущена (в running только 1776). Её бриф надо переписать под настоящую причину: чинить путь доставки документа в контекст, а не счётчик outOfWindowAdmitted. | 2. Критерий приёмки (жёсткий, проверяемый): в C2-кейсе на живом проде документ Fixture Note T-364 (outside both windows).txt отсутствует в списке источников ответа. Не «счётчик равен нулю» — счётчик уже равен нулю и при этом всё сломано. | 3. Приёмка — только replay живой батареи на проде (roles-acceptance-must-replay-live-battery-json), не на моках. Фикстуру батареи пере-сеять непосредственно перед прогоном (roles-battery-fixture-drifts-reseed-before-run) — она протухает. | 4. Целевые числа: C2 4/14 на живом проде, общий счёт 32/50.
- **Кто работал:**
- 2026-09-04T00:57:19.463Z — coordinator — Круг 1 сдан: коммит 9bd6cdc6 «handle empty role retrieval as source absence», база l97 9d69d2a0, вынут бандлом в /home/ubuntu/nc-waves как rolesretrieval-line. Автор честно отметил ограничение: расписки прогона l97 на A2
- 2026-09-04T15:08:17.151Z — coordinator — 04.09 координатор: в body добавлен блок «ЭВОЛЮЦИЯ 04.09.2026» — состояние, причина с доказательством, что село, что осталось, ловушки.
- **Ветки/бандлы/отчёты:** /home/ubuntu/waves/queue/active/1746-c2window3-brief.md, /home/ubuntu/waves/queue/; sha: d91ebefe740ae83484c1de16710f2e6a68610432, d825eb0d, 1b081c5a, d91ebefe, 472e0629, 4d858be7, 36a8bd39, 9bd6cdc6
- **KNOWN ISSUES / ТРАБЛШУТИНГ:**
- Якорь прода: живая линия l103, коммит d91ebefe740ae83484c1de16710f2e6a68610432, флип 13:51Z 04.09. Раньше в этот же день: l101 d825eb0d, l102 1b081c5a. Ветка линии в репозитории-базе /home/ubuntu/nc на A1: l103-line (проверено git branch -a --contains d91ebefe... → l103-line).
- Батарея ролей на ЖИВОМ проде: 30/50 до l102, 32/50 после l102. Гейт C2 как был 4/14, так и остался: 10 падений до фикса и 10 падений после. Фикс окна цитирования, который по замыслу должен был сдвинуть C2, не изменил ничего.
- ПРИЧИНА — НАЙДЕНА, ДОКАЗАНА
- Каждое падение C2 протаскивает в ответ один и тот же документ: Fixture Note T-364 (outside both windows).txt.
- Вывод: предыдущий круг починил УЧЁТ (счётчик перестал считать), а не ДОСТАВКУ (документ по-прежнему доезжает в контекст ответа). Это ровно класс «фикс одного слоя ≠ фикс фичи»: расписка врёт относительно факта.
- Эвристика «16 цитат = провал» ОПРОВЕРГНУТА. Граничные кейсы падают с 9, 3 и 15 цитатами. Число цитат ни о чём не говорит — не строить на нём ни диагностику, ни критерий приёмки.
- Работа круга 6 перебазирована на живую линию как 472e0629 — fix(WEB-505): remove confirmation token stop-lists, принята, села в l103 (d91ebefe, флип 13:51Z 04.09). Проверено на A1: git -C /home/ubuntu/nc log --oneline -1 472e0629 → 472e0629 fix(WEB-505): remove confirmation token stop-lists.
- 1. Волна 1746-c2window3 лежит в /home/ubuntu/waves/queue/active/1746-c2window3-brief.md и не запущена (в running только 1776). Её бриф надо переписать под настоящую причину: чинить путь доставки документа в контекст, а не счётчик outOfWindowAdmitted.
- **Эволюция:**
- 2026-09-04 → Круг 1 сдан: коммит 9bd6cdc6 «handle empty role retrieval as source absence», база l97 9d69d2a0, вынут бандлом в /home/ubuntu/nc-waves как rolesretrieval-line. Автор честно отметил ограничение: расписки прогона l97 на A2 не было (проверены оба пути), факты бра
- 2026-09-04 → 04.09 координатор: в body добавлен блок «ЭВОЛЮЦИЯ 04.09.2026» — состояние, причина с доказательством, что село, что осталось, ловушки.
- ЭВОЛЮЦИЯ 04.09.2026 (карта для нулевого агента)
- Якорь прода: живая линия l103, коммит d91ebefe740ae83484c1de16710f2e6a68610432, флип 13:51Z 04.09. Раньше в этот же день: l101 d825eb0d, l102 1b081c5a. Ветка линии в репозитории-базе /home/ubuntu/nc на A1: l103-line (проверено git branch -a --contains d91ebefe... → l103-line).
- Работа круга 6 перебазирована на живую линию как 472e0629 — fix(WEB-505): remove confirmation token stop-lists, принята, села в l103 (d91ebefe, флип 13:51Z 04.09). Проверено на A1: git -C /home/ubuntu/nc log --oneline -1 472e0629 → 472e0629 fix(WEB-505): remove confirmation token stop-lists.
- ДОПИСКА 05.09.2026 ~00:15 IST (18:45Z 04.09) — координатор: вердикты дня 04.09
- Ленты дня 04.09 (время UTC / IST = UTC+5:30):
- Кто: приёмка кругов 2–3 + гейт посадки l104 (координатор). Когда: 04.09. Коммит круга 3: 36a8bd39. Линия на момент записи: l104 4d858be7.
- **Следующий шаг:** ДОПИСКА 05.09.2026 ~00:15 IST (18:45Z 04.09) — координатор: вердикты дня 04.09 | Кто: приёмка кругов 2–3 + гейт посадки l104 (координатор). Когда: 04.09. Коммит круга 3: 36a8bd39. Линия на момент записи: l104 4d858be7.
Лента
2026-09-04T00:57:19.463Z · coordinatorКруг 1 сдан: коммит 9bd6cdc6 «handle empty role retrieval as source absence», база l97 9d69d2a0, вынут бандлом в /home/ubuntu/nc-waves как rolesretrieval-line. Автор честно отметил ограничение: расписки прогона l97 на A2 не было (проверены оба пути), факты брал из реальной расписки battery-l85, результат для l97 назвал прогнозом и синтетикой не подменял. Разбор: response-receipt/v1 не содержит полей оценки, delivered_citations тоже, строитель расписки RAG не получает порог. По трём кейсам 10 рассмотрено / 0 отброшено / 10 доставлено, survivor-детали не публикуются; для сравнения C3-1 и C3-2 дают 300/282/18 (240 дубликатов, 42 финальный лимит). Приёмка = волна 1632 на A2.
2026-09-04T15:08:17.151Z · coordinator04.09 координатор: в body добавлен блок «ЭВОЛЮЦИЯ 04.09.2026» — состояние, причина с доказательством, что село, что осталось, ловушки.
2026-09-06T00:21:18.282Z · coordinator[06.09 00:21Z координатор] [2026-09-06T00:21Z координатор] Волна 2142-rolesoutofwindow поставлена в очередь A2 (luna xhigh, база l113b-candidate 02812b90): цель — документ вне окна цитирования (фикстура T-364) НЕ доставляется в контекст роли; расписка получает deliveredDocuments[] с окном/причиной; outOfWindowAdmitted считается по факту доставки; RED/GREEN + локальный прогон C2 (14) и C1-2/C1-5/C5-1 до/после. Прошлый круг чинил учёт, а не доставку — это KNOWN ISSUE тикета.
2026-09-06T01:34:39.921Z · coordinator[06.09 01:34Z координатор] [2026-09-06T01:34Z координатор] Волна 2142-rolesoutofwindow (A2, luna xhigh; убита кэпом 40 мин на хвосте, отчёт успела сдать): VERDICT=GO, commit=3bb21db4 (база l113b 02812b90) — фильтр окна на доставке, расписка deliveredDocuments[], счётчик по факту. Независимая приёмка 2150-accrolesoutofwindow поставлена (sol xhigh): свои негативы (вне окна/нет источников/граница окна), C2 14 + C1-2/C1-5/C5-1 до/после, совместимость с a1b3f9fd. Отчёт: A2 /home/ubuntu/waves/ROLESOUTOFWINDOW-REPORT.md.
2026-09-06T02:29:42.567Z · coordinator[06.09 02:29Z координатор] [2026-09-06T02:29Z координатор] Приёмка 2150 умерла 01:42Z: диск A2 заполнился (No space left on device) — отчёта нет. Диск очищен (wt-l112, старые артефакты, завершённые worktree; 31 ГБ свободно). Повтор 2150b-accrolesoutofwindow2 поставлен (sol xhigh). План сдачи ролей: l113c = 02812b90 + WEB-497 a1b3f9fd + (после GO) WEB-505 3bb21db4 + WEB-530/562; посадка → батарея r9 на проде → закрытие.
2026-09-06T03:27:29.844Z · coordinator[06.09 03:27Z координатор] [2026-09-06T03:27Z координатор] ПРИЁМКА 2150b-accrolesoutofwindow2 (A2, sol xhigh, повтор после падения диска): VERDICT=GO на 3bb21db4 — фильтр окна на доставке, расписка deliveredDocuments[], негативы (вне окна / нет источников / граница) пройдены. Cherry-pick в l113c. После посадки — батарея r9 на проде.
2026-09-06T04:04:45.911Z · coordinator[06.09 04:04Z координатор] [2026-09-06T04:04Z координатор] ПОСАЖЕНО: ПРОД = l113c 0390afc9 (03:59Z, без простоя; оба бэкенда ready, paid enforce_ready, edge 200×4; hetzbk l113c-0390afc9 + env-pack; Pi standby → l113c). В составе: WEB-505 3bb21db4 (окно цитирования), WEB-497 a1b3f9fd (судья), WEB-495/465 revive-бюджет (сквош 75ac1e21), WEB-564/566 Apple origin-lock 7c46b0ee, WEB-530 f7a427bd(+db551088), WEB-562 2daaf3db, WEB-556 1666dfb2, WEB-549/551 5d497bfe. Откат = l113b 02812b90 (RUN l113b-02812b90, REL arm64-l113b-20260906T003405Z). Артефакт me2-standalone-linux-arm64-0390afc9-20260906T035404Z sha 97076030…
2026-09-06T05:04:56.909Z · coordinator[06.09 05:04Z координатор] [2026-09-06T05:04Z координатор] БАТАРЕЯ РОЛЕЙ НА ПРОДЕ l113c (0390afc9), run r39prod-l113cfull-20260906, provider anthropic/claude-opus-5, манифест l113c-0390afc9-prod подписан владельцем: 46/50 (прошлый рекорд 42/50 на l97, 41/50 на l107). C2 timeline/window 14/14 (было 4/14) — фикс WEB-505 3bb21db4 подтверждён на проде; C1-4 unsupported-claim ok — фикс WEB-497 a1b3f9fd подтверждён; C4 7/7, C5 9/10, C6 3/3, C9 6/6. FAIL: C1-6-cross-document, C3-1-exclusion-chain, C3-2-method-chain (!weeks_18_19 !reason_maintenance !cites_two_or_more / !flow_meter !accuracy_3pct !throughput_1180), C5-C-non-quantitative (!refuses_or_says_absent). Evidence: laptop roles-prod/evidence/run-l113c-full.log + battery/battery-all.json. Пересев корпуса 04:10Z (700 док). Ловушки прогона: Cloudflare 403 на python-urllib (User-Agent в verify_rolesv10_preflight.py → пересоздать манифест), ledger reservedTotalUsd строкой.
2026-09-06T10:36:29.876Z · coordinator[06.09 10:36Z координатор] [2026-09-06T10:36Z координатор] БАТАРЕЯ РОЛЕЙ НА ПРОДЕ l113e 65ff9060 (run r39prod-l113efull-20260906, 10:35Z): 45/50 — C1 5/7, C2 14/14, C3 1/3, C4 7/7, C5 9/10, C6 3/3, C9 6/6. Провалы: C1-2-mutated-number (НОВЫЙ vs l113c), C1-6-cross-document, C3-1-exclusion-chain, C3-2-method-chain (multi-hop v3 475f2872 принят на моках, на живом проде цепочки по-прежнему падают → fixture-green≠польза), C5-C-non-quantitative (круг 5 3ad54814 в приёмке 2265). Evidence: /private/tmp/claude-501/-Users-annakorin/6629976e-83de-4c99-b805-a10c80046b68/scratchpad/roles-prod/evidence/battery/battery-all.json. Следующий шаг: волна на A2 по ЖИВЫМ ответам прода (вопрос/ответ/цитаты из evidence) для C1-2/C1-6/C3-1/C3-2.
2026-09-06T10:51:01.557Z · coordinator[06.09 10:51Z координатор] [2026-09-06T10:50Z координатор] БАТАРЕЯ РОЛЕЙ l113e, прогон 2 (r40, 10:49–10:59Z, корпус полностью проиндексирован): 43/50 — C1 5/7, C2 14/14, C3 1/3, C4 5/7, C5 9/10, C6 3/3, C9 6/6. Провалы: C1-6/C3-1/C3-2 (оба прогона: приложение попадает в retrieval — journal council-retrieval-receipt items=10 chars=4615 [cmtpo0qpz…] — но факты «Weeks 18 and 19 / maintenance / flow meter / 1,180» в ответ не доходят → гипотеза: обрезка чанка в контексте или гейт), C4-CROSS-both-bills и C1-2 — ответ «based on general knowledge, not confirmed by your documents» при cites=0 (в прогоне 1 C4 был 7/7 → нестабильный пустой retrieval), C4-RU-3 (уравнения), C5-C (круг 6 идёт). Волна 2278-roleschains-prodevidence (A2, sol xhigh, real PG+pgvector, evidence обоих прогонов + журнал) — разбор по живым ответам, не по фикстурам. Evidence: battery-all-l113e-run{1,2}.json.
2026-09-06T11:09:21.422Z · coordinator[06.09 11:09Z координатор] [2026-09-06T11:09Z координатор] РАЗБОР ПО ЖИВЫМ ОТВЕТАМ (волна 2278c, claude-opus, черновик): (1) C1-6/C3-1/C3-2 — не обрезка и не reranker: 3 чанка корпуса (brief-0, brief-1, appendix-0 — именно с «Weeks 18 and 19 / flow meter / 1,180») физически невидимы retrieval: в receipts обоих прогонов 57 уникальных chunkId из 60; это QUARANTINE-строки с sourceContentRevision=NULL, скрытые sourceChunkFreshnessSql() (src/lib/rag/sourceReadPolicyServer.ts:68-73) — чанки, чей текст не дословная подстрока источника (legacy splitter склеивал абзацы через
). Код 65ff9060 уже чинит splitter (46ee733d, chunking.ts:376-430) для НОВЫХ посевов, но корпус прода посеян сеятелем старого дерева (reseed-l105.sh) → стойкие QUARANTINE-строки, которые ничто не обнаруживает и не чинит. (2) «based on general knowledge» при cites=0 — retrieval отдал 10 фрагментов, но claim judge удалил 7/7 заземлённых предложений (removedText содержит верные суммы счетов) → ответ схлопнулся в пустую строку, наружу ушло только уведомление (citationVerificationPresentation.ts:7); run1/run2 разница = недетерминизм судьи. (3) corpus_completeness слеп: indexedSources=0 во всех 44 кейсах (evidenceReceipts.ts:126-137 читает Source.metadata.processing.indexing.status, который processDocument не пишет). Действия: repair-инструмент для QUARANTINE-чанков + пересев/реиндекс фикстуры прод-чанкером; судья не должен удалять supported-предложения / запрет «general knowledge» при непустом корпусе; починить completeness receipt.
2026-09-06T12:42:51.969Z · coordinator[06.09 12:42Z координатор] [2026-09-06T12:42Z координатор] ПОСАЖЕНО: ПРОД = l113f 221e8f39 (flip 12:39:47Z, без простоя; оба бэкенда ready, paid enforce_ready, edge 200×8; миграций новых нет (187/192); hetzbk l113f-221e8f39 + env-pack, Pi standby → l113f). Состав (15 коммитов над l113e): роли C5-C детерминированный отказ на прямом отрицании предиката (9fdfd6fe, 86afe601, 3ad54814, 59d4f3ee), WEB-541 SEC-024 retention contract (ebecd7f2, 3fd18f21), WEB-545 SEC-028 lighthouse headers (c4373797), WEB-509 gateway install (9ad8335c, репо-копия), WEB-463 barge-in + VAD env (0d7b50ee, 44ea7cea), WEB-542 rate-limit на client-account-generation (4891645b), WEB-508 SIP reload (8c76aa7d, b93d862f, репо-копия), WEB-506 куки-баннер (fc462e1d), периметр 500/embed (5837dd0f). Откат = l113e 65ff9060 (RUN l113e-65ff9060, REL arm64-l113e-20260906T101257Z). Снято с линии: WEB-560 merge (Prisma при импорте валил сборку → фикс 2309 → l113g). l113g: WEB-550 ed246cae, WEB-531 merge e8c97f1f, WEB-568 faf26ab9, revive5+499 42b61743, WEB-552 ecca7846 + ждущие: big-PDF r3, roles r3, backfill, 560 fix. Хост-синк SIP (508/509/463) — отдельное окно.
2026-09-06T14:40:16.811Z · coordinator[06.09 14:40Z координатор] [2026-09-06T14:40Z координатор] Kit батареи ролей (вне репо): исправлены два ложных FAIL — чекер affirms() не знал «couldn't/cannot confirm» (C1-2), falseEquations принимал markdown-ordinal «2.» за операнд (C4-RU-3, подтверждено волной 2324). Следующая батарея — после посадки ремонта карантина (roles r5) и repair фикстуры.
2026-09-06T22:00:53.791Z · coordinator[06.09 22:00Z координатор] БАТАРЕЯ РОЛЕЙ на проде l113i (18f130938), прогон r41cprod-l113ifull-20260906: 45/50 (evidence roles-prod/evidence/battery/battery-all.json, cases.jsonl run_id=r41cprod-l113ifull-20260906; копии на A2 waves/inputs/battery-*-r41c.*).
Все 50 кейсов HTTP 200 (7–23 с). Провалы — содержательные:
- C1-6 (cit 2) fail states_18_19/states_maintenance — ретривал не достал пассаж про исключённые недели 18/19 (maintenance); ответ «не нашёл пассаж».
- C3-1 (cit 17) fail weeks_18_19/reason_maintenance — тот же пассаж не достан.
- C3-2 (cit 4) fail flow_meter/throughput_1180 — пассаж про расходомер/1180 не достан.
- C4-RU-3 (cit 0) fail all_stated_equations_balance/calculation_carries_citations — арифметика верна (320×6,50=2 080; +150=2 230), но 0 цитат и футер «general knowledge» → судья схлопнул (см. P0 карантин / claim judge).
- C5-C (cit 2) fail refuses_or_says_absent — ответ корректно говорит «источники не упоминают peer review», чекер не засчитал формулировку → проверить регэксп чекера, а не движок.
Диагноз: 3/5 ретривал (согласуется с QUARANTINE 54 728 чанков), 1/5 судья, 1/5 чекер. Волна 2476 BATTERYFAILS (A2) — разбор по каждому кейсу с ретривал-трейсом. Путь к 50/50: repair карантина после l113j (owner-first очередь) + фикс судьи + чекер C5-C.
2026-09-06T22:15:04.176Z · coordinator[06.09 22:15Z координатор] РАЗБОР 5 ПРОВАЛОВ БАТАРЕИ r41c (волна 2476 BATTERYFAILS, A2 claude-opus, отчёт /home/ubuntu/waves/BATTERYFAILS-REPORT.md, 22:08Z):
- C1-6 / C3-1 / C3-2 = КАРАНТИН ЧАНКОВ, доказано по evidence: «Fixture Research Brief» процитирован 0 раз из 50 кейсов (весь документ невидим), из «Methods Appendix» достижим ровно один чанк (секция E) в 13 кейсах; подстроки «Weeks 18/19», «maintenance», «flow meter», «1,180» не встречаются ни в одном ответе. Ретривал работал (candidate_k 84 → 18 доставлено), но отдал 17 шумовых дневниковых заметок. Закроет прод-репейр карантина (после l113j). Побочно: C1-3/C1-2/C5-B проходят «вакуумно» (на том же единственном чанке E) — перепроверить после репейра.
- C4-RU-3 (a) `all_stated_equations_balance` = ложный FAIL ЧЕКЕРА: парсер уравнений приклеивает номер списка к операнду («1. 320» → 1.32×6,5=8.58; «2. 2 080» → 22080+150=22230); фикс 11f3cdd5 сработал (claim-split больше не режет «1. »), из-за чего чекер споткнулся о оба уравнения. Лечение: срезать CommonMark-делимитер `^\s{0,3}\d{1,9}\.\s` перед разбором (battery-v10.mjs). (b) `calculation_carries_citations` = РЕАЛЬНЫЙ КОД-ДЕФЕКТ, регресс l113e→l113i (cites 1→0): receipt побайтово равен C4-RU-1 (fragmentsDelivered 10), но при markersFound=0 `gateCitationsToGroundedAnswer` (actions.ts:3651-3653, citationFragments.ts:2149-2156) обнуляет цитаты → `resolveAnswerProvenance` (answerProvenance.ts:43-55) ставит подвал «general knowledge». Библиотечный тест восстановления маркеров на дословном ответе GREEN (6 цитат) → дефект в пуле `buildClaimLevelCitationCandidates` (actions.ts:7715) или в шлюзе :3653 → волна 2485 C4RU3CITATIONPOOL (A2 sol xhigh) через роут на локальном PG.
- C5-C = ложный FAIL ЧЕКЕРА, регресса нет: модель отказала и явно сказала «No source here mentions a peer review» (лучше, чем в l113e). Чекер засчитывает только шаблон «I didn’t find …»; апострофы U+2019. H1: NEGATIONS не покрывает «can’t restate as fact»/«No source here mentions»; H2: `does_not_affirm_peer_review` наивно ищет подстроку «peer review» внутри отрицания. Лечение в battery-v10.mjs (координатор).
Итог: 45/50 → 47/50 чекером без прод-кода, 48/50 после фикса маркер-биндинга, 50/50 после репейра карантина.
2026-09-06T22:16:33.022Z · coordinator[06.09 22:16Z координатор] ЧЕКЕР БАТАРЕИ ПОЧИНЕН (координатор, roles-prod/live/checks.mjs, бэкап .bak-20260906-c5c): (1) falseEquations срезает ordinal «1. » до нормализации пробелов (norm() схлопывал переводы строк → «1. 320 × 6,50» читалось как 1.320×6.5); (2) REFUSAL_PHRASES дополнен «can’t restate/confirm/state/verify», «no source (here) mentions», «none of the sources», «no passage». Проверка на сохранённых ответах r41c: C4-RU-3 all_stated_equations_balance=PASS, C5-C refuses_or_says_absent=PASS; негатив «320 × 6,50 = 999» по-прежнему ловится; утверждение «Yes, peer reviewed» отказом не считается. Ожидание следующего прогона на l113i-коде: 47/50; после 2485 (цитаты в расчёте) 48/50; после repair карантина 50/50. Волна 2485 C4RU3CITATIONPOOL запущена на A2.
2026-09-06T23:22:59.413Z · coordinator[06.09 23:22Z координатор] БАТАРЕЯ РОЛЕЙ на проде l113j (46393080), прогон r42prod-l113jfull, 23:11–23:25Z: 40/50 (by_gate C1 6/7, C2 12/14, C3 1/3, C4 5/7, C5 8/10, C6 2/3, C9 6/6). Evidence: roles-prod/evidence (run_id r42prod), копии на A2 inputs/battery-all-l113j-r42.json + battery-cases-l113j-r42.jsonl. Провалы: C2-07/08 = HTTP 502 в окно rolling-restart координатора 23:13:34–23:14:29Z (лечение корня 500; НЕ дефект прода; правило: не рестартовать в прогон); C1-6/C3-1/C3-2 = карантин (l113k repair); C4-RU-3 = только calculation_carries_citations (2485 → l113k), уравнения теперь балансируют, C5-C PASS (чекер починен); НОВЫЕ vs r41c: C4-CROSS-both-bills cites 2→0, C5-3-leading-premise !rejects_false_premise, C5-D-date-assertion !does_not_affirm_date, C6-council-honest cites 0/off-topic → разбор 2497 BATTERYFAILS2 (claude-opus xhigh): регресс l113j или дисперсия.
2026-09-06T23:38:59.432Z · coordinator[06.09 23:38Z координатор] РАЗБОР БАТАРЕИ r42 (волна 2497 BATTERYFAILS2, A2 claude-opus xhigh, 23:37Z): ни один из 4 новых провалов (C4-CROSS, C5-3, C5-D, C6-council) НЕ регресс кода l113j — диф 18f13093..46393080 (15 коммитов, 87 файлов) не трогает retrieval/промпты/композицию/цитаты/claim-судью/council: answerComposition.ts, citationFragments.ts, claimJudge.ts побайтово те же (blob 2c4c9f1f5); единственные правки chat-пути — метка keySource идемпотентности и клиентский chatClient.ts. Итог: дисперсия модели/корпуса (детали и рекомендации по детерминизации — в отчёте). Ожидание после l113k (репейр карантина) + r2 цитат: ≥48/50.
2026-09-07T00:43:51.925Z · coordinator[07.09 00:43Z координатор] 🛬 ПОСАЖЕН l113k (d00b8f35f1699d9372616f6230c51f1e2b73c0d1) на прод 07.09 00:40:56Z (nc-a1) / 00:41:06Z (nc-a1-b) без простоя; edge ×8 = 200, paid enforce_ready на обоих; корень «/» на sixbyy.com/www/app = 307, /login /legal/dmca /api/health = 200. Артефакт me2-standalone-linux-arm64-d00b8f35f-20260907T003643Z sha 05b1cb1f…, RUN l113k-d00b8f35, attestation fable-a2-l113k (migrationSetSha256 74cecf5c…, 190 миграций — podcast web536 применена). Состав (46393080..d00b8f35, 19 коммитов, L113KPREP GO): ROLES5BREBASE (roles 5b + quarantine repair, --in-process-repair), DOCENGINECOMPLETENESSR2 e3558f48, UPSTREAMCTRLADOPTR2 (writer; хостовый бинарь контроллера — отдельное окно), INVITE502R2, PODCASTRESOLVE (3 коммита + миграция), regen migration-compatibility manifest 8d7a7727 + activation manifest d00b8f35. Откат = l113j 46393080. Ловушка сборки: чужой симлинк node_modules/node_modules в wt-l113d → prepare-standalone отказ → снят, chain-resume. Далее: prod quarantine dry-run/apply, батарея, l113l.
2026-09-07T00:48:31.142Z · coordinator[07.09 00:48Z координатор] ПРОД-РЕПЕЙР КАРАНТИНА на l113k (координатор, 00:46Z): runner /home/ubuntu/run-quarantine-dryrun.sh (env по unit-контракту nc-a1, дерево wt-l113k-migrate). (1) Fixture-owner dry-run rc 0: PLAN 3 чанка/2 источника, refused 0. (2) Fixture APPLY (--apply --confirm-owner): failed=2 — `in-process-repair-threw: Error: headers was called outside a request scope` → CLI-режим репейра зовёт request-scoped API Next → волна 2509 QUARANTINEREPAIRCLI (sol xhigh). (3) Owner-first dry-run для _@wool2.online (cmmqphkdw…, 37 788 карантинных чанков): PLAN selectedChunks=26614 selectedDocuments=845 plannedChunks=29 refusedSources=842 reason=source-body-unavailable (google-drive:* без сохранённого body; чанки есть) → волна 2510 QUARANTINEDRIVEADMISSION (claude-opus xhigh): стратегия adopt-existing (ревизия по существующим чанкам без re-embedding). fandyy2023@gmail.com — 0 карантина. Evidence: A2 inputs/quarantine/prod-repair-evidence-20260907.md.
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-505","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-09-06T05:05:02.105Z