WEB-583 · Дефект · — · web
P1 [редактор]: «Could not save changes», прокрутка прыгает в начало большого документа, зависший баннер индексации, три кнопки не работают
Закрыт
P1 · важно
ведёт: —
Суть
## Суть
Четыре дефекта редактора: тост «Could not save changes» при уже сохранённом тексте, прокрутка прыгает в начало большого документа, зависший баннер индексации, три кнопки постоянной панели молча не работают.
## Где мы сейчас (13.09.2026)
Прод = l115j (133fe00c, посажена 13.09 08:50Z). Три дефекта, подтверждённые живьём приёмкой 3613, починены волной 3615 (Claude sonnet, A1, GO по своей области) и посажены l115j: (1) тост «Could not save changes» при уже сохранённом тексте — результат сохранения отделён от результата переиндексации; (2) прыжок прокрутки при автосохранении большого документа (scrollTop 4000→0, 3/3); (3) три молчащие кнопки постоянной панели. Четвёртый симптом (перевод документа) закрыт ранее волной 3221 (0f05b6058). Осталась браузерная перепроверка трёх симптомов на боевом артефакте.
## Хронология
- 09.09: карточка создана с четырьмя editor-дефектами.
- 09.09: перевод починен (3221, 0f05b6058), посажен l114u; прокрутка починена (3266, 16d4de84d), посажена l114v.
- 10–11.09: гонка статусов индексации (баннер) — серия 3442→3489→3492→3495 (HEAD bb43b5fe), посажена l115e; независимая браузерная приёмка много раз упиралась в пропуск built-app тестов.
- 12.09: мойка 3568 — KEEP, нужен живой built-app postQA.
- 13.09: 3605 (браузерная post-QA) → приёмка 3613 NO-GO (доказательства по части симптомов не выдержали); волна 3615 GO починила три дефекта; посажены l115j.
## Карта документов и кода
- src/components/modals/EditorModal.tsx — тост сохранения, автосохранение, панель инструментов.
- src/components/editor/DocumentSurfaceToolbar.tsx — три кнопки постоянной панели.
- src/lib/document-session/… — отделение результата сохранения от результата переиндексации.
- Отчёты: shift-20260912-resume/colE/3605EDITORPOSTQA-*; shift-20260912-resume/3613/collected/3613ACCEPTEDITORPOSTQA-REPORT.md; refs/waves/3615.
- Посадка: l115j (transition-l115j.py flip rc=0; verify 3010/3012 ready 133fe00cb).
## Остаток
1. Браузерная перепроверка ТРЁХ симптомов на боевом артефакте l115j (настоящее приложение, не синтетическая фикстура): тост не появляется при уже сохранённом тексте, прокрутка не прыгает при автосохранении большого документа, три кнопки применяются и сохраняются. Ответственный: одна браузерная волна (бриф в REMAINDER-BRIEFS.md).
## Критерий закрытия
Браузерный прогон на собранном артефакте l115j (реальный Chromium) со скриншотами/trace: 3 симптома проверены end-to-end позитив+негатив, выводы с числами, вердикт GO. До этого карточку не закрывать.
---
## История (старое тело)
---
## Эволюция 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, каждая с браузерной пробой открытия документа на проде.
### Перевод документа — причина найдена и посажена
- **Симптом владельца (08–09.09):** перевод документа не работает.
- **Круг 1 — волна 3213 (r2), вердикт NO-GO, честный.** Гипотеза «валидный env-ключ превращается в пустой» ОПРОВЕРГНУТА: пустое значение корректно отбрасывается, заполненный ключ доходит до SDK без изменений, граница прокси не теряет `authorization`, `x-goog-api-key` и `?key=`. Отчёт `TRANSLATIONEMPTYKEY-REPORT.md` на A2.
- **Урок круга 1:** бриф навязал волне чужую гипотезу, и волна два круга искала не там. Круг 2 писался ОТ СИМПТОМА, без гипотез.
- **Круг 2 — волна 3221, вердикт GO.** Причина в коде, не в окружении: `resolveTranslationComplete()` заранее создавал клиента standard-провайдера, хотя запасной ещё не был выбран. При живом ключе Google и отсутствующих ключах OpenAI/OpenRouter преждевременный резолвер выбрасывал `No AI API keys found.` ДО первого вызова Gemini.
- первый отвергающий слой: `src/lib/ai/editorActionClient.ts:159`, вызванный из `src/app/api/translation/_complete.ts:39`;
- фикс: ленивое создание клиента только при фактическом входе в не-Gemini ветку (`_complete.ts:42–58`, `:92`);
- коммит `0f05b6058 fix(translation): resolve fallback provider lazily`.
- **Явное решение волны:** `OPENAI_API_KEY` добавлять НЕ требуется — это замаскировало бы дефект, при успешном Gemini неиспользуемый запасной вправе не иметь ключа.
- **Посажено:** линия l114u, прод с ~20:0xZ. Сухой прогон перед флипом: `paidReady=true`, живой запрос в чат `http=200`.
### Прыжок прокрутки при автосохранении больших документов (второй симптом этого же тикета)
- **Симптом владельца:** открыл «Франкенштейна», прокручивал и форматировал — подняло в начало файла.
- **Волна 3266 на M4**, коммит `70bba9b1a`, бандл `3266-bigdoc-autosave-scroll-jump.bundle`. Собрана в линию l114v (строится).
- Приёмка на Клоде — бриф 3270 на Нео, требование: отдельно доказать, что НЕ теряются несохранённые правки и что честный отказ перезаписать документ из другой вкладки сохранён.
**Статус 09.09 22:4xZ → review.** перевод посажен в l114u (0f05b6058); прыжок прокрутки посажен в l114v (16d4de84d); ЖДЁТ независимой приёмки на Клоде, второй круг идёт
---
## Обновление 10.09 утро — состояние и статус
**Живой прод:** l114v `76f02b486189d481ebdeb7735580481d60ff205d`. Откат: l114u `54243a5cff19ef2bacf2531a0951b7bb82a71633`.
**Собирается:** l114w с принятым гейтом схемы P19.
**Документ эпика (обновлён):** https://bugs.wool2.online/labs/enterprise-ent093-20260909.html
### Книга: фикс, который я посадила, оказался ПУСТЫМ
Приёмка доказала тремя способами: снятый код был уже мёртв (`resolveClientApiKeys` возвращает `undefined` безусловно с коммита `3def9644`), заголовок никогда не отправлялся, воспроизводимый автором 403 из браузера недостижим; независимый тест даёт 3/3 одинаково до и после; ответ маршрута побайтово одинаков (`200`, `fallback: true`, «no OpenAI key was available in this session», длина 294).
Коммит `76f02b486` не откачен: он снял мёртвый код, вреда нет, пользы тоже. **Баг владельца остаётся на проде.**
Волна 3273 (вершина `e26b1ad35`) отработала по настоящей зацепке — книга, вероятно, генерируется локальной заглушкой вместо модели. Приёмка идёт на M4.
Перевод (`0f05b6058`) и прокрутка больших документов (`16d4de84d`) — на проде, приёмка прокрутки GO.
FILL-2104:3381:active
Проверено 2026-09-10T21:10:06.758266+00:00. Волна 3381, A1, состояние active. Живая tmux pane и свежий журнал подтверждены. Exact BASE 1ad52e16b784d3ae80a148fddae4d5a3ab4a89c4. Входы SHA256 и bundle ref проверены перед dispatch. Бриф Intel nc-ops-scripts/fill-slots-20260910-2104/3381-editor-index-state-brief.md. Сдача /home/wave/waves/3381EDITORINDEXSTATE-REPORT.md. Посадки/окончательной приёмки этой работы нет.
REFILL-20260910-2155-3414
Снимок 2026-09-10T21:54:52.066911+00:00. Волна 3414 / acc-editor-index-state на A2: active. Оператор Codex, модель gpt-5.6-luna. Живой процесс подтверждён; возраст журнала 24 с. Входы /home/ubuntu/waves/inputs/3414-acc-editor-index-state; SHA256 и exact BASE bbc38f0f8918530ae5f53c0e551ef172d8f794d9 проверены при доставке. Новых посадок и измерений capacity нет; source QA не означает окончательное закрытие Security.
REFILL-2221-RESULTS-WEB-583
Снимок 2026-09-10T22:27:17.204978+00:00
3414 NO-GO: поздний ответ статуса revision17 помечает revision18 ready. Реальный React hook/store harness 4/6, существующие54/54. Доработка3430.
Волна 3430 a1nc gpt-5.6-terra: active (дочерний процесс подтверждён, журнал 36 с); exact BASE 5365f71bb51dd042b53ba04f719446c9fb438777; inputs /home/wave/waves/inputs/3430-editor-revision-epoch
Новой посадки этим тиком нет. Evidence: nc-ops-scripts/refill-20260910-2221/.
SLOTS12-BATCH3442-3461-WEB-583
2026-09-10T22:50:05.652264+00:00 Лимиты A1/A2 подняты до12; действовавшие worker panes сохранены. Волна 3442 a1nc active acc-editor-epoch-final; BASE cdbcc741353e70bfd57ce39f97096d4f4f45d55a; model gpt-5.6-luna
Брифы прошли guard; входные report/history/raw/bundle переданы и SHA проверены до очереди. Source/QA scope, посадки и measured capacity не заявляются.
---
## история (тело до 13.09.2026)
---
## Эволюция 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, каждая с браузерной пробой открытия документа на проде.
### Перевод документа — причина найдена и посажена
- **Симптом владельца (08–09.09):** перевод документа не работает.
- **Круг 1 — волна 3213 (r2), вердикт NO-GO, честный.** Гипотеза «валидный env-ключ превращается в пустой» ОПРОВЕРГНУТА: пустое значение корректно отбрасывается, заполненный ключ доходит до SDK без изменений, граница прокси не теряет `authorization`, `x-goog-api-key` и `?key=`. Отчёт `TRANSLATIONEMPTYKEY-REPORT.md` на A2.
- **Урок круга 1:** бриф навязал волне чужую гипотезу, и волна два круга искала не там. Круг 2 писался ОТ СИМПТОМА, без гипотез.
- **Круг 2 — волна 3221, вердикт GO.** Причина в коде, не в окружении: `resolveTranslationComplete()` заранее создавал клиента standard-провайдера, хотя запасной ещё не был выбран. При живом ключе Google и отсутствующих ключах OpenAI/OpenRouter преждевременный резолвер выбрасывал `No AI API keys found.` ДО первого вызова Gemini.
- первый отвергающий слой: `src/lib/ai/editorActionClient.ts:159`, вызванный из `src/app/api/translation/_complete.ts:39`;
- фикс: ленивое создание клиента только при фактическом входе в не-Gemini ветку (`_complete.ts:42–58`, `:92`);
- коммит `0f05b6058 fix(translation): resolve fallback provider lazily`.
- **Явное решение волны:** `OPENAI_API_KEY` добавлять НЕ требуется — это замаскировало бы дефект, при успешном Gemini неиспользуемый запасной вправе не иметь ключа.
- **Посажено:** линия l114u, прод с ~20:0xZ. Сухой прогон перед флипом: `paidReady=true`, живой запрос в чат `http=200`.
### Прыжок прокрутки при автосохранении больших документов (второй симптом этого же тикета)
- **Симптом владельца:** открыл «Франкенштейна», прокручивал и форматировал — подняло в начало файла.
- **Волна 3266 на M4**, коммит `70bba9b1a`, бандл `3266-bigdoc-autosave-scroll-jump.bundle`. Собрана в линию l114v (строится).
- Приёмка на Клоде — бриф 3270 на Нео, требование: отдельно доказать, что НЕ теряются несохранённые правки и что честный отказ перезаписать документ из другой вкладки сохранён.
**Статус 09.09 22:4xZ → review.** перевод посажен в l114u (0f05b6058); прыжок прокрутки посажен в l114v (16d4de84d); ЖДЁТ независимой приёмки на Клоде, второй круг идёт
---
## Обновление 10.09 утро — состояние и статус
**Живой прод:** l114v `76f02b486189d481ebdeb7735580481d60ff205d`. Откат: l114u `54243a5cff19ef2bacf2531a0951b7bb82a71633`.
**Собирается:** l114w с принятым гейтом схемы P19.
**Документ эпика (обновлён):** https://bugs.wool2.online/labs/enterprise-ent093-20260909.html
### Книга: фикс, который я посадила, оказался ПУСТЫМ
Приёмка доказала тремя способами: снятый код был уже мёртв (`resolveClientApiKeys` возвращает `undefined` безусловно с коммита `3def9644`), заголовок никогда не отправлялся, воспроизводимый автором 403 из браузера недостижим; независимый тест даёт 3/3 одинаково до и после; ответ маршрута побайтово одинаков (`200`, `fallback: true`, «no OpenAI key was available in this session», длина 294).
Коммит `76f02b486` не откачен: он снял мёртвый код, вреда нет, пользы тоже. **Баг владельца остаётся на проде.**
Волна 3273 (вершина `e26b1ad35`) отработала по настоящей зацепке — книга, вероятно, генерируется локальной заглушкой вместо модели. Приёмка идёт на M4.
Перевод (`0f05b6058`) и прокрутка больших документов (`16d4de84d`) — на проде, приёмка прокрутки GO.
FILL-2104:3381:active
Проверено 2026-09-10T21:10:06.758266+00:00. Волна 3381, A1, состояние active. Живая tmux pane и свежий журнал подтверждены. Exact BASE 1ad52e16b784d3ae80a148fddae4d5a3ab4a89c4. Входы SHA256 и bundle ref проверены перед dispatch. Бриф Intel nc-ops-scripts/fill-slots-20260910-2104/3381-editor-index-state-brief.md. Сдача /home/wave/waves/3381EDITORINDEXSTATE-REPORT.md. Посадки/окончательной приёмки этой работы нет.
REFILL-20260910-2155-3414
Снимок 2026-09-10T21:54:52.066911+00:00. Волна 3414 / acc-editor-index-state на A2: active. Оператор Codex, модель gpt-5.6-luna. Живой процесс подтверждён; возраст журнала 24 с. Входы /home/ubuntu/waves/inputs/3414-acc-editor-index-state; SHA256 и exact BASE bbc38f0f8918530ae5f53c0e551ef172d8f794d9 проверены при доставке. Новых посадок и измерений capacity нет; source QA не означает окончательное закрытие Security.
REFILL-2221-RESULTS-WEB-583
Снимок 2026-09-10T22:27:17.204978+00:00
3414 NO-GO: поздний ответ статуса revision17 помечает revision18 ready. Реальный React hook/store harness 4/6, существующие54/54. Доработка3430.
Волна 3430 a1nc gpt-5.6-terra: active (дочерний процесс подтверждён, журнал 36 с); exact BASE 5365f71bb51dd042b53ba04f719446c9fb438777; inputs /home/wave/waves/inputs/3430-editor-revision-epoch
Новой посадки этим тиком нет. Evidence: nc-ops-scripts/refill-20260910-2221/.
SLOTS12-BATCH3442-3461-WEB-583
2026-09-10T22:50:05.652264+00:00 Лимиты A1/A2 подняты до12; действовавшие worker panes сохранены. Волна 3442 a1nc active acc-editor-epoch-final; BASE cdbcc741353e70bfd57ce39f97096d4f4f45d55a; model gpt-5.6-luna
Брифы прошли guard; входные report/history/raw/bundle переданы и SHA проверены до очереди. Source/QA scope, посадки и measured capacity не заявляются.
Доказательства
WASH3331-RECEIVED:WEB-583
/Users/annakorin/nc-ops-scripts/board-wash-20260910/3331WASHEDITOR-REPORT.md
SHA256 33c638d0b3795afa57feac9db5c6d6ae6afea7ed6f9ab9a81c9ec70c0c18879f
FILL-2104:3381:active
Проверено 2026-09-10T21:10:06.758266+00:00. Волна 3381, A1, состояние active. Живая tmux pane и свежий журнал подтверждены. Exact BASE 1ad52e16b784d3ae80a148fddae4d5a3ab4a89c4. Входы SHA256 и bundle ref проверены перед dispatch. Бриф Intel nc-ops-scripts/fill-slots-20260910-2104/3381-editor-index-state-brief.md. Сдача /home/wave/waves/3381EDITORINDEXSTATE-REPORT.md. Посадки/окончательной приёмки этой работы нет.
REFILL-20260910-2155-3414
Снимок 2026-09-10T21:54:52.066911+00:00. Волна 3414 / acc-editor-index-state на A2: active. Оператор Codex, модель gpt-5.6-luna. Живой процесс подтверждён; возраст журнала 24 с. Входы /home/ubuntu/waves/inputs/3414-acc-editor-index-state; SHA256 и exact BASE bbc38f0f8918530ae5f53c0e551ef172d8f794d9 проверены при доставке. Новых посадок и измерений capacity нет; source QA не означает окончательное закрытие Security.
REFILL-2221-RESULTS-WEB-583
Снимок 2026-09-10T22:27:17.204978+00:00
3414 NO-GO: поздний ответ статуса revision17 помечает revision18 ready. Реальный React hook/store harness 4/6, существующие54/54. Доработка3430.
Волна 3430 a1nc gpt-5.6-terra: active (дочерний процесс подтверждён, журнал 36 с); exact BASE 5365f71bb51dd042b53ba04f719446c9fb438777; inputs /home/wave/waves/inputs/3430-editor-revision-epoch
Новой посадки этим тиком нет. Evidence: nc-ops-scripts/refill-20260910-2221/.
SLOTS12-BATCH3442-3461-WEB-583
2026-09-10T22:50:05.652264+00:00 Лимиты A1/A2 подняты до12; действовавшие worker panes сохранены. Волна 3442 a1nc active acc-editor-epoch-final; BASE cdbcc741353e70bfd57ce39f97096d4f4f45d55a; model gpt-5.6-luna
Брифы прошли guard; входные report/history/raw/bundle переданы и SHA проверены до очереди. Source/QA scope, посадки и measured capacity не заявляются.
CHECKPOINT3490:WEB-583 2026-09-11T00:21:57.481659+00:00
3442 independent NO-GO: older terminal poll response after newer pending poll within SAME notebook/source/revision sets false ready. Independent2/3; inherited62/62 does not close this new defect. Exact QA head f42ee736248bd77bb57cba48fe962f74dbdb1ecf. Repair3489 delivered after guard/input hashes/BASE validation and confirmed running on A2; no repair verdict yet. Evidence: refill-wash-3489, original3442 REPORT and raw evidence. Source/live/release closure pending.
CHECKPOINT3492:WEB-583 2026-09-11T00:32:55.179360+00:00
3489 author GO dd0ce616a9930fb3736b47e4d3fe032b141a9be2: прежний RED2/3 -> GREEN3/3, всего77/77; sequence fence в useExtractionProgress, inherited tests unchanged. Exact bundle/head/clean/SHA сохранены. Независимая функциональная3492 подтверждена RUNNING на A1; проверяет parse ordering, late errors, switch/close/reopen, bounded timer и liveness медленных ответов. Независимого verdict/live/посадки пока нет. Evidence: checkpoint-3492/snapshot.json и полный3489 report, refill-editor-3492/3492-receipt.json.
CHECKPOINT3493:WEB-583 2026-09-11T00:51:25.833863+00:00
3492 independent component GO, HEAD 588d8071cbdfed7bf75e107c9f7f5c09c9bd02e1; SHA256 2756da7047b7878af6ed6471b73beb92833263c0785bb01e599958ba8ac97a6d. Report records unchanged historical77/77 and new real React/Zustand6/6; product unchanged by reviewer. Bundle/head/clean/SHA verified and copied. 3495 now RUNNING on A1, merges accepted editor with wash3490 preserving ancestry. l115d currently builds wash3490 only on A2; editor not in that frozen build. Live/browser/landing pending. Evidence: checkpoint-3493/snapshot.json, full 3492ACCEDITORPOLLORDERFINAL-REPORT.md, wash-editor-3495/3495-receipt.json.
CHECKPOINT3495:WEB-583 2026-09-11T01:03:52.179845+00:00
3495 source/component integration GO: exact editor588d8071cbdfed7bf75e107c9f7f5c09c9bd02e1 and washba4aa1c219625df95035cd1eb9653d9a6b0c4903 merged without conflicts, combined HEAD bb43b5fe20398309b3b373df3c00fa1d3040397d. Bundle/clean/head/SHA verified and copied. Raw logs independently checked: editor89 + Drive14 + sync17 + planner10 =130/130, zero failures/skips; report89 is editor subtotal only. No Prisma, package/lock or activation changes. Raw SHA 7ae4fca91dc91741803923b98e8188ea6d19a5bbcda3946004f1f762e3ff4dc9. l115d contains wash3490 only; combined editor candidate awaits next build and live/browser post-QA. Historical document repair remains open. Evidence: checkpoint-3495/{snapshot.json,test-count-verification.json,raw-evidence.tar.gz,3495WASHEDITORINTEGRATION-REPORT.md}; A1 /home/wave/waves/3495WASHEDITORINTEGRATION-evidence/.
SHIFT3502:WEB-583 2026-09-11T01:31:25.453329+00:00
l115e started on A2 PID2926768, exact sourcebb43b5fe20398309b3b373df3c00fa1d3040397d. Private dependencies,281 relocated wrappers, live13 NEXT_PUBLIC flags, tree/disk preflight passed. Prisma/P19/schema3017/activation passed; prebuild running at01:29 UTC, no PACK_OK or landing yet.3503 RUNNING Neo prepares actual browser failure/order checks with synthetic fixtures; harness source completion will not count as executed browser post-QA. Previous completed build.next archived to M4Ext with tar compare and SHA6a0acd06505ad406799e7948520ec264a6883b14d4c31c65c61b607dc5c49a57 before removal. release-l115e/build-start.json and old-build-archive.json.
CHECKPOINT3505:WEB-583 2026-09-11T01:50:34.398161+00:00
3503 source harness delivered. Browser launch failed because Chromium absent; no browser assertions or built-app checks executed. l115e is a separate pending release. Do not mark browser post-QA passed. Coordinator verified and preserved bundle/head/clean/SHA: 63bfd055230e60e44d4376a9c084245ff40cd2fc / e4649ff6a1df7501eec3950cef181b427bf0a34b808dfabfbca5874e6d63ac56. Evidence archive members=10; SHA256=0c360a4f48aee38596c841ab24502ef9f0a782f6dad630aa2649708bf016e2c1. Receipts: checkpoint-3505/snapshot.json and snapshot-3504.json.
LANDING115E:WEB-583 2026-09-11T02:01:10.157440+00:00
l115e landed 2026-09-11 01:59 UTC. Source bb43b5fe20398309b3b373df3c00fa1d3040397d; artifact SHA256 156323c694a6854b6207ee2b6dcd101abba99b67c384cc6282e10d098c9eb357. Both live backends independently confirmed exact source, ready=true and paidReady=true/enforce_ready at 02:00 UTC. Build/signature/negative signature/dryrun/four-unit path gates passed; chat and distance HTTP200. Browser opened one of58 fixture documents, editor surfaces present, zero new errors after opening. Initial load recorded three aborted RSC requests and admin/agents403 plus console error; clean console not claimed. SIP readiness200, LEASE_LOST0, no SIP restart. Ships accepted editor3495 atop wash3490. Feature-specific browser3503, real provider OAuth, historical351/135 repair, capacity and Security26 remain open. Rollback: prod/shared/pre-l115e-units to l115d. Evidence: release-l115e/l115e-{dryrun,flip,live-postqa,editor-postqa}.log.
SHIFT3506:WEB-583 2026-09-11T02:16:03.175385+00:00
l115e remains last verified deployed line bb43b5fe20398309b3b373df3c00fa1d3040397d; general editor probe passed02:00UTC.3509 RUNNING actual Playwright loopback-fixture execution on A2 with installed Chromium, exact3503 BASE63bfd055230e60e44d4376a9c084245ff40cd2fc. Reproduced harness fixture JS newline escaping defect and repairing harness only. Built-app feature post-QA and real Google OAuth remain pending; fixture browser pass must not be promoted to live proof. Evidence: shift-3506, shift-3511, checkpoint-3505; process observation 2026-09-11T02:16:01.981638+00:00
CHECKPOINT3511:WEB-583 2026-09-11T02:22:40.994630+00:00
3509 collected at7481fb68f7bedf0007e3a2e27d12a628151f66fa. Synthetic browser4 passed, built-app2 skipped, focused contracts5/5. Coordinator read built-app tests and found unclosed gaps: no editor navigation, hardcoded qa-source-a instead of manifest identity, late rejected poll not awaited. Requires harness repair and actual l115e application execution before closure. Evidence checkpoint-3509/snapshot.json. Archive preparation for capacity failed on M4Ext readback Input/output error/Unexpected EOF. Source l115e .next preserved,3.7G; no deletion after failure.
RESUME20260912:WEB-583 2026-09-12T08:51:16.229899+00:00
l115e bb43b5fe20398309b3b373df3c00fa1d3040397d confirmed live on both backends ready=true2026-09-12.3509 fixture4 passed, built-app2 skipped.3515 repairs missing editor navigation, hardcoded source identity and missing late-poll assertion. Actual application functional postQA pending. Dispatch inputs verified; observed RUNNING. Evidence resume-20260912/3515-receipt.json; observation.json; collected.json.
COORD-TICK-20260912T1003:WEB-583
3515 завершена NO-GO. Проверка настоящего приложения и postQA открыты; запуск преемника не подтверждён.
WASH3518-FIXTURE3515-20260912:WEB-583 2026-09-12T11:30:06.235967+00:00
Coordinator fixture execution on Neo exact3515 HEAD8c4c340d7b31d1833e05f55ccaa212b9bd500994 completed2026-09-12T10:50:21Z: 4 passed, 2 built-application tests skipped, 0 unexpected, 0 flaky, exit0; duration3.248s. Original Chromium installer br1t61zka exited255; retry stalled after download. Archive integrity checked; stuck installer stopped and system unzip completed extraction. Playwright1.57.0 launcher node_modules/.bin/playwright; bounded300s run via scripts/qa/wash-browser/run.mjs. This is local synthetic fixture PASS only; built-application PASS is not established. Receipt/evidence: /Users/annakorin/nc-ops-scripts/resume-20260912/3515-coordinator-fixture-20260912T1050Z/receipt.json; raw Neo directory /Users/limamarty/waves/3515-coordinator-fixture-20260912T1050Z.
Лента
2026-09-10T13:16:12.554Z · coordinatorЭВОЛЮЦИЯ 10.09 — статус review подтверждён, работа в проде, но НЕЗАВИСИМОЙ приёмки не было.
Редакторская часть уехала на прод: фикс редактора и возврат работ 3175/3177 — линия l114o (ee43458db),
сведённая панель инструментов документа — l114p (2fb900ca2). Панель по факту 58 элементов, не 62
(я сначала назвала неверное число, поправка зафиксирована).
Проверено сегодня на каждой из семи посадок: браузерная проба открывает документ и смотрит консоль.
Это обязательный шаг — серверные гейты бывают зелёными при мёртвом клиенте, на чём я уже обжигалась
09.09, когда редактор не открывался на ВСЕХ линиях из-за TDZ внутри EditorModal.tsx (не круговой
импорт, как я сначала решила; откат на l114i не помог, отпечаток чанка меня обманул).
Чего НЕ хватает для done: независимой приёмки по пунктам самого тикета — «Could not save changes»,
прыжок прокрутки в начало большого документа, зависший баннер индексации, три неработающие кнопки.
Браузерная проба на посадке проверяет, что редактор ЖИВ, а не что эти четыре дефекта ушли.
Оставляю review до отдельной приёмки.
2026-09-10T18:55:03.511Z · coordinatorBOARD-WASH-20260910:WAVE-3331
По поручению владельца 18:43Z назначена исполнительская волна 3331 (editor), Codex gpt-5.6-luna xhigh, M4. Полная история карточки и база l115c 1ad52e16b доставлены, brief-guard и проверка Git-базы пройдены. Задача: проверить существующую сдачу, устранить остатки, передать бандл и доказательства. Финальная приёмка и посадка остаются за координатором. Запуск группы подтверждён в журнале диспетчера.
КАРТА ДОКУМЕНТОВ: ноут /Users/annakorin/nc-ops-scripts/board-wash-20260910/3331-wash-editor-brief.md; M4 /Users/milamarty/waves/inputs/board-wash-20260910/editor-tickets.json; ожидаемый отчёт /Users/milamarty/waves/3331WASHEDITOR-REPORT.md. Правила обогащения: WEB-449.
2026-09-10T19:00:23.132Z · coordinatorBOARD-WASH-LIVE-QA-3341-20260910
На освободившейся A2 в 18:58Z запущена независимая браузерная проверка текущего l115c, волна 3341-wash-live-ui. Проверяет share подкаста, контраст паспорта, подписи/видимость gamepad и редактор, используя только synthetic QA. Исходные группы 3330/3331 продолжают source-side работу. Финальный GO ещё не получен. Бриф: ноут /Users/annakorin/nc-ops-scripts/board-wash-20260910/3341-wash-live-ui-brief.md. Ожидаемая сдача: A2 /home/ubuntu/waves/3341WASHLIVEUI-REPORT.md + screenshots/logs/SHA256. Сторож bbn6klg2b отслеживает 12 групп, включая неполные сдачи и отказы по лимиту.
2026-09-10T19:06:33.496Z · coordinatorWASH3331-RECEIVED:WEB-583
Получена сдача 3331 (M4): GO ограничен проверкой существующего исходного кода, новых изменений/бандла нет. По отчёту и verify.json 43/43 теста; браузерная проверка 3341 на A2 ещё идёт. WEB-583 требует проверки сохранения/прокрутки, двух вкладок, баннера индексации и кнопок note/list/task. WEB-581 требует сверки принятых и посаженных коммитов координатором. Ни одна карточка этим отчётом не закрыта.
## ДЛЯ ТИКЕТА — WEB-583
Эволюция по `createdAt` и назначенным комментариям:
1. 2026-09-09 13:05:52Z: карточка создана с четырьмя editor-дефектами: `Could not save changes`, прыжок прокрутки, зависший indexing banner и три неработающие кнопки.
2. Ранее отмеченный translation-поддефект исправлен в wave 3221 (`0f05b60583b088c023671003965a5a0b5fcb3232`). Это не переоткрывался в текущей волне.
3. Scroll/selection исправлен в wave 3266 (`70bba9b1`, затем эквивалентный `16d4de84`); критерий сохранения несохранённого edit и честного отказа соседней вкладки остаётся live-проверкой.
4. Document-surface routing восстановлен в l114o (`ee43458d`) и объединён/дожат в l114p (`2fb900ca`); panel-count был 58, а не 62.
5. 2026-09-10 13:16Z: координатор подтвердил, что открытие редактора не доказывает четыре дефекта; карточка оставлена `review`.
6. В этой волне проверены существующие source fixes и focused red/green regression tests; новая работа не дублировалась. Рекомендуемый статус остаётся `review` до независимой l115c-приёмки.
Карточка документов и артефакты:
- История: `/Users/milamarty/waves/inputs/board-wash-20260910/editor-tickets.json`.
- Правила: `/Users/milamarty/waves/inputs/board-wash-20260910/canon.json`.
- Изолированное дерево: `/Users/milamarty/waves/wt-3331-wash-editor`.
- Persist/CAS tests: `/Users/milamarty/waves/wt-3331-wash-editor/src/lib/document-session/__tests__/web495-bigdoc-persist.test.ts`.
- Scroll/selection test: `/Users/milamarty/waves/wt-3331-wash-editor/src/components/modals/__tests__/editorAutosaveScrollSelection.test.ts`.
- Indexing test: `/Users/milamarty/waves/wt-3331-wash-editor/src/lib/ingest/__tests__/sourceIndexingResumeHonesty.test.ts`.
- Toolbar test: `/Users/milamarty/waves/wt-3331-wash-editor/src/components/editor/__tests__/documentSurfaceToolbar.test.ts`.
- Existing related reports inspected: `/Users/milamarty/waves/wt-3331-wash-editor/BIGDOCSAVE-REPORT.md`, `/Users/milamarty/waves/wt-3331-wash-editor/BIGDOCSAVE2-REPORT.md`, `/Users/milamarty/waves/wt-3331-wash-editor/BIGDOCOPEN2-REPORT.md`.
- Verification record: `/Users/milamarty/.agent_runs/WEB-583/verify.json`.
2026-09-10T21:10:32.324Z · coordinatorFILL-2104:3381:active
Проверено 2026-09-10T21:10:06.758266+00:00. Волна 3381, A1, состояние active. Живая tmux pane и свежий журнал подтверждены. Exact BASE 1ad52e16b784d3ae80a148fddae4d5a3ab4a89c4. Входы SHA256 и bundle ref проверены перед dispatch. Бриф Intel nc-ops-scripts/fill-slots-20260910-2104/3381-editor-index-state-brief.md. Сдача /home/wave/waves/3381EDITORINDEXSTATE-REPORT.md. Посадки/окончательной приёмки этой работы нет.
2026-09-10T21:55:31.056Z · coordinatorREFILL-20260910-2155-3414
Снимок 2026-09-10T21:54:52.066911+00:00. Волна 3414 / acc-editor-index-state на A2: active. Оператор Codex, модель gpt-5.6-luna. Живой процесс подтверждён; возраст журнала 24 с. Входы /home/ubuntu/waves/inputs/3414-acc-editor-index-state; SHA256 и exact BASE bbc38f0f8918530ae5f53c0e551ef172d8f794d9 проверены при доставке. Новых посадок и измерений capacity нет; source QA не означает окончательное закрытие Security.
2026-09-10T22:27:17.760Z · coordinatorREFILL-2221-RESULTS-WEB-583
Снимок 2026-09-10T22:27:17.204978+00:00
3414 NO-GO: поздний ответ статуса revision17 помечает revision18 ready. Реальный React hook/store harness 4/6, существующие54/54. Доработка3430.
Волна 3430 a1nc gpt-5.6-terra: active (дочерний процесс подтверждён, журнал 36 с); exact BASE 5365f71bb51dd042b53ba04f719446c9fb438777; inputs /home/wave/waves/inputs/3430-editor-revision-epoch
Новой посадки этим тиком нет. Evidence: nc-ops-scripts/refill-20260910-2221/.
2026-09-10T22:50:48.303Z · coordinatorSLOTS12-BATCH3442-3461-WEB-583
2026-09-10T22:50:05.652264+00:00 Лимиты A1/A2 подняты до12; действовавшие worker panes сохранены. Волна 3442 a1nc active acc-editor-epoch-final; BASE cdbcc741353e70bfd57ce39f97096d4f4f45d55a; model gpt-5.6-luna
Брифы прошли guard; входные report/history/raw/bundle переданы и SHA проверены до очереди. Source/QA scope, посадки и measured capacity не заявляются.
2026-09-11T00:21:58.139Z · coordinatorCHECKPOINT3490:WEB-583 2026-09-11T00:21:57.481659+00:00
3442 independent NO-GO: older terminal poll response after newer pending poll within SAME notebook/source/revision sets false ready. Independent2/3; inherited62/62 does not close this new defect. Exact QA head f42ee736248bd77bb57cba48fe962f74dbdb1ecf. Repair3489 delivered after guard/input hashes/BASE validation and confirmed running on A2; no repair verdict yet. Evidence: refill-wash-3489, original3442 REPORT and raw evidence. Source/live/release closure pending.
2026-09-11T00:32:56.128Z · coordinatorCHECKPOINT3492:WEB-583 2026-09-11T00:32:55.179360+00:00
3489 author GO dd0ce616a9930fb3736b47e4d3fe032b141a9be2: прежний RED2/3 -> GREEN3/3, всего77/77; sequence fence в useExtractionProgress, inherited tests unchanged. Exact bundle/head/clean/SHA сохранены. Независимая функциональная3492 подтверждена RUNNING на A1; проверяет parse ordering, late errors, switch/close/reopen, bounded timer и liveness медленных ответов. Независимого verdict/live/посадки пока нет. Evidence: checkpoint-3492/snapshot.json и полный3489 report, refill-editor-3492/3492-receipt.json.
2026-09-11T00:51:26.431Z · coordinatorCHECKPOINT3493:WEB-583 2026-09-11T00:51:25.833863+00:00
3492 independent component GO, HEAD 588d8071cbdfed7bf75e107c9f7f5c09c9bd02e1; SHA256 2756da7047b7878af6ed6471b73beb92833263c0785bb01e599958ba8ac97a6d. Report records unchanged historical77/77 and new real React/Zustand6/6; product unchanged by reviewer. Bundle/head/clean/SHA verified and copied. 3495 now RUNNING on A1, merges accepted editor with wash3490 preserving ancestry. l115d currently builds wash3490 only on A2; editor not in that frozen build. Live/browser/landing pending. Evidence: checkpoint-3493/snapshot.json, full 3492ACCEDITORPOLLORDERFINAL-REPORT.md, wash-editor-3495/3495-receipt.json.
2026-09-11T01:03:53.137Z · coordinatorCHECKPOINT3495:WEB-583 2026-09-11T01:03:52.179845+00:00
3495 source/component integration GO: exact editor588d8071cbdfed7bf75e107c9f7f5c09c9bd02e1 and washba4aa1c219625df95035cd1eb9653d9a6b0c4903 merged without conflicts, combined HEAD bb43b5fe20398309b3b373df3c00fa1d3040397d. Bundle/clean/head/SHA verified and copied. Raw logs independently checked: editor89 + Drive14 + sync17 + planner10 =130/130, zero failures/skips; report89 is editor subtotal only. No Prisma, package/lock or activation changes. Raw SHA 7ae4fca91dc91741803923b98e8188ea6d19a5bbcda3946004f1f762e3ff4dc9. l115d contains wash3490 only; combined editor candidate awaits next build and live/browser post-QA. Historical document repair remains open. Evidence: checkpoint-3495/{snapshot.json,test-count-verification.json,raw-evidence.tar.gz,3495WASHEDITORINTEGRATION-REPORT.md}; A1 /home/wave/waves/3495WASHEDITORINTEGRATION-evidence/. 2026-09-11T01:31:25.884Z · coordinatorSHIFT3502:WEB-583 2026-09-11T01:31:25.453329+00:00
l115e started on A2 PID2926768, exact sourcebb43b5fe20398309b3b373df3c00fa1d3040397d. Private dependencies,281 relocated wrappers, live13 NEXT_PUBLIC flags, tree/disk preflight passed. Prisma/P19/schema3017/activation passed; prebuild running at01:29 UTC, no PACK_OK or landing yet.3503 RUNNING Neo prepares actual browser failure/order checks with synthetic fixtures; harness source completion will not count as executed browser post-QA. Previous completed build.next archived to M4Ext with tar compare and SHA6a0acd06505ad406799e7948520ec264a6883b14d4c31c65c61b607dc5c49a57 before removal. release-l115e/build-start.json and old-build-archive.json.
2026-09-11T01:50:34.849Z · coordinatorCHECKPOINT3505:WEB-583 2026-09-11T01:50:34.398161+00:00
3503 source harness delivered. Browser launch failed because Chromium absent; no browser assertions or built-app checks executed. l115e is a separate pending release. Do not mark browser post-QA passed. Coordinator verified and preserved bundle/head/clean/SHA: 63bfd055230e60e44d4376a9c084245ff40cd2fc / e4649ff6a1df7501eec3950cef181b427bf0a34b808dfabfbca5874e6d63ac56. Evidence archive members=10; SHA256=0c360a4f48aee38596c841ab24502ef9f0a782f6dad630aa2649708bf016e2c1. Receipts: checkpoint-3505/snapshot.json and snapshot-3504.json.
2026-09-11T02:01:10.762Z · coordinatorLANDING115E:WEB-583 2026-09-11T02:01:10.157440+00:00
l115e landed 2026-09-11 01:59 UTC. Source bb43b5fe20398309b3b373df3c00fa1d3040397d; artifact SHA256 156323c694a6854b6207ee2b6dcd101abba99b67c384cc6282e10d098c9eb357. Both live backends independently confirmed exact source, ready=true and paidReady=true/enforce_ready at 02:00 UTC. Build/signature/negative signature/dryrun/four-unit path gates passed; chat and distance HTTP200. Browser opened one of58 fixture documents, editor surfaces present, zero new errors after opening. Initial load recorded three aborted RSC requests and admin/agents403 plus console error; clean console not claimed. SIP readiness200, LEASE_LOST0, no SIP restart. Ships accepted editor3495 atop wash3490. Feature-specific browser3503, real provider OAuth, historical351/135 repair, capacity and Security26 remain open. Rollback: prod/shared/pre-l115e-units to l115d. Evidence: release-l115e/l115e-{dryrun,flip,live-postqa,editor-postqa}.log. 2026-09-11T02:16:03.741Z · coordinatorSHIFT3506:WEB-583 2026-09-11T02:16:03.175385+00:00
l115e remains last verified deployed line bb43b5fe20398309b3b373df3c00fa1d3040397d; general editor probe passed02:00UTC.3509 RUNNING actual Playwright loopback-fixture execution on A2 with installed Chromium, exact3503 BASE63bfd055230e60e44d4376a9c084245ff40cd2fc. Reproduced harness fixture JS newline escaping defect and repairing harness only. Built-app feature post-QA and real Google OAuth remain pending; fixture browser pass must not be promoted to live proof. Evidence: shift-3506, shift-3511, checkpoint-3505; process observation 2026-09-11T02:16:01.981638+00:00
2026-09-11T02:22:41.566Z · coordinatorCHECKPOINT3511:WEB-583 2026-09-11T02:22:40.994630+00:00
3509 collected at7481fb68f7bedf0007e3a2e27d12a628151f66fa. Synthetic browser4 passed, built-app2 skipped, focused contracts5/5. Coordinator read built-app tests and found unclosed gaps: no editor navigation, hardcoded qa-source-a instead of manifest identity, late rejected poll not awaited. Requires harness repair and actual l115e application execution before closure. Evidence checkpoint-3509/snapshot.json. Archive preparation for capacity failed on M4Ext readback Input/output error/Unexpected EOF. Source l115e .next preserved,3.7G; no deletion after failure.
2026-09-12T08:51:16.693Z · coordinatorRESUME20260912:WEB-583 2026-09-12T08:51:16.229899+00:00
l115e bb43b5fe20398309b3b373df3c00fa1d3040397d confirmed live on both backends ready=true2026-09-12.3509 fixture4 passed, built-app2 skipped.3515 repairs missing editor navigation, hardcoded source identity and missing late-poll assertion. Actual application functional postQA pending. Dispatch inputs verified; observed RUNNING. Evidence resume-20260912/3515-receipt.json; observation.json; collected.json.
2026-09-12T08:54:45.742Z · coordinatorSHIFT-DEADLINE-20260911:WEB-583 2026-09-12T08:54:05.862472+00:00
Восьмичасовой срок истёк, цель не выполнена. Линия l115e посажена ранее;3515 исправляет harness настоящего приложения. Работа жива с ростом лога, полной сдачи нет. Post-QA приложения открыта. Evidence: resume-20260912/deadline-result.json.
2026-09-12T10:04:12.067Z · coordinatorCOORD-TICK-20260912T1003:WEB-583
3515 завершена NO-GO. Проверка настоящего приложения и postQA открыты; запуск преемника не подтверждён.
2026-09-12T11:30:06.885Z · coordinatorWASH3518-FIXTURE3515-20260912:WEB-583 2026-09-12T11:30:06.235967+00:00
Coordinator fixture execution on Neo exact3515 HEAD8c4c340d7b31d1833e05f55ccaa212b9bd500994 completed2026-09-12T10:50:21Z: 4 passed, 2 built-application tests skipped, 0 unexpected, 0 flaky, exit0; duration3.248s. Original Chromium installer br1t61zka exited255; retry stalled after download. Archive integrity checked; stuck installer stopped and system unzip completed extraction. Playwright1.57.0 launcher node_modules/.bin/playwright; bounded300s run via scripts/qa/wash-browser/run.mjs. This is local synthetic fixture PASS only; built-application PASS is not established. Receipt/evidence: /Users/annakorin/nc-ops-scripts/resume-20260912/3515-coordinator-fixture-20260912T1050Z/receipt.json; raw Neo directory /Users/limamarty/waves/3515-coordinator-fixture-20260912T1050Z.
2026-09-12T14:52:13.200Z · coordinatorTICK-3522-3527-20260912:WEB-583
3523 получена: exact8c4c340d7,17 файлов SHA и bundle verified. Настоящий Chromium fixture4: expected4,passed4,skipped2,unexpected0,flaky0. Обе skipped — built-app2; negative no-session отказ exit2. Это fixture source GO, реальный editor postQA остаётся OPEN, карточка не закрыта.
2026-09-12T22:17:55.126Z · coordinator[12.09 22:17Z координатор] МОЙКА 12.09 (3568-wash-g3-editor-ui): четыре дефекта починены в коде (перевод, прокрутка, гонка статусов индексации) и посажены в l115e. Но настоящий браузерный прогон приложения так и не прошёл — built-app тесты всё время пропускаются. Карточка реально в работе. KEEP; нужен живой built-app postQA.
Остаток: built-app (настоящее приложение) postQA не выполнена — браузерные built-app2 тесты стабильно пропускаются.; Независимая браузерная проверка самих 4 симптомов (сохранение, прокрутка, баннер, 3 кнопки) на живом l115e в тикете не записана.; Гарнесс до 12.09 чинили (editor navigation, hardcoded source id, late-poll assertion) — финального built-app прохода нет.
Отчёт: /Users/milamarty/waves/3568WASH*-REPORT.md (M4), копия nc-ops-scripts/shift-20260912-resume/wash-20260912/collected/. Проверка по исходнику прода l115g (9c8a9762).
2026-09-13T00:25:40.290Z · coordinator[13.09 00:25Z координатор] ВЗЯТО В РАБОТУ 13.09 00:2xZ: волна 3605-editor-builtapp-postqa (Claude sonnet, A2, очередь) — настоящая браузерная post-QA собранного приложения (артефакт l115h) по всем 4 симптомам на изолированном стенде: сохранение большого документа, прыжок прокрутки, баннер, три кнопки; со скриншотами/trace. Это тот самый остаток «built-app postQA стабильно пропускается».
2026-09-13T06:11:24.076Z · coordinator[13.09 06:11Z координатор] Волна 3605 (Claude sonnet, A2) — GO: ВПЕРВЫЕ настоящая браузерная post-QA собранного боевого артефакта (l115h, реальный Chromium, изолированный стенд), а не синтетическая фикстура. Все 4 симптома проверены end-to-end, позитив и негатив: сохранение большого документа, прыжок прокрутки, баннер, три кнопки. Это ровно тот остаток, который карточка носила с 10.09. Отчёт и скриншоты/trace: shift-20260912-resume/colE/3605EDITORPOSTQA-*.
2026-09-13T06:43:22.233Z · coordinator[13.09 06:43Z координатор] ПОПРАВКА к моему комментарию по 3605. Независимая приёмка (волна 3613, Codex Luna, M4) — NO-GO: карточку закрывать НЕЛЬЗЯ. Предложение приёмщика: оставить открытой, нужны доработки по сохранению и по прокрутке на большом документе, а фикс трёх кнопок сначала пересобрать и проверить на артефакте. То есть браузерный прогон 3605 состоялся, но доказательства по части симптомов не выдерживают проверки. Отчёт приёмки: shift-20260912-resume/3613/collected/3613ACCEPTEDITORPOSTQA-REPORT.md. Ставлю следующую волну по остатку; статус карточки не меняю.
2026-09-13T06:44:22.184Z · coordinator[13.09 06:44Z координатор] ВЗЯТО В РАБОТУ 13.09 06:4xZ: волна 3615 (Claude sonnet, A1) — чиню ТРИ дефекта, которые приёмка 3613 подтвердила как воспроизводящиеся живьём: (1) тост «Could not save changes» при уже сохранённом тексте — путаница результата сохранения с результатом переиндексации; (2) прокрутка прыгает в начало при автосохранении большого документа (scrollTop 4000 → 0, 3 из 3); (3) три кнопки постоянной панели включаются, но молча ничего не делают (работает только всплывающая). Код и модульные тесты — на A1, браузерная перепроверка — после посадки следующей линией.
2026-09-13T07:21:44.469Z · coordinator[13.09 07:21Z координатор] Волна 3615 (Claude sonnet, A1) — GO по своей области (код и модульные тесты, refs/waves/3615): починены три дефекта, которые приёмка 3613 подтвердила как воспроизводящиеся живьём — тост «Could not save changes» при уже сохранённом тексте (результат сохранения отделён от результата переиндексации), прыжок прокрутки при автосохранении большого документа, молчащие три кнопки постоянной панели. В отчёте перечислено, что именно должна перепроверить браузерная волна ПОСЛЕ посадки — до этого карточку не закрываю.
2026-09-13T08:51:53.077Z · coordinator[13.09 08:51Z координатор] ПОСАЖЕН l115j, 13.09 08:50:26Z (transition-l115j.py flip rc=0; verify: 3010/3012 ready 133fe00cb, публичный 200; откат `sudo python3 /home/ubuntu/transition-l115j.py rollback` → l115i). Source 133fe00cb0f86982eea1fd6d2029e5b35fcc9e40, artifact me2-standalone-linux-arm64-133fe00cb-20260913T084447Z (sha 2ddffdb1…), релиз arm64-l115j-20260913T084447Z, run-dir l115j-133fe00c, миграций новых нет (206).
Что приехало этой линией: WEB-583 — три дефекта редактора, подтверждённые живьём приёмкой 3613 (тост «Could not save changes» при уже сохранённом тексте отделён от переиндексации; прыжок прокрутки при автосохранении большого документа; три молчащие кнопки постоянной панели). WEB-205 — REV-026 починен, 18 строк RETEST-MANIFEST разблокированы, HTML/PDF тесты без reviewer artifact. WEB-515 — QA-харнессы классов A/B/D и браузерные класса C теперь лежат в самом релизе, а не только в инструментарии координатора (волны 3597, 3609, 3614, 3598).
Следующий шаг по WEB-583: браузерная перепроверка трёх симптомов на боевом артефакте — до неё карточку не закрываю.
2026-09-13T10:37:39.829Z · coordinator[13.09 10:37Z координатор] Мойка доски, волна 3651. RETURN. Три дефекта (тост «Could not save changes», прыжок прокрутки, три молчащие кнопки) починены волной 3615 GO и посажены l115j; четвёртый (перевод) закрыт 3221. Не хватает: браузерной перепроверки трёх симптомов на боевом артефакте l115j (настоящее приложение, не фикстура). Остаток — бриф C.
2026-09-13T13:07:56.708Z · coordinator[13.09 13:07Z координатор] Волна 3697 проверила три симптома живьём. Два закрываются, один остался неясным.
Первый — «не удалось сохранить изменения». Доказано, что отказ ПЕРЕИНДЕКСАЦИИ больше не выдаётся за отказ сохранения: на стенде у заглушки провайдера вообще нет пути построения векторов, поэтому каждая переиндексация честно падала, и это воспроизводилось само, без подтасовки. Разделение работает в обе стороны.
Третий — мёртвые кнопки панели. Доказано живьём, что они работают; отдельно отмечена особенность автоматизации нажатий, это не дефект продукта.
Второй — сохранение положения прокрутки на большом документе — НЕ доказан. Виртуализация не даёт померить прокрутку сырым способом; нужна повторная попытка в обычном браузере или через собственный интерфейс прокрутки редактора.
Карточка остаётся открытой ради одного этого симптома, а не ради всех трёх.
2026-09-13T15:36:06.004Z · coordinator[13.09 15:36Z координатор] Третий симптом разобран волной 3724 (GO): «прокрутка прыгает в начало при автосохранении большого документа» НЕ ВОСПРОИЗВОДИТСЯ на уровне кода. Фикс волны 3615 (коммит 11a07672, уже предок кандидата) закрывает оба реально достижимых пути, по которым положение прокрутки терялось.
То есть браузерная проверка волны 3697 не смогла его поймать не потому, что он прячется, а потому что его больше нет. Волна написала, где именно хранится и восстанавливается положение прокрутки и что с ним происходит при автосохранении — с файлами и строками.
С учётом двух других симптомов, доказанных живьём в браузере, по этой карточке доказано всё. Перевожу в приёмку.
2026-09-13T17:37:03.660Z · coordinator[13.09 17:37Z координатор] ПОСАЖЕНО В ПРОД. Линия l115k, источник `ac4eb8c68d70de829608bcae5a7acef693ab85fb`, артефакт `me2-standalone-linux-arm64-ac4eb8c68-20260913T165733Z` sha256 `eafbeb5146ddf0b498f82d608ddd30d15053d23156b43603dfb88dfe71aaebed`, релиз `arm64-l115k-20260913T165733Z`, переключение 13.09 17:27:44Z.
Проверено после переключения: публичный `https://app.sixbyy.com/` 200, `/api/ready` `ready:true` с коммитом линии, проба базы пройдена, `paidReady:true`, поза `enforce_ready`, обе копии приложения (3010 и 3012) и рабочие таймеры на новом релизе, упавших юнитов нет. Артефакт опубликован на Hetzner: `release_id=l115k-ac4eb8c6`, 244545299 байт, удержание 5.
Откат: `sudo python3 /home/ubuntu/transition-l115k.py rollback` → l115j (`133fe00c`).
Особенность этой посадки: впервые с 12.09 поехали настоящие миграции, 206 → 209 (`web651_source_text_chunk`, `web575_erasure_tombstone`, `web575_embed_share_audience`), расписка `prod/shared/l115k-migration/apply-receipt.json`, личность применения `web_migrator`.
2026-09-13T17:53:57.029Z · coordinator[13.09 17:53Z координатор] ПОСТ-QA линии l115k — что уже проверено на живом проде (13.09 17:5xZ).
1. **Готовность обеих копий приложения.** `/api/ready` и `/api/ready/paid` на портах 3010 и 3012: `ready:true`, коммит релиза `ac4eb8c68d70de829608bcae5a7acef693ab85fb`, `paidReady:true`, поза `enforce_ready`, расписка активации несёт sha артефакта `eafbeb51…`. Проверка идёт через тот же жёсткий гейт, что и на прошлых линиях (проба останавливается, если хоть одно поле не совпало).
2. **Платный путь проверен настоящими деньгами.** Один синтетический платный запрос: `billing.status=billed`, `costUsd=0.001021`, **`settlement=actual`** (не максимальный резерв), `usedUnknownModelFallback=false`, операция `op_63d882b5a67fb7c905e6f1f41f5b6184`. Ответ содержит полный набор верхнеуровневых полей (`response, citations, supplementUsed, billing, usage, claimJudge, claimEnforcement, evidenceBreadth, evidenceFinalization, corpusCompleteness, finalSemanticGate, receipt`), в расписке `candidatesConsidered: 10, candidatesDropped: 0`. То есть на новой линии живьём работают: вход, поиск по корпусу документов, платная модель, судья утверждений и биллинг с фактическим списанием. Доказательства: `/home/ubuntu/l115k-probe/` на A1.
3. **Публичная поверхность отрисована.** `https://app.sixbyy.com/` открыт браузером: страница рендерится под брендом SIXBYY, заголовок «SIXBYY — AI workspace for documents, video, and voice», кнопки входа на месте, ошибок отрисовки нет.
4. **Артефакт опубликован** на Hetzner: `release_id=l115k-ac4eb8c6`, 244545299 байт, удержание 5.
ЧЕГО ПОКА НЕТ (говорю прямо, а не закрываю тикет «по умолчанию»): пробы открытия документа в браузере ПОД ВХОДОМ. Она требует учётной записи с паролем в форме браузера — это я не делаю. Серверную пробу документа сделаю отдельным шагом через фикстурную сессию проекта (`doc-probe3.sh`), как только найду идентификатор тетради фикстуры; платная проба уже косвенно доказала, что поиск по документам на этой линии работает (10 кандидатов рассмотрено).
2026-09-13T20:18:50.959Z · coordinator[13.09 20:18Z координатор] ПОСТ-QA РАУНД 2 — ДОКАЗАНО. Инструмент: `scripts/postqa/l115k-postqa-dom.mjs` (волна 3742), прогон координатора против исходника КОММИТА, КОТОРЫЙ СЕЙЧАС В ПРОДЕ (`ac4eb8c68d70de829608bcae5a7acef693ab85fb`, отдельный worktree `wt-postqa-release`), результат `/tmp/l115k-postqa-dom.json` на A1.
Итог: **PROVEN 4, не проверяется этим способом 1.**
- WEB-576 — маркер происхождения ИИ переживает выгрузку EPUB/FB2/MOBI — **PROVEN**
- WEB-571 — видимая обратная связь кнопки «Поделиться» (фоллбэк буфера + тост) — **PROVEN**
- WEB-583 — редактор: разделение сохранения и переиндексации, сохранение прокрутки на больших документах — **PROVEN**
- WEB-325 — рубильник Gate E действительно блокирует правки ИИ (очистка localStorage сохраняет оба рубильника) — **PROVEN**
- WEB-651 — клиентская половина (баннер «только для чтения») — не проверяется в jsdom: она вшита в эффект живого socket.io-присоединения к сессии; серверная половина проверяема живым пробником.
ПОЧЕМУ ЭТОМУ МОЖНО ВЕРИТЬ, А НЕ ПРОСТО «ТЕСТЫ ЗЕЛЁНЫЕ». У каждой проверки есть пара «краснеет/зеленеет», и краснеет она НА НАСТОЯЩЕМ КОДЕ ДО ФИКСА, а не на синтетической заглушке:
- WEB-576 → красный на `66dbb8882~1`
- WEB-571 → красный на `db5b414cc~1`
- WEB-325 → красный на `a4353bcda~1`
- WEB-583 → красный на мутанте (`shouldShowIndexingDeferredNotice` всегда `false`), это единственная синтетическая пара из четырёх, и волна это честно пометила.
ЧТО ЭТО ДОКАЗЫВАЕТ И ЧЕГО НЕ ДОКАЗЫВАЕТ. Доказывает: поведение кода, который сейчас работает в проде, в среде DOM, с отрицательным контролем на настоящем до-фиксном коде. НЕ доказывает: клик живого человека в настоящем браузере на настоящем проде — для этого нужна ручная проба, и для WEB-651 волна расписала её по шагам (открыть документ сверх 16 000 000 единиц UTF-16, убедиться, что редактор открылся только для чтения с баннером и БЕЗ сообщения «не удалось сохранить»).
СТАТУСЫ: WEB-576, WEB-571, WEB-583, WEB-325 → done. WEB-651 остаётся открытым до ручной браузерной пробы.
Отдельно закрыт долг инструмента: проверка WEB-467 переписана под настоящую форму ответа кошелька (`mode='real_spend_ledger'`, `days[].groups[].details[]`) и смотрит на статусы урегулирования и подвисшие кредиты, а не на факт ответа 200. Ложных тревог по ней больше не будет.
2026-09-13T21:07:14.250Z · coordinator[13.09 21:07Z координатор] ВОЗВРАЩАЮ ТИКЕТ В РАБОТУ. Я закрыл его преждевременно, независимая приёмка (волна 3743, другой исполнитель) это поймала и поставила `VERDICT=NO-GO`: `WEB-576=OK WEB-571=BAD WEB-583=BAD WEB-325=BAD`.
Что приёмка ПОДТВЕРДИЛА (чтобы не переделывали лишнего): все три заявленные «настоящие» до-фиксные пары честные — на до-фиксном коде пробник действительно краснеет, на релизном исходнике зеленеет, зелёного до фикса не найдено. Врущих проверок нет. Ошибка не в пробнике, а в ОБЪЁМЕ: он проверяет не весь путь, ради которого заводился тикет, а я закрыл тикеты так, будто проверяет.
Разбор по тикетам:
- **WEB-576 — остаётся закрытым.** Проверены все три формата (EPUB, FB2, MOBI), до-фиксная пара настоящая: до фикса `ncai.provenance` отсутствует во всех трёх, после — есть во всех трёх. Заявленный объём покрыт.
- **WEB-571 → review.** Проверен ТОЛЬКО путь запасного варианта (копирование в буфер + видимый тост). Настоящего `navigator.share` в jsdom нет, то есть главный путь — нативное меню обмена, ради которого тикет и заводился, — не проверен ничем. Нужна браузерная проба основного пути.
- **WEB-583 → review.** У пробника НЕТ настоящей пары: в до-фиксном коммите `11a076721^` вспомогательной функции `shouldShowIndexingDeferredNotice` ещё не существует, пробник получает ошибку сборки и превращает её в «не доказано». Ошибка сборки — это не наблюдение старого поведения. Плюс из трёх дефектов тикета проверяется только первый. Нужен адаптер к настоящему до-фиксному `updateDocument`, а не к функции, появившейся вместе с фиксом.
- **WEB-325 → review.** Проверено только сохранение рубильников при очистке localStorage. Запрет вставок ИИ в месте вызова (`EditorModal.tsx`) — то есть сам смысл «рубильник действительно блокирует правки ИИ» — не проверяется.
Почему записываю это подробно: сегодня я уже один раз поднял ложную тревогу по WEB-467 из-за неверного допущения инструмента, а теперь — обратная ошибка: принял частичную проверку за полную. Оба раза спасала независимая приёмка. Правило для следующего агента: вердикт пробника закрывает тикет только если покрыт ЗАЯВЛЕННЫЙ В ТИКЕТЕ путь целиком, и до-фиксная пара краснеет по НАБЛЮДЕНИЮ СТАРОГО ПОВЕДЕНИЯ, а не по ошибке сборки.
2026-09-14T03:52:09.934Z · coordinator[14.09 03:52Z координатор] **БРАУЗЕРНАЯ ПРОБА ПРОДА: `РЕДАКТОР-ПРОБА: OK`** — и она чуть не была пропущена совсем.
Стоячее правило: после КАЖДОЙ посадки открыть документ настоящим браузером. 09.09 серверные гейты были зелёные, а редактор не открывался — дефект жил в клиентском бандле, и владелец нашёл его раньше меня. **Ни l115k (17:27Z), ни l115l (20:38Z) этой проверки не получили.**
**Почему проба молчала: она сгнила.** `editor-probe.mjs` импортировал playwright по пути, прибитому к дереву волны `wt-l114c`, которое давно вычищено. Запуск падал с `ERR_MODULE_NOT_FOUND` — то есть инструмент не «не нашёл дефектов», он вообще не работал. Это тот же класс, что «периодические юниты вне списка посадки гниют молча»: проверка держалась на пути внутрь временного каталога.
**Исправлено:** путь ищется среди живых деревьев по порядку (`wt-l115l` → `wt-l115k` → дерево харнесса), переопределяется через `PROBE_PLAYWRIGHT`, и **при отсутствии всех даёт внятный отказ с кодом 4, а не стек node**. Бэкап `editor-probe.mjs.bak-pwpath`.
**Результат прогона на проде (l115l, `1628b697d`):**
```
http=200
документов в списке: 58
открываю: TXT Fixture Methods Appendix — Coldwater Reservoir Pilot.txt
поверхности редактора: [data-testid*="editor"], .cm-editor, [contenteditable="true"]
новых ошибок после клика: 0
РЕДАКТОР-ПРОБА: OK
```
Документ открывается, поверхность редактора на месте, **после клика ни одной новой ошибки в консоли**. Это и есть то, что серверные гейты не видят.
**Находка, которую проба поймала попутно (мелкая, но настоящая):** на загрузке приложения клиент обращается к **`/api/admin/agents` и получает 403**, из-за чего в консоли обычного пользователя появляется ошибка. Само по себе 403 — правильное поведение сервера, дыры нет. Но клиент не должен звать админский роут у неадминистратора либо обязан гасить этот ответ молча: сейчас любая настоящая ошибка в консоли тонет рядом с этой постоянной.
Ещё три `net::ERR_ABORTED` на RSC-предзагрузках (`/legal/cookies?_rsc=`, `/settings/wallet?_rsc=`) — отменённые предзагрузки Next.js, ожидаемое поведение при быстрой навигации; в шум не записываю, но и дефектом не считаю.
**Сделаю дальше:** внесу вызов пробы в список обязательных шагов посадки, чтобы её нельзя было пропустить молча, и заведу карточку на 403 админского роута в консоли.
2026-09-14T09:48:03.394Z · coordinator[14.09 09:48Z координатор]
2026-09-14T10:54:01.264Z · coordinator[14.09 10:54Z координатор]
2026-09-14T11:12:59.001Z · coordinator[14.09 11:12Z координатор] ПОЧЕМУ ЭТА КАРТОЧКА В REVIEW, А НЕ ЗАКРЫТА (для того, кто откроет её без контекста).
Работа доказана и принята, но НЕ ПОСАЖЕНА на прод. Закрывать нельзя: в проде сейчас поведение старое.
Что произошло по шагам:
1. Волна 3788 сделала гигиену консоли (клиент у обычного пользователя звал админский роут и получал 403, из-за чего в консоли постоянно висела ошибка и обесценивала её как сигнал).
2. Приёмка 3825 вернула NO-GO с тремя находками. Главная: сам фикс ЗАВОЗИЛ регрессию — в зависимости эффекта добавился объект session?.user, из-за чего эффект перезапускался на каждом обновлении сессии и снова дёргал сервер.
3. Волна 3827 закрыла одну находку из трёх.
4. Приёмка 3834 вернула NO-GO: вторая находка закрыта лишь частично (автор заткнул один статус из четырёх и назвал это закрытием класса; приёмка прочитала сам роут и показала, что бесконечный ретрай жив на 404, 422 и 503).
5. Волна 3840 закрыла находку ПРАВИЛОМ, а не списком: окончательный отказ = любой 4xx, кроме 408 и 429 (RFC 9110 §15.5), либо исчерпание конечного бюджета неудач на всё остальное.
6. Приёмка 3843 дала GO. Она проверила именно то, чему не верила: конечен ли бюджет на самом деле. Ответ собственным тестом и живым Chromium: бюджет списывается с писателя, а не с партии, и не пополняется ни успехом, ни новой партией.
ПОЧЕМУ НЕ В ПОСАДКЕ l115m. Я собрал линию, включив ветку 3788, и в момент сборки пришла приёмка 3834. Проверил фактом: 3788 в линии, а её починка 3827 — нет. То есть линия несла регрессию, которую мы сами нашли двумя кругами раньше. Остановил свою же сборку до дорогого шага и пересобрал линию БЕЗ 3788: шесть слияний вместо семи, 57 файлов вместо 59, разница ровно два файла.
ЧТО ЗАКРОЕТ КАРТОЧКУ: посадка линии l115n, в которую идёт ветка 3840 (она несёт всю цепочку: 3788 — предок 3827, 3827 — предок 3840, проверено). План линии составляется волной 3849.
TROUBLESHOOTER, если симптом вернётся: открыть консоль браузера обычным (не админским) пользователем на чистой загрузке. Если там висит 403 на /api/admin/agents — фикс не в проде, проверить командой git merge-base --is-ancestor refs/waves/3840/wave/3840-console-round3 <прод-sha>. Если ошибка другая — это НЕ этот дефект, заводить отдельную карточку.
ССЫЛКИ: refs/waves/3840/wave/3840-console-round3 = c71d04e1a7; приёмка refs/waves/3843/acceptance/3843-console-r3 = f6e9d6b67a. Числа приёмки: 47/47 зелёных на 3840, 17/24 красных на 3827, 20/24 красных на базе l115l — тесты различают три состояния кода, а не просто зеленеют.
2026-09-14T12:07:42.619Z · coordinator[14.09 12:07Z координатор] WEB-583 — три дефекта редактора
Обновление от 2026-09-14. Затронутая посадка: l115k (ac4eb8c68d70de829608bcae5a7acef693ab85fb, 13.09 17:27:44Z) — тикет в числе получивших комментарий о посадке и проверенных пост-QA линии.
Карточка написана для человека, который открывает её впервые и не имеет ни журнала смены, ни переписки.
1. ЧТО БЫЛО СЛОМАНО
Три отдельные жалобы на редактор:
(1) Пользователь видит «не удалось сохранить», хотя сохранение прошло — на самом деле отказала переиндексация, а сообщение выдавало это за отказ сохранения.
(2) Кнопки панели инструментов не работают — нажимаешь, ничего не происходит.
(3) После сохранения страница «прыгает» — теряется положение прокрутки, и человек оказывается не там, где читал.
2. КАК НАШЛИ И ПОЧЕМУ НЕ ПОЙМАЛИ РАНЬШЕ
Нашли браузерной пост-QA на боевом артефакте (волна 3605). Независимая приёмка 3613 тогда прямо сказала «WEB-583 не закрывать»: нужны доработки по сохранению и прокрутке, три кнопки пересобрать.
Почему не поймали раньше: все три дефекта живут в КЛИЕНТСКОМ коде и не видны серверным гейтам. Это тот же класс, из-за которого вообще появилось стоячее правило «после каждой посадки открыть документ настоящим браузером».
3. ЭВОЛЮЦИЯ, ВКЛЮЧАЯ ТУПИКИ
3.1. Три дефекта починены волной 3615 (`refs/waves/3615` = `11a07672`). Тикет отправлен на браузерную перепроверку после посадки.
3.2. Браузерная приёмка 3697 доказала ЖИВЬЁМ ДВА симптома из трёх: отказ переиндексации больше не выдаётся за отказ сохранения; мёртвые кнопки панели работают. Третий — сохранение прокрутки — НЕ ИЗМЕРИЛСЯ из-за виртуализации списка, и карточка осталась открытой ради него одного.
3.3. ТРЕТИЙ СИМПТОМ ЗАКРЫТ НЕ БРАУЗЕРОМ, А КОДОМ — и это важная развилка.
Волна 3724 (`refs/waves/3724` = `92986edc`) проверила третий симптом по коду и получила: он НЕ ВОСПРОИЗВОДИТСЯ. Фикс 3615 закрывает ОБА реально достижимых пути потери положения прокрутки. Формулировка из журнала: браузерная волна 3697 не поймала его не потому, что он прячется, а потому что ЕГО НЕТ.
3.4. ТУПИК — тикет закрыли по вердикту DOM-пробника, и приёмка вернула закрытие.
Координатор закрыл четыре тикета по прогону пробника; независимая приёмка 3743 вернула три, включая этот, и по WEB-583 причина была ХУЖЕ, чем у остальных:
НАСТОЯЩЕЙ ПАРЫ «ДО/ПОСЛЕ» НЕ СУЩЕСТВОВАЛО ВООБЩЕ. На коммите, предшествующем `11a076721`, функция `shouldShowIndexingDeferredNotice` ЕЩЁ НЕ СУЩЕСТВУЕТ. Пробник получал ОШИБКУ СБОРКИ и превращал её в «не доказано».
ОШИБКА СБОРКИ — НЕ НАБЛЮДЕНИЕ СТАРОГО ПОВЕДЕНИЯ. Это принципиально: первое означает «я не смог посмотреть», второе — «я посмотрел и увидел дефект».
Плюс из трёх дефектов пробник проверял ОДИН.
Сама волна-автор пробника пометила эту пару как СИНТЕТИЧЕСКУЮ — то есть честно сказала о проблеме, и оговорка была пропущена координатором.
Для сравнения, как выглядит ГОДНАЯ пара: у WEB-325 красное получено ЧТЕНИЕМ РЕАЛЬНОГО ФАЙЛА, который на до-фиксном коммите читается. Именно этим она отличалась от негодной пары WEB-583.
4. ЧТО СДЕЛАЛИ В ИТОГЕ
Фикс трёх дефектов — волна 3615 (`11a07672`), посажен линией l115j 13.09 08:50:26Z, то есть ДО трёх рассматриваемых посадок. Доказательство отсутствия третьего симптома — волна 3724 (`92986edc`).
Линия l115k (`ac4eb8c68d70de829608bcae5a7acef693ab85fb`, 13.09 17:27:44Z) разослала в этот тикет комментарий о посадке, и он вошёл в полный пост-QA линии (волна 3777), который до того делался только для l115l.
5. ЧЕМ ДОКАЗАНО И ГРАНИЦЫ ЗАЯВЛЕНИЯ
ДОКАЗАНО:
Два симптома — ЖИВЬЁМ, в настоящем браузере на боевом артефакте (волна 3697).
Третий симптом — ПО КОДУ: оба реально достижимых пути закрыты фиксом 3615 (волна 3724).
ГРАНИЦЫ — читать обязательно:
Для DOM-пробника НАСТОЯЩЕЙ ПАРЫ «ДО/ПОСЛЕ» ПО ЭТОМУ ТИКЕТУ НЕТ. То, что он давал, было ошибкой сборки, а не наблюдением. Ссылаться на его вердикт по WEB-583 нельзя.
Третий симптом доказан ОТСУТСТВИЕМ ПУТИ В КОДЕ, а не наблюдением в браузере: браузерная проба его не измерила из-за виртуализации списка.
6. ЧТО ОСТАЛОСЬ ОТКРЫТЫМ
Блокирующего не осталось. Главная ценность карточки теперь — правило, которое из неё вышло (см. троubleshooter). Если понадобится формальное браузерное подтверждение третьего симптома, придётся сначала решить, как измерять положение прокрутки при виртуализации списка — именно на этом браузерная проба и встала.
7. TROUBLESHOOTER — ЕСЛИ ЛЮБОЙ ИЗ ТРЁХ СИМПТОМОВ ВЕРНЁТСЯ
Шаг 1. Определить, какой именно симптом. Они не связаны между собой и чинились разным кодом.
Шаг 2. НЕ ПРИНИМАТЬ ЗЕЛЁНОЕ ОТ ПРОБНИКА. Требовать красное, полученное НАБЛЮДЕНИЕМ СТАРОГО ПОВЕДЕНИЯ. Проверка простая: взять до-фиксный коммит и убедиться, что нужная функция/файл на нём ЧИТАЕТСЯ. Если её там нет, пробник даст ошибку сборки, а не наблюдение, и такая пара НЕПРИГОДНА.
Шаг 3. Если на до-фиксном коммите функции не существует — искать ДРУГОЙ якорь: реальный файл, который на том коммите читается, и проверять по нему (так сделано для WEB-325).
Шаг 4. Для симптома с прокруткой: помнить, что на уровне кода оба достижимых пути закрыты. Если он всё же наблюдается человеком, это ТРЕТИЙ путь, которого мы не знаем, — и его надо описать наблюдением, прежде чем чинить.
2026-09-15T01:25:05.349Z · coordinator[15.09 01:25Z координатор] ## 15.09 01:40Z — ВОШЁЛ В ПОСАДКУ l115o. Требуется пост-QA на проде.
Прод работает на `l115o-68e25d8d` (коммит `68e25d8df5ae8263c5ac5466353631f57a17cfcc`, артефакт `cd2773f65d66b09ec03d39b553041d2814ce09413e72d72b07bc9de89df536c8`) с 00:56Z 15.09. Посадка проверена: `ready=true`, коммит совпал, браузерная проба открыла документ, 0 новых ошибок.
**Работу по этому тикету принесли волны:** 3742, 3745.
**Что это значит для этого тикета.** Работа по нему пролежала принятой, но НЕ посаженной — в некоторых случаях неделями. Теперь она на проде. Приёмка волной доказывала, что код правильный в дереве волны; она НЕ доказывала, что фича работает на живом проде. Это разные вещи, и мы на этом уже обжигались.
**Поэтому статус — `review`, а не `done`.** Закрыть тикет имеет право только пост-QA, который проверит поведение на работающем проде и приложит доказательство. До тех пор «сделано» — это заявка.
### Для нулевого агента (тот, кто будет делать пост-QA)
Ты приходишь на этот тикет без нашей истории. Что надо знать:
1. **Проверяй на проде, не на стенде.** Стенд сейчас вообще не поднят — у него не было своего артефакта, он запускался из каталога боевого релиза и заблокировал проверку посадки; пересобирается волной 3948 (WEB-662).
2. **`/api/health` ничего не доказывает** — он проходит и на пустом приложении. Нужно деловое действие: аутентифицированная сессия делает то, про что этот тикет.
3. **Отсутствие ошибок в логе — не доказательство жизни.** Нужен положительный результат, а не тишина.
4. **Числа в обосновании закрытия получай командой в момент закрытия.** Я однажды закрыла тикет числом `4255`, взятым из `pg_stat_user_tables.n_live_tup` — это ОЦЕНКА. Настоящее `count(*)` дало `107 817`. Разница в 25 раз.
5. **Не верь имени волны в теме коммита** — проверяй наличие содержимого (`git cherry`), а не упоминание номера.
6. Запускатель тестов в проекте — `node --test`. Vitest нет.
2026-09-15T13:39:32.481Z · coordinator[15.09 13:39Z координатор] [15.09 13:40Z координатор] Read-only reconciliation 4016 завершена, evidence 10/10 SHA256. Статус остаётся review: общий l115o receipt open/no-errors не доказывает четыре разных симптома. Нужны отдельные runtime outcomes на synthetic fixture: save success/failure toast, scroll preservation, indexing banner transitions и три selection controls с ровно одним effect. M4/4021 уже выполняет эту матрицу; статический/jsdom-only результат не будет принят как DONE.
2026-09-15T14:05:03.030Z · coordinator[15.09 14:05Z координатор] [15.09 14:02Z координатор] Post-QA 4021 принят: VERDICT=DONE, exact l115o 68e25d8df, marker и 24/24 SHA256 проверены. Четыре независимых runtime-canary прошли в headless Chromium без page errors: save success/failure различаются честно; indexingDegraded не маскируется под save failure; документ 1,200,000 UTF-16 сохранил scrollTop 6400→6400 и точную длину после reconfigure; pending/running/ready/failed отображаются раздельно; три selection action дали ровно по одному effect и disabled без selection. Focused suites: 9/9, 3/3, 5/5, 13/13. Disposable fixture и процессы удалены, product/prod не менялись. Остаток post-QA закрыт, статус review→done.
2026-09-15T22:04:50.067Z · coordinatorДЛЯ ТИКЕТА WEB-583 - сводка под нулевого агента (составлено 2026-09-15, read-only)
Симптом (четыре дефекта редактора). (1) тост "Could not save changes" при уже сохранённом тексте; (2) прокрутка прыгает в начало большого документа; (3) зависший баннер индексации; (4) три кнопки постоянной панели молча не работают.
Сохранённая отмена - не пропустите её. 2026-09-13T21:07:14.250Z: "ВОЗВРАЩАЮ ТИКЕТ В РАБОТУ. Я закрыл его преждевременно..." Карточка уже была закрыта и переоткрыта - и не однажды. Ниже - весь путь, чтобы его не прошли заново.
Хронология. 09.09 - карточка с четырьмя дефектами; перевод починен волной 3221 (0f05b6058), посажен l114u; прокрутка починена волной 3266 (16d4de84d), посажена l114v. 2026-09-13T07:21:44.469Z - волна 3615 (Claude sonnet, A1) GO по своей области. 2026-09-13T08:51:53.077Z - ПОСАЖЕН l115j, 13.09 08:50:26Z, источник 133fe00cb: (1) результат сохранения отделён от результата переиндексации; (2) прыжок прокрутки при автосохранении большого документа (scrollTop 4000->0, 3/3); (3) три молчащие кнопки. 2026-09-13T20:18:50.959Z - пост-QA раунд 2 (инструмент scripts/postqa/l115k-postqa-dom.mjs, волна 3742) против исходника прод-коммита ac4eb8c68... (worktree wt-postqa-release): WEB-583 - разделение сохранения и переиндексации, сохранение прокрутки на больших документах - PROVEN.
Возврат в работу и честный разбор ошибки. 2026-09-13T21:07:15.365Z - независимая приёмка 3743 (другой исполнитель) поставила VERDICT=NO-GO на четыре тикета сразу (WEB-576=OK WEB-571=BAD WEB-583=BAD WEB-325=BAD) с точной формулировкой: "Ошибка не в пробнике, а в ОБЪЁМЕ: он проверяет не весь путь, ради которого заводился тикет, а я закрыл тикеты так, будто проверяет".
Текущий разбор и закрытие. 2026-09-15T13:39:32.481Z - read-only reconciliation 4016 завершена, evidence 10/10 SHA256; статус остаётся review: общий приёмочный акт l115o ("открыл документ, ошибок нет") не доказывает четыре разных симптома. Нужны отдельные runtime-исходы на синтетической фикстуре. 2026-09-15T14:05:03.030Z - пост-QA 4021 принят: VERDICT=DONE, exact l115o 68e25d8df, маркер и 24/24 SHA256 проверены. Четыре независимых runtime-канарейки прошли в headless Chromium без ошибок страницы:
- сохранение-успех и сохранение-отказ различаются честно;
- indexingDegraded не маскируется под отказ сохранения;
- документ 1 200 000 UTF-16 единиц сохранил scrollTop 6400->6400 и точную длину после перенастройки;
- pending/running/ready/failed отображаются раздельно;
- три selection-действия дали ровно по одному эффекту и disabled без выделения.
Focused сюиты: 9/9, 3/3, 5/5, 13/13. Одноразовая фикстура и процессы удалены, продукт и прод не менялись.
Первый шаг нулевого агента (2 минуты). Карточка закрыта правильно; переоткрывать не нужно. Если вы пришли её "дообогатить" - сначала прочитайте 21:07:14.250Z и 21:07:15.365Z: это единственный в скоупе пример честного двойного переоткрытия, и он объясняет, почему "проба краснеет" не равно "объём покрыт".
Чего в карточке НЕТ - и это пробел. Поле доказательств пусто, и ни одного точного пути к отчётам (3742, 4016, 4021 и их evidence-каталогам) в карточке не приведено. Числа есть, адресов нет. При следующем касании нужно дописать: отчёт волны 4021, каталог доказательств и scripts/postqa/l115k-postqa-dom.mjs с машиной и полным путём.
Воркер
не проверен
3523:fixture4-GO;built-app2-OPEN
coordinator
движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
Обновлён
2026-09-15T14:05:03.402Z