WEB-496 · Дефект · Редактор · web
P0 WEB-217/C09: большие документы на l93 — PDF-экстракция застревает (pagesDone=5 за 15 мин), HTML/TXT сохраняются ЧАСТИЧНО после 504 при загрузке (4.45 МБ из 11.1; 3.293 из 3.359 МБ), SLA ≤10 мин не выполнен
Закрыт
P0 · горит
ведёт: —
эпик: WEB-086
Суть
## ДЛЯ НУЛЕВОГО АГЕНТА (обновлено 2026-09-05 UTC)
- **Суть одной строкой:** P0 WEB-217/C09: большие документы на l93 — PDF-экстракция застревает (pagesDone=5 за 15 мин), HTML/TXT сохраняются ЧАСТИЧНО после 504 при загрузке (4.45 МБ из 11.1; 3.293 из 3.359
- **Текущее состояние:** статус: review; что на проде: body: Текущее состояние:** статус: review; что на проде: 2026-09-02T22:10:18.507Z: [A1 23:00 Фабл] Волна 1384-bigdocingest поставлена (A1, Luna xhigh): атомарный приём тела (нет pa; 2026-09-02T22:10:18.507Z: [A1 23:00 Фабл] Волна 1384-bigdocingest поставлена (A1, Luna xhigh): атомарный приём тела (нет partial source при 504/обрыве), resumable/chunked upload >5; 2026-09-02T23:43:09.812Z: [A1 05:05 Фабл] Волна 1384-bigdocingest сдана: коммит 420df8cb1e (атомарный приём тела, resumable/chunked upload, 202+job, экстракция батчами с приоритето; 2026-09-03T05:37:36.879Z: [A1 Фабл] Приёмка 1478-accbigdocingest2 = NO-GO (8c728dc6): функционал PASS (durable job + рестарт, прогресс/фазы, API/Playwright, фикстуры), блокер посад; 2026-09-03T06:47:43.471Z: [A1 Фабл] Приёмка 1496-accbigdocingest3 = GO (Sol high): P19/W34 гейты rc=0, heartbeat cancel, регресс durable job/прогресс/resume/фикстуры. Коммит efc447; 2026-09-03T08:55:35.066Z: ПОСАДКА l96 (98a23c70) 03.09 ~09:00Z. Состав: l95 f7b9a4fd + publicflags3 (1477) + pistandby12 (1487) + bigdoc3-слияние 3f55a889 (1507) + entityboost6-сли; 2026-09-03T09:44:26.283Z: [пост-QA l96 на ЖИВОМ проде, 03.09 09:39-09:45Z] ПОДТВЕРЖДЕНО на живом проде. Миграция 20260903100000_web496_durable_extraction_job применена в 08:53:50 (; 2026-09-03T19:23:21.231Z: Статус уточнён: серия WEB-496 (durable extraction job) СЕЛА в прод в составе l96 98a23c70 03.09 — миграция 20260903100000_web496_durable_extraction_job пр; что принято/ждёт посадки: body: Текущее состояние:** статус: review; что на проде: 2026-09-02T22:10:18.507Z: [A1 23:00 Фабл] Волна 1384-bigdocingest поставлена (A1, Luna xhigh): атомарный приём тела (нет pa; 2026-09-02T23:43:09.812Z: [A1 05:05 Фабл] Волна 1384-bigdocingest сдана: коммит 420df8cb1e (атомарный приём тела, resumable/chunked upload, 202+job, экстракция батчами с приоритето; 2026-09-03T00:52:26.423Z: [A1 10:05 Фабл] Приёмка 1419-accbigdocingest = NO-GO (отчёт A1 /home/ubuntu/waves/ACCBIGDOCINGEST-REPORT.md). PASS: обрыв → нет partial source; HTML 11 МБ; 2026-09-03T04:59:25.254Z: [A1 Фабл] Волна 1439-bigdocingest2 сдана: коммит 8c728dc6 (durable extraction job в воркере, heartbeat-прогресс, resume в UI, partial/failed в UI, регресс; 2026-09-03T05:37:36.879Z: [A1 Фабл] Приёмка 1478-accbigdocingest2 = NO-GO (8c728dc6): функционал PASS (durable job + рестарт, прогресс/фазы, API/Playwright, фикстуры), блокер посад; 2026-09-03T05:56:09.947Z: [Фабл] Волна 1491-bigdocingest3 сдана: коммит efc44781 (checksum миграций пересобраны, heartbeat cancel). Приёмка 1496 (A1, Sol high) в очереди.; 2026-09-03T06:47:43.471Z: [A1 Фабл] Приёмка 1496-accbigdocingest3 = GO (Sol high): P19/W34 гейты rc=0, heartbeat cancel, регресс durable job/прогресс/resume/фикстуры. Коммит efc447; 2026-09-03T08:55:35.066Z: ПОСАДКА l96 (98a23c70) 03.09 ~09:00Z. Состав: l95 f7b9a4fd + publicflags3 (1477) + pistandby12 (1487) + bigdoc3-слияние 3f55a889 (1507) + entityboost6-сли; что в работе: body: Текущее состояние:** статус: review; что на проде: 2026-09-02T22:10:18.507Z: [A1 23:00 Фабл] Волна 1384-bigdocingest поставлена (A1, Luna xhigh): атомарный приём тела (нет pa; 2026-09-02T22:10:18.507Z: [A1 23:00 Фабл] Волна 1384-bigdocingest поставлена (A1, Luna xhigh): атомарный приём тела (нет partial source при 504/обрыве), resumable/chunked upload >5; 2026-09-02T23:43:09.812Z: [A1 05:05 Фабл] Волна 1384-bigdocingest сдана: коммит 420df8cb1e (атомарный приём тела, resumable/chunked upload, 202+job, экстракция батчами с приоритето; 2026-09-03T00:52:26.423Z: [A1 10:05 Фабл] Приёмка 1419-accbigdocingest = NO-GO (отчёт A1 /home/ubuntu/waves/ACCBIGDOCINGEST-REPORT.md). PASS: обрыв → нет partial source; HTML 11 МБ; 2026-09-03T04:59:25.254Z: [A1 Фабл] Волна 1439-bigdocingest2 сдана: коммит 8c728dc6 (durable extraction job в воркере, heartbeat-прогресс, resume в UI, partial/failed в UI, регресс; 2026-09-03T05:37:36.879Z: [A1 Фабл] Приёмка 1478-accbigdocingest2 = NO-GO (8c728dc6): функционал PASS (durable job + рестарт, прогресс/фазы, API/Playwright, фикстуры), блокер посад; 2026-09-03T05:56:09.947Z: [Фабл] Волна 1491-bigdocingest3 сдана: коммит efc44781 (checksum миграций пересобраны, heartbeat cancel). Приёмка 1496 (A1, Sol high) в очереди.; 2026-09-03T19:36:44.944Z: [Пост-QA l97, 03.09 ~20:35 IST] Релиз: прод = l97 9d69d2a02201f697d7fb3d04a0b58c4b2e9b1a02 (переключён 19:20Z). Живые проверки: /api/health 200, /api/read
- **Кто работал:**
- body: Текущее состояние:** статус: review; что на проде: 2026-09-02T22:10:18.507Z: [A1 23:00 Фабл] Волна 1384-bigdocingest поставлена (A1, Luna xhigh): атомарный приём тела (нет pa
- 2026-09-02T22:10:18.507Z: [A1 23:00 Фабл] Волна 1384-bigdocingest поставлена (A1, Luna xhigh): атомарный приём тела (нет partial source при 504/обрыве), resumable/chunked upload >5
- 2026-09-02T23:43:09.812Z: [A1 05:05 Фабл] Волна 1384-bigdocingest сдана: коммит 420df8cb1e (атомарный приём тела, resumable/chunked upload, 202+job, экстракция батчами с приоритето
- 2026-09-03T00:52:26.423Z: [A1 10:05 Фабл] Приёмка 1419-accbigdocingest = NO-GO (отчёт A1 /home/ubuntu/waves/ACCBIGDOCINGEST-REPORT.md). PASS: обрыв → нет partial source; HTML 11 МБ
- 2026-09-03T04:59:25.254Z: [A1 Фабл] Волна 1439-bigdocingest2 сдана: коммит 8c728dc6 (durable extraction job в воркере, heartbeat-прогресс, resume в UI, partial/failed в UI, регресс
- 2026-09-03T05:37:36.879Z: [A1 Фабл] Приёмка 1478-accbigdocingest2 = NO-GO (8c728dc6): функционал PASS (durable job + рестарт, прогресс/фазы, API/Playwright, фикстуры), блокер посад
- 2026-09-03T05:56:09.947Z: [Фабл] Волна 1491-bigdocingest3 сдана: коммит efc44781 (checksum миграций пересобраны, heartbeat cancel). Приёмка 1496 (A1, Sol high) в очереди.
- 2026-09-03T06:47:43.471Z: [A1 Фабл] Приёмка 1496-accbigdocingest3 = GO (Sol high): P19/W34 гейты rc=0, heartbeat cancel, регресс durable job/прогресс/resume/фикстуры. Коммит efc447
- 2026-09-03T19:23:21.231Z: Статус уточнён: серия WEB-496 (durable extraction job) СЕЛА в прод в составе l96 98a23c70 03.09 — миграция 20260903100000_web496_durable_extraction_job пр
- 2026-09-03T19:36:44.944Z: [Пост-QA l97, 03.09 ~20:35 IST] Релиз: прод = l97 9d69d2a02201f697d7fb3d04a0b58c4b2e9b1a02 (переключён 19:20Z). Живые проверки: /api/health 200, /api/read
- 2026-09-03T19:50:13.409Z: Браузерная проверка на живом проде l97, QA-аккаунт qa.c09.browser, 03.09 ~20:00Z. ЧАСТИЧНО. Что доказано: синтетический PDF (40 страниц, 164 349 байт, сге
- 2026-09-05T08:07:28.124Z: [05.09 08:07Z координатор] E.2–E.3 автор (волна 1935 INDEXINGBUDGET, A2, opus) = GO, коммит f4a3dd0e поверх 6930c683: бюджет индексации на порцию с чекпой
- **Ветки/бандлы/отчёты:**
- body: Текущее состояние:** статус: review; что на проде: 2026-09-02T22:10:18.507Z: [A1 23:00 Фабл] Волна 1384-bigdocingest поставлена (A1, Luna xhigh): атомарный приём тела (нет pa
- 2026-09-02T23:43:09.812Z: [A1 05:05 Фабл] Волна 1384-bigdocingest сдана: коммит 420df8cb1e (атомарный приём тела, resumable/chunked upload, 202+job, экстракция батчами с приоритето
- 2026-09-03T00:52:26.423Z: [A1 10:05 Фабл] Приёмка 1419-accbigdocingest = NO-GO (отчёт A1 /home/ubuntu/waves/ACCBIGDOCINGEST-REPORT.md). PASS: обрыв → нет partial source; HTML 11 МБ
- 2026-09-03T04:59:25.254Z: [A1 Фабл] Волна 1439-bigdocingest2 сдана: коммит 8c728dc6 (durable extraction job в воркере, heartbeat-прогресс, resume в UI, partial/failed в UI, регресс
- 2026-09-03T05:56:09.947Z: [Фабл] Волна 1491-bigdocingest3 сдана: коммит efc44781 (checksum миграций пересобраны, heartbeat cancel). Приёмка 1496 (A1, Sol high) в очереди.
- 2026-09-03T06:47:43.471Z: [A1 Фабл] Приёмка 1496-accbigdocingest3 = GO (Sol high): P19/W34 гейты rc=0, heartbeat cancel, регресс durable job/прогресс/resume/фикстуры. Коммит efc447
- 2026-09-03T08:55:35.066Z: ПОСАДКА l96 (98a23c70) 03.09 ~09:00Z. Состав: l95 f7b9a4fd + publicflags3 (1477) + pistandby12 (1487) + bigdoc3-слияние 3f55a889 (1507) + entityboost6-сли
- 2026-09-03T19:36:44.944Z: [Пост-QA l97, 03.09 ~20:35 IST] Релиз: прод = l97 9d69d2a02201f697d7fb3d04a0b58c4b2e9b1a02 (переключён 19:20Z). Живые проверки: /api/health 200, /api/read
- 2026-09-05T08:07:28.124Z: [05.09 08:07Z координатор] E.2–E.3 автор (волна 1935 INDEXINGBUDGET, A2, opus) = GO, коммит f4a3dd0e поверх 6930c683: бюджет индексации на порцию с чекпой
- 2026-09-05T08:55:20.945Z: [05.09 08:55Z координатор] ПРИЁМКА круга 1 (ACCINDEXINGBUDGET, M4 luna, PG17+pgvector, реальный queue-path) = NO-GO, блокер E.2: withSourceIndexingPortion
- 2026-09-05T09:32:22.180Z: [05.09 09:32Z координатор] Круг 2 (волна 1976 INDEXINGBUDGET2, A2, opus) = GO по автору, коммит 423ba9b5: overrun порции больше не расплющивается внешним
- **KNOWN ISSUES / ТРАБЛШУТИНГ:** симптом → проверка → причина (file:line, если есть) → лечение
- body: Текущее состояние:** статус: review; что на проде: 2026-09-02T22:10:18.507Z: [A1 23:00 Фабл] Волна 1384-bigdocingest поставлена (A1, Luna xhigh): атомарный приём тела (нет pa
- 2026-09-03T00:52:26.423Z: [A1 10:05 Фабл] Приёмка 1419-accbigdocingest = NO-GO (отчёт A1 /home/ubuntu/waves/ACCBIGDOCINGEST-REPORT.md). PASS: обрыв → нет partial source; HTML 11 МБ
- 2026-09-03T04:59:25.254Z: [A1 Фабл] Волна 1439-bigdocingest2 сдана: коммит 8c728dc6 (durable extraction job в воркере, heartbeat-прогресс, resume в UI, partial/failed в UI, регресс
- 2026-09-03T06:47:43.471Z: [A1 Фабл] Приёмка 1496-accbigdocingest3 = GO (Sol high): P19/W34 гейты rc=0, heartbeat cancel, регресс durable job/прогресс/resume/фикстуры. Коммит efc447
- 2026-09-03T08:55:35.066Z: ПОСАДКА l96 (98a23c70) 03.09 ~09:00Z. Состав: l95 f7b9a4fd + publicflags3 (1477) + pistandby12 (1487) + bigdoc3-слияние 3f55a889 (1507) + entityboost6-сли
- 2026-09-03T09:44:26.283Z: [пост-QA l96 на ЖИВОМ проде, 03.09 09:39-09:45Z] ПОДТВЕРЖДЕНО на живом проде. Миграция 20260903100000_web496_durable_extraction_job применена в 08:53:50 (
- 2026-09-03T19:23:21.231Z: Статус уточнён: серия WEB-496 (durable extraction job) СЕЛА в прод в составе l96 98a23c70 03.09 — миграция 20260903100000_web496_durable_extraction_job пр
- 2026-09-03T19:36:44.944Z: [Пост-QA l97, 03.09 ~20:35 IST] Релиз: прод = l97 9d69d2a02201f697d7fb3d04a0b58c4b2e9b1a02 (переключён 19:20Z). Живые проверки: /api/health 200, /api/read
- 2026-09-03T19:50:13.409Z: Браузерная проверка на живом проде l97, QA-аккаунт qa.c09.browser, 03.09 ~20:00Z. ЧАСТИЧНО. Что доказано: синтетический PDF (40 страниц, 164 349 байт, сге
- 2026-09-05T08:55:20.945Z: [05.09 08:55Z координатор] ПРИЁМКА круга 1 (ACCINDEXINGBUDGET, M4 luna, PG17+pgvector, реальный queue-path) = NO-GO, блокер E.2: withSourceIndexingPortion
- 2026-09-05T09:32:22.180Z: [05.09 09:32Z координатор] Круг 2 (волна 1976 INDEXINGBUDGET2, A2, opus) = GO по автору, коммит 423ba9b5: overrun порции больше не расплющивается внешним
- **Эволюция:**
- 2026-09-02T22:10:18.507Z → [A1 23:00 Фабл] Волна 1384-bigdocingest поставлена (A1, Luna xhigh): атомарный приём тела (нет partial source при 504/обрыве), resumable/chunked upload >5 МБ, 202+job вместо синхро
- 2026-09-02T23:43:09.812Z → [A1 05:05 Фабл] Волна 1384-bigdocingest сдана: коммит 420df8cb1e (атомарный приём тела, resumable/chunked upload, 202+job, экстракция батчами с приоритетом, статус partial, рекомен
- 2026-09-03T00:52:26.423Z → [A1 10:05 Фабл] Приёмка 1419-accbigdocingest = NO-GO (отчёт A1 /home/ubuntu/waves/ACCBIGDOCINGEST-REPORT.md). PASS: обрыв → нет partial source; HTML 11 МБ и TXT 3.36 МБ байт-в-байт
- 2026-09-03T04:59:25.254Z → [A1 Фабл] Волна 1439-bigdocingest2 сдана: коммит 8c728dc6 (durable extraction job в воркере, heartbeat-прогресс, resume в UI, partial/failed в UI, регрессии). Приёмка 1478 (A1, Sol
- 2026-09-03T05:37:36.879Z → [A1 Фабл] Приёмка 1478-accbigdocingest2 = NO-GO (8c728dc6): функционал PASS (durable job + рестарт, прогресс/фазы, API/Playwright, фикстуры), блокер посадки — миграционные checksum
- 2026-09-03T05:56:09.947Z → [Фабл] Волна 1491-bigdocingest3 сдана: коммит efc44781 (checksum миграций пересобраны, heartbeat cancel). Приёмка 1496 (A1, Sol high) в очереди.
- 2026-09-03T06:47:43.471Z → [A1 Фабл] Приёмка 1496-accbigdocingest3 = GO (Sol high): P19/W34 гейты rc=0, heartbeat cancel, регресс durable job/прогресс/resume/фикстуры. Коммит efc44781 (круг 3) → dry-run на l
- 2026-09-03T08:55:35.066Z → ПОСАДКА l96 (98a23c70) 03.09 ~09:00Z. Состав: l95 f7b9a4fd + publicflags3 (1477) + pistandby12 (1487) + bigdoc3-слияние 3f55a889 (1507) + entityboost6-слияние cf05efcf (1509) + mob
- 2026-09-03T09:44:26.283Z → [пост-QA l96 на ЖИВОМ проде, 03.09 09:39-09:45Z] ПОДТВЕРЖДЕНО на живом проде. Миграция 20260903100000_web496_durable_extraction_job применена в 08:53:50 (всего применённых миграций
- 2026-09-03T19:23:21.231Z → Статус уточнён: серия WEB-496 (durable extraction job) СЕЛА в прод в составе l96 98a23c70 03.09 — миграция 20260903100000_web496_durable_extraction_job применена, приёмка ACCBIGDOC
- 2026-09-03T19:36:44.944Z → [Пост-QA l97, 03.09 ~20:35 IST] Релиз: прод = l97 9d69d2a02201f697d7fb3d04a0b58c4b2e9b1a02 (переключён 19:20Z). Живые проверки: /api/health 200, /api/ready/paid 200, /api/ready sou
- 2026-09-03T19:50:13.409Z → Браузерная проверка на живом проде l97, QA-аккаунт qa.c09.browser, 03.09 ~20:00Z. ЧАСТИЧНО. Что доказано: синтетический PDF (40 страниц, 164 349 байт, сгенерирован на месте) загруж
- 2026-09-05T08:07:28.124Z → [05.09 08:07Z координатор] E.2–E.3 автор (волна 1935 INDEXINGBUDGET, A2, opus) = GO, коммит f4a3dd0e поверх 6930c683: бюджет индексации на порцию с чекпойнтом и возобновлением вмес
- 2026-09-05T08:55:20.945Z → [05.09 08:55Z координатор] ПРИЁМКА круга 1 (ACCINDEXINGBUDGET, M4 luna, PG17+pgvector, реальный queue-path) = NO-GO, блокер E.2: withSourceIndexingPortionBudget() бросает SourceInd
- 2026-09-05T09:32:22.180Z → [05.09 09:32Z координатор] Круг 2 (волна 1976 INDEXINGBUDGET2, A2, opus) = GO по автору, коммит 423ba9b5: overrun порции больше не расплющивается внешним catch processDocument — ти
- **Следующий шаг:** см. текущую работу из комментариев: 2026-09-03T19:36:44.944Z: [Пост-QA l97, 03.09 ~20:35 IST] Релиз: прод = l97 9d69d2a02201f697d7fb3d04a0b58c4b2e9b1a02 (переключён 19:20Z). Живые проверки: /api/health 200, /api/read
Лента
2026-09-02T22:10:18.507Z · Fable[A1 23:00 Фабл] Волна 1384-bigdocingest поставлена (A1, Luna xhigh): атомарный приём тела (нет partial source при 504/обрыве), resumable/chunked upload >5 МБ, 202+job вместо синхронной обработки, экстракция PDF потоково/батчами с приоритетом пользовательской загрузки, честный статус partial, замеры; рекомендации по nginx применю на проде. Связка: WEB-492 (realtime, 1383), матрица 1350.
2026-09-02T23:43:09.812Z · Fable[A1 05:05 Фабл] Волна 1384-bigdocingest сдана: коммит 420df8cb1e (атомарный приём тела, resumable/chunked upload, 202+job, экстракция батчами с приоритетом, статус partial, рекомендации nginx). Отчёт: A1 /home/ubuntu/waves/BIGDOCINGEST-REPORT.md. Приёмка 1419 (A1, Sol high, в очереди) → l95 + nginx на проде.
2026-09-03T00:52:26.423Z · Fable[A1 10:05 Фабл] Приёмка 1419-accbigdocingest = NO-GO (отчёт A1 /home/ubuntu/waves/ACCBIGDOCINGEST-REPORT.md). PASS: обрыв → нет partial source; HTML 11 МБ и TXT 3.36 МБ байт-в-байт; resumable API; PDF 8.9 МБ/600 стр за ~6 с; приоритет user над background; nginx-рекомендации; ingest 56/56. Блокеры: job fire-and-forget в web-процессе (нужен durable job в воркере); прогресс на parsing «running 0 → 600/600» без фаз/heartbeat, status poll блокируется; UI не сохраняет uploadId (resume создаёт новую сессию); partial/failed не доказаны в UI, done/progress=0 для непостраничных; sources 64/67 и type-check 364 диагностики. Круг 2 = волна 1439-bigdocingest2 (A1, Luna xhigh, от 420df8cb).
2026-09-03T04:59:25.254Z · Fable[A1 Фабл] Волна 1439-bigdocingest2 сдана: коммит 8c728dc6 (durable extraction job в воркере, heartbeat-прогресс, resume в UI, partial/failed в UI, регрессии). Приёмка 1478 (A1, Sol high) в очереди.
2026-09-03T05:37:36.879Z · Fable[A1 Фабл] Приёмка 1478-accbigdocingest2 = NO-GO (8c728dc6): функционал PASS (durable job + рестарт, прогресс/фазы, API/Playwright, фикстуры), блокер посадки — миграционные checksum (compatibility manifest / activation migration set не пересобраны). Круг 3 = волна 1491 (A1, Luna medium). Посадка потребует новой unit note-clone-extraction.service/.timer и env воркера — в land-l96.sh.
2026-09-03T05:56:09.947Z · Fable[Фабл] Волна 1491-bigdocingest3 сдана: коммит efc44781 (checksum миграций пересобраны, heartbeat cancel). Приёмка 1496 (A1, Sol high) в очереди.
2026-09-03T06:47:43.471Z · Fable[A1 Фабл] Приёмка 1496-accbigdocingest3 = GO (Sol high): P19/W34 гейты rc=0, heartbeat cancel, регресс durable job/прогресс/resume/фикстуры. Коммит efc44781 (круг 3) → dry-run на l96-candidate; посадка l96 с новым unit note-clone-extraction.service/.timer и env воркера.
2026-09-03T08:55:35.066Z · coordinatorПОСАДКА l96 (98a23c70) 03.09 ~09:00Z. Состав: l95 f7b9a4fd + publicflags3 (1477) + pistandby12 (1487) + bigdoc3-слияние 3f55a889 (1507) + entityboost6-слияние cf05efcf (1509) + mob4-слияние 98a23c70 (1510). Артефакт me2-standalone-linux-arm64-98a23c70-20260903T084751Z, sha 92323c7ba794715f0d503b51b392475d743578f8459fd98906495e89a69ebe7d; релиз /home/ubuntu/prod/releases/arm64-l96-20260903T084751Z, run /home/ubuntu/prod/shared/run/l96-98a23c70. Гейты сборки: prisma generate, P19 178/178, schema-drift ДО и ПОСЛЕ сборки, W34 activation evidence ok=true, prebuild, паритет NEXT_PUBLIC 12/12, next build, prepare-standalone. Аттестация ephemeral-l96.pem, подпись владельца VERIFY OK + негативная проба REJECTED. Boot-контракт: mode=enforce, no contract issues. Сухой прогон на 3011: health 200, paidReady true, posture enforce_ready, failures []. Миграции применены: 20260830100000_entityboost2_durable_budget, 20260830130000_entityboost3_durable_jobs, 20260830140000_entityboost4_source_delete_cleanup, 20260830150000_entityboost6_claimed_provider_fence, 20260903100000_web496_durable_extraction_job. После flip: health 200, /api/ready sourceCommit=98a23c70, paidReady true, публичные nb.wool2.online health 200 и ready/paid 200; ag-sip-native перезапущен, readiness 4080=200, LEASE_LOST=0. Откат: l95 f7b9a4fd (rel arm64-l95-20260903T050015Z, run l95-f7b9a4fd), бэкап юнита /home/ubuntu/prod/shared/nc-a1.service.bak-l92.
2026-09-03T09:44:26.283Z · coordinator[пост-QA l96 на ЖИВОМ проде, 03.09 09:39-09:45Z] ПОДТВЕРЖДЕНО на живом проде. Миграция 20260903100000_web496_durable_extraction_job применена в 08:53:50 (всего применённых миграций в боевой БД 183). Таблица ExtractionJob создана, 18 колонок, индексы ExtractionJob_sourceId_key / ExtractionJob_claim_idx / ExtractionJob_lease_idx на месте. В таблице есть строка extract_cmtkm80jo01u8z8vgj446km1x (status=queued, attempts=1) — перенесена миграцией из существующего источника. Воркер индексации живой: nc-a1-indexing.timer отработал за 13 с до проверки, heartbeat-файл /home/ubuntu/prod/shared/run/ingest-worker-heartbeat.json обновлён в 09:42:02, последние прогоны 'DONE total=0 processed=0 failed=0 poisoned=0'. Ошибок по путям extraction/ingest/deepen/doc_ner в журнале nc-a1 с момента переключения (09:00Z) — НОЛЬ.
2026-09-03T19:23:21.231Z · coordinatorСтатус уточнён: серия WEB-496 (durable extraction job) СЕЛА в прод в составе l96 98a23c70 03.09 — миграция 20260903100000_web496_durable_extraction_job применена, приёмка ACCBIGDOCINGEST3 = GO. Остаток по тикету — живая продуктовая проверка на проде (браузер), поставлю на M4 при первом свободном слоте; сейчас там три волны.
2026-09-03T19:36:44.944Z · coordinator[Пост-QA l97, 03.09 ~20:35 IST] Релиз: прод = l97 9d69d2a02201f697d7fb3d04a0b58c4b2e9b1a02 (переключён 19:20Z). Живые проверки: /api/health 200, /api/ready/paid 200, /api/ready sourceCommit=9d69d2a0, SIP 4080 status=ready + stasis connected=true. Журнал с 19:20Z: новых классов ошибок НЕТ, только 2 записи TrustedIdentityError на неавторизованных запросах (граница безопасности, класс существовал и на l96). ERR_MODULE_NOT_FOUND (WEB-500): 0 записей — но окно наблюдения всего ~10 минут и в сравнительном окне l96 17:00-19:00Z тоже 0, так что это НЕ доказательство исправления, класс был привязан к конкретному трафику. Браузерная проверка на живом проде выполнена с M4 (Chromium 1440x900 и 390x844, без ввода паролей): https://nb.wool2.online/ отдаёт 307 на /login?callbackUrl=%2F, страница входа 200, заголовок SIXBYY. Загрузка документа и извлечение PDF — за авторизацией, поэтому продуктовый осмотр без сессии НЕВОЗМОЖЕН. Скриншоты: /Users/milamarty/waves/postqa-l97-evidence/desktop-entry.png. Инфраструктурная часть подтверждена ранее: миграция 20260903100000_web496_durable_extraction_job применена, таблица ExtractionJob на месте, воркер пишет heartbeat. Чтобы закрыть продуктовую часть без owner-а, нужна сессия QA-аккаунта (cookie), а не ввод пароля.
2026-09-03T19:50:13.409Z · coordinatorБраузерная проверка на живом проде l97, QA-аккаунт qa.c09.browser, 03.09 ~20:00Z. ЧАСТИЧНО. Что доказано: синтетический PDF (40 страниц, 164 349 байт, сгенерирован на месте) загружается через 'Add Your First Source' и СОХРАНЯЕТСЯ — после полной перезагрузки страницы счётчик показывает '2 sources' и имя qa-probe.pdf присутствует в DOM. То есть путь приёма документа на проде живой, ошибок в сети при загрузке не было. Что НЕ доказано: открыть сам документ и замерить время до первого видимого текста не удалось — список источников в этом аккаунте отдаётся только после выбора тетради, а автоматизация по DOM до карточки источника не дошла (клики попадали в скрипт-узлы и в баланс кошелька). Поэтому утверждать, что извлечение из PDF доводится до конца и текст показывается за ≤5 с, я НЕ могу. Нужен либо стабильный селектор/тестовый id на карточке источника и на кнопке редактора, либо приёмка волной с полноценным Playwright-сценарием. ⚠️ Осталось на уборку: в тетради 'WEB-477 P11FIX2 disposable QA notebook' лежат 2 тестовых источника qa-probe.pdf, созданные этой проверкой.
2026-09-05T08:07:28.124Z · coordinator[05.09 08:07Z координатор] E.2–E.3 автор (волна 1935 INDEXINGBUDGET, A2, opus) = GO, коммит f4a3dd0e поверх 6930c683: бюджет индексации на порцию с чекпойнтом и возобновлением вместо 120 с на весь источник; overrun = retry/resumable, poisoned только для детерминированных падений; corpusCompleteness считает только done; статус индексации в /api/ingest/status и карточке; poisoned-по-бюджету источники возобновляются после посадки. Приёмка 1967-accindexingbudget (M4, luna): порции/чекпойнт/идемпотентность батчей, негатив poisoned, совместимость с oneshot-воркером nc-a1-indexing --limit 1 (ключевой вопрос прода).
2026-09-05T08:55:20.945Z · coordinator[05.09 08:55Z координатор] ПРИЁМКА круга 1 (ACCINDEXINGBUDGET, M4 luna, PG17+pgvector, реальный queue-path) = NO-GO, блокер E.2: withSourceIndexingPortionBudget() бросает SourceIndexingPortionBudgetExceededError (sourceIndexingBudget.ts:184-207), но processDocument() ловит её внешним catch и возвращает {success:false} (processDocumentRuntime.ts:730-740) → очередь видит isProcessDocumentPaused=false и идёт в persistIndexingFailure (sourceIndexingQueue.ts:947-995), resumable-ветка :996-1024 не участвует; воспроизведено: embedding 40 мс / budget 5 мс → processed 1, failed 1, paused 0 — при штатном oneshot без --include-failed источник не переигрывается. Oneshot: --limit 1 = источники, не порции; после pause источник pending — совместимо. Круг 2 = 1976-indexingbudget2 (A2, opus).
2026-09-05T09:32:22.180Z · coordinator[05.09 09:32Z координатор] Круг 2 (волна 1976 INDEXINGBUDGET2, A2, opus) = GO по автору, коммит 423ba9b5: overrun порции больше не расплющивается внешним catch processDocument — типизированный paused-результат, очередь идёт в resumable-ветку (чекпойнт, источник pending), следующий oneshot без --include-failed продолжает с места; poisoned только для детерминированных падений; «failed» вместо «pending» был неверным соседом (кандидатный запрос воркера берёт pending безусловно, failed — только под --include-failed и attempts<3). Приёмка 1985-accindexingbudget2 (M4, luna, реальный queue-path 40 мс/5 мс).
2026-09-06T04:09:56.596Z · coordinator[06.09 04:09Z координатор] [2026-09-06T04:09Z координатор] ПРОД l113c, большой PDF cmtkm80jo01u8z8vgj446km1x после revive: бюджет операций пройден (новые operationId, эмбеддинги SETTLED_ACTUAL), но источник → failed: Prisma «Transaction already closed… timeout 5000 ms, 5020 ms passed» в $executeRaw при персисте чанков (interactive tx 5 с). Это второй дефект пути больших документов (после бюджета). → Волна 2173-bigpdftxtimeout (A2, luna xhigh, база l113c): долгие операции вне tx, батчи чанков идемпотентно. KNOWN ISSUE: проверка «revive → done» для большого PDF требует обоих фиксов (2171 для txt, 2173 для PDF-персиста).
2026-09-06T07:42:39.362Z · coordinator[06.09 07:42Z координатор] [2026-09-06T07:42Z координатор] Волна 2173b-bigpdftxtimeoutb (A2, luna xhigh, продолжение salvage): VERDICT=PASS, commit=66e56137 (база l113c) — эмбеддинги/чтение тела до persistence boundary, чанки пишутся идемпотентными multi-row upsert короткими транзакциями. Независимая приёмка 2202-accbigpdftx поставлена (sol xhigh, с реальной PG). GO → l113d → revive PDF на проде как финальная проверка.
2026-09-06T08:32:05.557Z · coordinator[06.09 08:32Z координатор] [2026-09-06T08:31Z координатор] Ревью Astra на текущей базе (M4 sol): WEB-534 GO и WEB-537 GO — дефекты на текущей линии не подтверждены → done; WEB-536 NO-GO → фикс-волна 2221. Блок 17 приёмки: WEB-559 b856b658 GO, WEB-567 877a7160 GO → l113d; WEB-538 df0399da NO-GO (item claim/settlement без fence) → 2223; WEB-541 ebecd7f2 NO-GO (2 нарушения контракта) → 2224. Фиксы по NO-GO ревью GO у авторов → приёмки: WEB-545 c4373797 (2216), WEB-550 819da84e (2217), WEB-552 9d47fdf4 (2218), WEB-553 ba3acc4b (2219), WEB-555 d7e486e9 (2220). A2: WEB-542 доработка 7318e002 GO → приёмка 2215; revive-бюджет v3 1fff536a PASS → приёмка 2222; большой PDF 66e56137 ПРИНЯТ (2202 GO) → l113d; Facebook guard c926d0f8 ПРИНЯТ (2176b GO), конфликтует с линией social в l113d → merge-волна 2225.
2026-09-06T09:09:52.852Z · coordinator[06.09 09:09Z координатор] [2026-09-06T09:09Z координатор] ПОСАЖЕНО: ПРОД = l113d 4c73d845 (09:03Z, без простоя; оба бэкенда ready, paid enforce_ready, edge 200×4; миграции применены (184 в репо), hetzbk l113d-4c73d845 + env-pack, Pi standby → l113d). В составе (21 коммит над l113c): большой PDF — персист чанков короткими idempotent-транзакциями (WEB-086/496/467), периметр stream-safe (WEB-495/093), WEB-554 отзыв тетради, WEB-540 translation claim, WEB-543 customer guard, WEB-559 binary adapter, WEB-567 issuer authority, WEB-558 facebook attempt, WEB-491 mobile cold-start, WEB-370 пакет телефонии (репо-часть). Откат = l113c 0390afc9. На проде после посадки: revive PDF cmtkm80jo… → running (персист прошёл 5-с барьер — наблюдаю до done); big-test всё ещё упирается в бюджет (identity v4 — волна 2229).
2026-09-06T09:11:21.524Z · coordinator[06.09 09:11Z координатор] [2026-09-06T09:11Z координатор] ПРОВЕРКА НА ПРОДЕ l113d: большой QA-PDF cmtkm80jo01u8z8vgj446km1x после revive индексируется порциями с чекпоинтом (WEB-496 round 2 + персист 66e56137): checkpoint phase=chunks portionSize=128 totalChunks=9801 completedChunks=640 и растёт, статус running, ошибок транзакции нет («paused at checkpoint; re-queued» — штатный ре-queue между порциями). Довести до done — наблюдаю; ожидание ~9801/128 ≈ 77 порций.
2026-09-06T09:55:04.881Z · coordinator[06.09 09:55Z координатор] [2026-09-06T09:55Z координатор] ПРОВЕРКА НА ПРОДЕ l113d (journalctl nc-a1-indexing): большой PDF cmtkm80jo01u8z8vgj446km1x на l113d дошёл по чекпоинтам до 9801/9801 (checkpoint-ы работают), но ФИНАЛИЗАЦИЯ падает: 09:48:24 [WIKI-compile] hook failed «This paid call path is not registered in the release manifest» (billing_guard_state_unavailable, channel wiki_compile, serviceIdentity source-indexing), затем 09:48:32 «Transaction API error: Transaction already closed … timeout 5000 ms, 7757 ms passed» → success=false chunks=0, повтор ×4 (09:48–09:52). Документ не станет done без фикса → волна 2252-bigdoc-finalize-tx (A2, luna xhigh, real PG): короткая идемпотентная транзакция финализации, тяжёлое вне tx, hook не роняет финализацию, статус после падения = paused 9801/9801, не failed/0. KNOWN ISSUES: симптом «checkpoint дошёл до N/N и дальше failed chunks=0» → journalctl -u nc-a1-indexing | grep -E "Transaction already closed|hook failed" → финализация в 5-с транзакции.
2026-09-06T10:48:43.544Z · coordinator[06.09 10:48Z координатор] [2026-09-06T10:48Z координатор] Волна 2252 (A2, luna xhigh, real PG) сдала 3c6a6f86 (GO): короткая идемпотентная транзакция финализации, hook вне tx, статус после падения = paused N/N. Приёмка 2275-accbigdocfinalize (A2, sol xhigh, PG, 10 000 чанков). После GO — посадка l113f и revive документа cmtkm80jo… на проде.
2026-09-06T11:15:09.042Z · coordinator[06.09 11:15Z координатор] [2026-09-06T11:15Z координатор] Приёмка фикса финализации большого PDF (2275c, claude-opus, real PG, 10 000 чанков) = NO-GO 3c6a6f86 с одним блокером: корень и фикс верны (финализация короткая, hook вне tx, WIKI-compile отказ не роняет и пишется в Source.metadata), но документы без индексируемых чанков (скан без текстового слоя / пустой) потеряли терминальное состояние no-indexable-chunks и висят в finalization-pending до poisoned → круг 2 = 2285-bigdoc-finalize2 (A2, luna xhigh, PG). KNOWN ISSUES и SQL диагностики — в ACCBIGDOCFINALIZE-REPORT.md (перенести в тикет при посадке).
2026-09-06T11:33:23.232Z · coordinator[06.09 11:33Z координатор] [2026-09-06T11:33Z координатор] ПРИНЯТО: роли C5-C круг 6 (2280 ACCROLESREFUSAL6, sol xhigh) = GO 59d4f3ee — детерминированный отказ на прямом отрицании предиката, judge для чужого предиката; RED-наборы 2235/2265 зелёные → кандидат l113f. WEB-508 круг 2 (2281 ACCWEB508B) = GO b93d862f (коммит A 8c76aa7d только infra/sip) → l113f; хост-синк в окне. Фикс большого PDF круг 2: автор 2285 сдал 76dcb114 (GO) → приёмка 2290 (sol, PG).
2026-09-06T11:59:28.538Z · coordinator[06.09 11:59Z координатор] [2026-09-06T11:59Z координатор] Приёмка 2290 (sol, real PG) = NO-GO 76dcb114: финализатор верно даёт terminal no-indexable-chunks, но пользовательский путь для пустого файла/скана (Source.content NULL → indexSourceNow не доходит до финализатора из-за protected claim content IS NOT NULL) не чинится → круг 3 = 2300-bigdoc-finalize3 (A2, luna xhigh, PG, через пользовательский путь).
2026-09-06T12:25:33.856Z · coordinator[06.09 12:25Z координатор] [2026-09-06T12:25Z координатор] Авторы сдали GO: big-PDF круг 3 7779df11 (2300) → приёмка 2311 (A2, sol xhigh, PG, пользовательский путь); WEB-552 круг 3 ecca7846 (2306) → приёмка 2312 (M4). На A1 поставлен guard worktree волн (таймер 30 мин, /var/log/a1-waves-disk-guard.log).
2026-09-06T12:48:50.574Z · coordinator[06.09 12:48Z координатор] [2026-09-06T12:48Z координатор] ПРИНЯТО: финализация большого PDF круг 3 — 2311 ACCBIGDOCFINALIZE3 (sol xhigh, PG) = GO 7779df11 (цепочка 3c6a6f86→76dcb114→7779df11: короткая идемпотентная транзакция финализации, hook вне tx, документы без текста → терминальное no-indexable-chunks через пользовательский путь) → кандидат l113g. После посадки — revive документа cmtkm80jo01u8z8vgj446km1x по инструкции приёмки. WEB-560 build-fix: автор 2309 сдал 742066c1 (GO) → приёмка 2317 (A2, sol xhigh, PG, импорт-тест phase-production-build).
2026-09-06T13:17:03.185Z · coordinator[06.09 13:17Z координатор] [2026-09-06T13:15Z координатор] ПОСАЖЕНО: ПРОД = l113g 4c322c46 (flip 13:14:18Z, без простоя; оба бэкенда ready, paid enforce_ready, edge 200×8; миграция WEB-550 file_link_lifecycle применена (188/193); hetzbk l113g-4c322c46 + env-pack, Pi standby → l113g). Состав (20 коммитов над l113f): большой PDF — финализация 3 круга (3c6a6f86, 76dcb114, 7779df11: короткая идемпотентная tx, hook вне tx, no-indexable-chunks для документов без текста), revive-identity 5 + WEB-499 doc_ner identity (a958df4b…42b61743), WEB-531 SEC-014 3 круга (ca35fbeb, ad7c0cfd, e8c97f1f — слияние), WEB-568 SEC-046 (84dce358, faf26ab9), WEB-550 SEC-033 (819da84e, ed246cae), WEB-552 SEC-035 (9d47fdf4, ecca7846), манифесты (188 миграций). Откат = l113f 221e8f39 (RUN l113f-221e8f39, REL arm64-l113f-20260906T123500Z). Дальше: revive документа cmtkm80jo… по инструкции приёмки; l113h = roles r3 (приёмка), WEB-560 build-fix (приёмка), WEB-507 8b155fc1.
2026-09-06T13:21:11.831Z · coordinator[06.09 13:21Z координатор] [2026-09-06T13:21Z координатор] ПРОВЕРЕНО НА ПРОДЕ l113g: большой PDF cmtkm80jo01u8z8vgj446km1x — revive (poisoned retry-limit-exhausted → pending, checkpoint 9801/9801 сохранён) → воркер: result success=true chunks=9801 poisoned=0 → status=done, chunkCount=9801, wikiCompile=skipped (unregistered-release-manifest, ожидаемо). Финализация большого документа на проде работает. big-test 1782161239510l4gl4zzur revive → pending (revive-identity v5), наблюдаю.
2026-09-06T15:02:11.419Z · coordinator[06.09 15:02Z координатор] [2026-09-06T15:02Z координатор] ПРОВЕРЕНО НА ПРОДЕ l113h: big-test 1782161239510l4gl4zzur — после revive --new-attempt (новый parent бюджета) воркер довёл индексацию: status=done, chunkCount=3932 (15:01Z). Оба долго висевших документа владельца (big PDF 9801 и big-test 3932) закрыты на l113g/l113h. KNOWN ISSUES: документ с исчерпанным бюджетом операции (attempts>limit) оживляется только из релизного дерева с RUN env; обычный revive/unpoison возвращает retry-limit.
2026-09-08T11:16:55.955Z · coordinator[08.09 11:16Z координатор] **GO, ждёт независимой приёмки.** волна 2784: приём тела больших документов сделан атомарным (частичное сохранение после 504 было хуже отказа), разобрана остановка PDF-экстракции
Вершина кандидата `см. WEB496.bundle на M4`, база — боевая линия l113s `49bc58dcc508c612b337c92af7d7d5bb71c7a681`.
Приёмка поставлена волной из пачки 2787–2794 (A2). Посадка — только после её вердикта: вердикт авторской волны это самооценка, а не ворота.
2026-09-08T15:51:06.423Z · coordinator[08.09 15:51Z координатор] Статус → **done**. приём тела больших документов сделан атомарным — обрыв на середине больше не оставляет частичный документ, который выглядит целым
Посажено на прод линией **l113u** `4e0e5406db8b3844bfc7bc43148c37ddd4cdbf99` (артефакт `me2-standalone-linux-arm64-4e0e5406-20260908T151242Z`, sha256 `43a6d010…`), флип 08.09 15:34Z.
Проверено ПОСЛЕ флипа, не по факту деплоя: оба бэкенда `ready=true` и `paidReady=true` с новым releaseId; корень `https://app.sixbyy.com/` = 200; вебхук Telegram = 401; готовность SIP 4080 = 200; строк `LEASE_LOST` — 0.
Откат: l113t `a45e820c7ec1043fe601974fe24fe5026eaaf118`, релиз `arm64-l113t-20260908T131657Z`.
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-496","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-09-08T15:51:06.421Z