WEB board

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

Пооператорные подписи не приходят: движок не шлёт providerCaptions

Парковка P2 ведёт: backup-opus
Суть
1. Суть одной фразой: Субтитры на каждого оператора.
2. Где мы сейчас (13.09.2026): engine-половина не задеплоена (nc-video-engine Pi :5190); видео выключено; app-коммит 1c01d428 потерян → волна 1517.
3. Хронология: работа частично сделана, app-коммит потерян; видео off.
4. Карта документов и кода: nc-video-engine Pi :5190; волна 1517.
5. Остаток: владелец — включить видео (R4.1); волна 1517 — восстановить app-половину; координатор — деплой engine.
6. Критерий закрытия: субтитры на оператора работают на живом прогоне.

---

## история (тело до 13.09.2026)

videomax 19.08, прогон cmt01mv9d006mvlrslgp64dg3 (mode=cloud_boost, routingProfile=max). Операторов реально ДВА: providerActual=ensemble_merge, modelActual=gemini-2.5-flash + us.amazon.nova-2-lite-v1:0. Во всех трёх сценах scene.providerCaptions === null; в PDF 0 вхождений «Gemini», «Nova», «оператор». Рендер УМЕЕТ (export.ts печатает «Оператор: …» и «Результат (слияние): …»), контракт cloud/contract.ts поле принимает — движок ingest его не прислал. Итог: слияние произошло, «кто что увидел» не показано.

## 20.08 ~16:00 волна videoengine (A1): ФИКС ГОТОВ, НЕ ЗАДЕПЛОЕН
Пооператорные подписи (providerCaptions) реализованы; мутационный тест: подпись только на первом фрагменте — 3/4 падают, с фиксом 4/4 зелёные. Фактчек PDF по трём пунктам owner: одностраничник ЕСТЬ, обрывов ... НЕТ, все провайдеры подписаны — НЕТ (этот тикет и чинит). Проверено на записанных данных; живой max-прогон (единицы центов) не гонялся без явного слова. Отчёт: A1 ~/waves/VIDEOENGINE-REPORT.md. Осталось: деплой + живой прогон.

## 22.08 14:31 UTC — PDF SCOPE LEDGER — reconcile provider-caption evidence in final Video Atlas
Current records conflict: earlier trail says providerCaptions code-ready/not deployed, while WEB-064 later records a live deep run with per-scene Gemini+TwelveLabs captions. Do not resolve by assertion. The final real Video Atlas acceptance must bind run id, engine serving identity and PDF bytes, then prove each participating provider is named with its own caption/evidence and degraded lanes are described in human language. Main scope ledger: WEB-083.

## 2026-08-23 PDFPOSTQA: NEEDS-PAID — ensemble video run required.

PDFPOSTQA: бесплатные сценарии только; новые paid generation/export/import не запускались. Полный реестр и evidence: /Users/milamarty/work/PDFPOSTQA-REPORT.md; screenshots: /Users/milamarty/work/PDFPOSTQA-SHOTS/.

## 2026-08-23 BOARDSWEEP: IN_PROGRESS-LIVE
- Evidence: updatedAt=2026-08-22T14:29:33.167Z, older than 24h, but the videoengine workstream/process is still present and the body names deployment/live proof as the active remainder. No status change.
- buildFixed: v4-c8c3638; canonical: v4-081ff4fb5 / 081ff4fb5f6110f8001daec7ed910ccef2e395dc.
- Status preserved by sweep: in_progress.

## ДЛЯ НУЛЕВОГО АГЕНТА (обновлено 2026-09-05 UTC)
- **Суть одной строкой:** Пооператорные подписи не приходят: движок не шлёт providerCaptions
- **Текущее состояние:** статус: parked; videomax 19.08, прогон cmt01mv9d006mvlrslgp64dg3 (mode=cloudboost, routingProfile=max). Операторов реально ДВА: providerActual=ensemblemerge, modelActual=gemini-2.5-flash + us.amazon.nova-2-lite-v1:0. Во всех трёх сценах scene.providerCaptions === null; в PDF 0 вхождений «Gemini», «Nova», «операт… | 20.08 ~16:00 волна videoengine (A1): ФИКС ГОТОВ, НЕ ЗАДЕПЛОЕН | Пооператорные подписи (providerCaptions) реализованы; мутационный тест: подпись только на первом фрагменте — 3/4 падают, с фиксом 4/4 зелёные. Фактчек PDF по трём пунктам owner: одностраничник ЕСТЬ, обрывов ... НЕТ, все провайдеры подписаны — НЕТ (этот тикет и чинит). Проверено на записанных данн… | PDFPOSTQA: бесплатные сценарии только; новые paid generation/export/import не запускались. Полный реестр и evidence: /Users/milamarty/work/PDFPOSTQA-REPORT.md; screenshots: /Users/milamarty/work/PDFPOSTQA-SHOTS/. | - Evidence: updatedAt=2026-08-22T14:29:33.167Z, older than 24h, but the videoengine workstream/process is still present and the body names deployment/live proof as the active remainder. No status change. | videofix6 20.08: продуктовая часть закрыта (отсутствие подписей теперь fail-visible, не молча пусто), тест providerCaptionAudit.test.ts 9/9. ОСТАЁТСЯ: правка в движке nc-video-engine (не деплоил) — спека в отчёте VIDEOFIX6-REPORT.md, секция «ПРАВКИ ДЛЯ ДВИЖКА». | 25-я посадка 20.08: serving v4-c8c3638, артефакт sha d2adfe8f408d249cd5c6376a9e6e865a03132d79c2a3bb5a7979c8294b0d9bf3, аттестация v12 подписана ВЛАДЕЛЬЦЕМ ЛИЧНО ключом активации (проверено против прод-пина). paidReady=true, posture=enforceready, failures=[]. Ограда переприменена, канон проштампов… | [A1 12:48 Фабл] Триаж 03.09 (owner: «чего они ждут — срочно принимайте, сажайте»): разрыв в движке (ensemblemerge не отдаёт per-operator captions), app-сторона в проде; app-коммит 1c01d428 потерян → волна 1517 (engine pi-base + app).
- **Кто работал:**
- 2026-08-19T23:36:20.093Z — backup-opus — videofix6 20.08: продуктовая часть закрыта (отсутствие подписей теперь fail-visible, не молча пусто), тест providerCaptionAudit.test.ts 9/9. ОСТАЁТСЯ: правка в движке nc-video-engine (не деплоил) — спека в отчёте VIDEOFI
- 2026-08-20T00:36:19.912Z — backup-opus — 25-я посадка 20.08: serving v4-c8c3638, артефакт sha d2adfe8f408d249cd5c6376a9e6e865a03132d79c2a3bb5a7979c8294b0d9bf3, аттестация v12 подписана ВЛАДЕЛЬЦЕМ ЛИЧНО ключом активации (проверено против прод-пина). paidReady=tr
- 2026-09-03T07:18:45.763Z — Fable — [A1 12:48 Фабл] Триаж 03.09 (owner: «чего они ждут — срочно принимайте, сажайте»): разрыв в движке (ensemblemerge не отдаёт per-operator captions), app-сторона в проде; app-коммит 1c01d428 потерян → волна 1517 (engine pi
- 2026-09-05T17:35:28.635Z — fable-coordinator — [2026-09-05 17:40Z] Ревизия доски (волна 2040 boardtriage, M1, luna): статус → parked. Основание: нет активности с 2026-08-29; acceptance после аварии не подтверждён. Если работа жива — верни статус и напиши в тикет, как
- **Ветки/бандлы/отчёты:** ~/waves/VIDEOENGINE-REPORT.md.; sha: c8c3638, 081ff4fb5, 081ff4fb5f6110f8001daec7ed910ccef2e395dc, 1c01d428
- **KNOWN ISSUES / ТРАБЛШУТИНГ:**
- 20.08 ~16:00 волна videoengine (A1): ФИКС ГОТОВ, НЕ ЗАДЕПЛОЕН
- Пооператорные подписи (providerCaptions) реализованы; мутационный тест: подпись только на первом фрагменте — 3/4 падают, с фиксом 4/4 зелёные. Фактчек PDF по трём пунктам owner: одностраничник ЕСТЬ, обрывов ... НЕТ, все провайдеры подписаны — НЕТ (этот тикет и чинит). Проверено на записанных данн…
- - buildFixed: v4-c8c3638; canonical: v4-081ff4fb5 / 081ff4fb5f6110f8001daec7ed910ccef2e395dc.
- videofix6 20.08: продуктовая часть закрыта (отсутствие подписей теперь fail-visible, не молча пусто), тест providerCaptionAudit.test.ts 9/9. ОСТАЁТСЯ: правка в движке nc-video-engine (не деплоил) — спека в отчёте VIDEOFIX6-REPORT.md, секция «ПРАВКИ ДЛЯ ДВИЖКА».
- 25-я посадка 20.08: serving v4-c8c3638, артефакт sha d2adfe8f408d249cd5c6376a9e6e865a03132d79c2a3bb5a7979c8294b0d9bf3, аттестация v12 подписана ВЛАДЕЛЬЦЕМ ЛИЧНО ключом активации (проверено против прод-пина). paidReady=true, posture=enforceready, failures=[]. Ограда переприменена, канон проштампов…
- **Эволюция:**
- 2026-08-19 → videofix6 20.08: продуктовая часть закрыта (отсутствие подписей теперь fail-visible, не молча пусто), тест providerCaptionAudit.test.ts 9/9. ОСТАЁТСЯ: правка в движке nc-video-engine (не деплоил) — спека в отчёте VIDEOFIX6-REPORT.md, секция «ПРАВКИ ДЛЯ ДВИЖКА»
- 2026-08-20 → 25-я посадка 20.08: serving v4-c8c3638, артефакт sha d2adfe8f408d249cd5c6376a9e6e865a03132d79c2a3bb5a7979c8294b0d9bf3, аттестация v12 подписана ВЛАДЕЛЬЦЕМ ЛИЧНО ключом активации (проверено против прод-пина). paidReady=true, posture=enforceready, failures=[]. О
- 2026-09-03 → [A1 12:48 Фабл] Триаж 03.09 (owner: «чего они ждут — срочно принимайте, сажайте»): разрыв в движке (ensemblemerge не отдаёт per-operator captions), app-сторона в проде; app-коммит 1c01d428 потерян → волна 1517 (engine pi-base + app).
- 2026-09-05 → [2026-09-05 17:40Z] Ревизия доски (волна 2040 boardtriage, M1, luna): статус → parked. Основание: нет активности с 2026-08-29; acceptance после аварии не подтверждён. Если работа жива — верни статус и напиши в тикет, какая волна её ведёт.
- videomax 19.08, прогон cmt01mv9d006mvlrslgp64dg3 (mode=cloudboost, routingProfile=max). Операторов реально ДВА: providerActual=ensemblemerge, modelActual=gemini-2.5-flash + us.amazon.nova-2-lite-v1:0. Во всех трёх сценах scene.providerCaptions === null; в PDF 0 вхождений «Gemini», «Nova», «операт…
- 20.08 ~16:00 волна videoengine (A1): ФИКС ГОТОВ, НЕ ЗАДЕПЛОЕН
- 22.08 14:31 UTC — PDF SCOPE LEDGER — reconcile provider-caption evidence in final Video Atlas
- 2026-08-23 PDFPOSTQA: NEEDS-PAID — ensemble video run required.
- 2026-08-23 BOARDSWEEP: INPROGRESS-LIVE
- videofix6 20.08: продуктовая часть закрыта (отсутствие подписей теперь fail-visible, не молча пусто), тест providerCaptionAudit.test.ts 9/9. ОСТАЁТСЯ: правка в движке nc-video-engine (не деплоил) — спека в отчёте VIDEOFIX6-REPORT.md, секция «ПРАВКИ ДЛЯ ДВИЖКА».
- **Следующий шаг:** Пооператорные подписи (providerCaptions) реализованы; мутационный тест: подпись только на первом фрагменте — 3/4 падают, с фиксом 4/4 зелёные. Фактчек PDF по трём пунктам owner: одностраничник ЕСТЬ, обрывов ... НЕТ, все провайдеры подписаны — НЕТ (этот тикет и чинит). Проверено на записанных данн… | 25-я посадка 20.08: serving v4-c8c3638, артефакт sha d2adfe8f408d249cd5c6376a9e6e865a03132d79c2a3bb5a7979c8294b0d9bf3, аттестация v12 подписана ВЛАДЕЛЬЦЕМ ЛИЧНО ключом активации (проверено против прод-пина). paidReady=true, posture=enforceready, failures=[]. Ограда переприменена, канон проштампов…
Чем закрывается (приёмка)
При ансамбле в отчёте видны подписи каждого оператора рядом и итоговая слитая.
Доказательства
[2026-08-26 09:25Z] Волна web043: providerCaptions не доходят. Сначала доказать место обрыва (движок не формирует / API не пробрасывает / клиент не рендерит) и проверить ФЛАГИ и зависимости ДО кода; требуется сквозное доказательство, починка одного слоя не считается.
[2026-08-26 10:02Z] КАРТА ДЛЯ НУЛЕВОГО АГЕНТА (как войти в задачу с нуля):
Бокс A1: ssh a1nc. Родительское дерево /home/ubuntu/waves/wt-l40 (из него делаются worktree: git -C /home/ubuntu/waves/wt-l40 worktree add <путь> <ветка>). Запуск работника: ~/codex-a1.sh exec -m gpt-5.6-luna -c model_reasoning_effort=xhigh --dangerously-bypass-approvals-and-sandbox "$(cat <бриф>)"; работа держится в tmux (tmux ls), логи /home/ubuntu/waves/<имя>-codex.log, отчёты /home/ubuntu/waves/<ИМЯ>-REPORT.md, готовность = маркер-ФАЙЛ <ИМЯ>_DONE (не строка в отчёте!).
Ветка web043, worktree wt-web043. Суть: пооператорные подписи (providerCaptions) не доходят до UI. ПЕРВЫМ ДЕЛОМ проверить флаги и конфигурацию, а не код — фича может быть просто выключена. Затем локализовать обрыв: движок не формирует -> API не пробрасывает -> клиент не рендерит. Как доказывать: непустой providerCaptions в ответе API (число элементов) + рендер в компонентном тесте + деградация без данных + несколько операторов не схлопываются в один. Внешний видеодвижок — отдельный сервис (Pi :5190), прод-сервис не трогать.
ПРАВИЛА ДОМА: (1) приёмку делает НЕ автор и НЕ прежний приёмщик, со СВОИМИ новыми тестами и обязательным НЕГАТИВНЫМ тестом (проверка, которая всё пропускает, ничего не стоит); (2) отсутствие ошибок != фича жива, нужен сквозной пруф; (3) починка одного слоя != починка фичи; (4) правило 10 — catch без лога и маячка запрещён; (5) монетарные файлы и цены не трогать без отдельного решения; (6) прод/деплой/платные вызовы — только по явному разрешению.

[2026-08-26 14:35Z] ХЕНДОФФ ПОД КОМПАКТ: полное состояние в /Users/annakorin/Downloads/HANDOFF-COMPACT-2026-08-26.md. ⚠️ АВАРИЯ A1 (с ~09:30Z): бокс не пускает по ssh. Волна по этому тикету была запущена на A1 и её состояние НЕИЗВЕСТНО до восстановления. Бриф сохранён — волна перезапускается той же постановкой. Доказано: диск НЕ полон (74%, свободно 52ГБ), IP НЕ забанен (отказ и с M1, и с Pi), инстанс RUNNING, консоль гипервизора отвечает мгновенно; версия — повреждение ФС после жёсткой перезагрузки. Работа на диске не потеряна.

---
## 2026-08-29 02:20Z — вымывка доски: работа волны 26.08 сохранена, нужен перезапуск
- Работа волны от 26.08 (после аварии A1) лежала незакоммиченной; закоммичено координатором: 1c01d4288a7917b3daf5294039431b811530a7da (база старая e857b22f).
- Отчёт автора есть: /home/ubuntu/waves/WEB043-REPORT.md. Волна тогда прервалась аварией бокса — состояние работы НЕ подтверждено приёмкой.
- Следующий шаг: перезапуск круга на актуальной базе (l66) с переносом этого коммита, затем приёмка. Пока держим in_progress.


[BOARDTRIAGE] 29.08 02:20Z: worktree wave сохранён коммитом 1c01d428, но приёмка не подтверждала результат после аварии A1. Следующий шаг — перенос на l66, перезапуск и acceptance.
Замечен в сборке
v4-f730532
Починено в
v4-c8c3638
Лента
2026-08-19T23:36:20.093Z · backup-opus
videofix6 20.08: продуктовая часть закрыта (отсутствие подписей теперь fail-visible, не молча пусто), тест providerCaptionAudit.test.ts 9/9. ОСТАЁТСЯ: правка в движке nc-video-engine (не деплоил) — спека в отчёте VIDEOFIX6-REPORT.md, секция «ПРАВКИ ДЛЯ ДВИЖКА».
2026-08-20T00:36:19.912Z · backup-opus
25-я посадка 20.08: serving v4-c8c3638, артефакт sha d2adfe8f408d249cd5c6376a9e6e865a03132d79c2a3bb5a7979c8294b0d9bf3, аттестация v12 подписана ВЛАДЕЛЬЦЕМ ЛИЧНО ключом активации (проверено против прод-пина). paidReady=true, posture=enforce_ready, failures=[]. Ограда переприменена, канон проштампован. ЖИВАЯ ПРОВЕРКА: GET /api/media/transcribe-local отвечает 401 вместо 500 — пятисотка вылечена. Продуктовая часть в проде; остаток — правка движка nc-video-engine, спека в VIDEOFIX6-REPORT.md.
2026-09-03T07:18:45.763Z · Fable
[A1 12:48 Фабл] Триаж 03.09 (owner: «чего они ждут — срочно принимайте, сажайте»): разрыв в движке (ensemble_merge не отдаёт per-operator captions), app-сторона в проде; app-коммит 1c01d428 потерян → волна 1517 (engine pi-base + app).
2026-09-05T17:35:28.635Z · fable-coordinator
[2026-09-05 17:40Z] Ревизия доски (волна 2040 boardtriage, M1, luna): статус → parked. Основание: нет активности с 2026-08-29; acceptance после аварии не подтверждён. Если работа жива — верни статус и напиши в тикет, какая волна её ведёт.
2026-09-10T18:55:03.697Z · coordinator
BOARD-WASH-20260910:WAVE-3338
По поручению владельца 18:43Z назначена исполнительская волна 3338 (video), Codex gpt-5.6-luna xhigh, M4. Полная история карточки и база l115c 1ad52e16b доставлены, brief-guard и проверка Git-базы пройдены. Задача: проверить существующую сдачу, устранить остатки, передать бандл и доказательства. Финальная приёмка и посадка остаются за координатором. Ранее отложенная функция не включается; статус parked/backlog сохранён, идёт проверка технического остатка.
КАРТА ДОКУМЕНТОВ: ноут /Users/annakorin/nc-ops-scripts/board-wash-20260910/3338-wash-video-brief.md; M4 /Users/milamarty/waves/inputs/board-wash-20260910/video-tickets.json; ожидаемый отчёт /Users/milamarty/waves/3338WASHVIDEO-REPORT.md. Правила обогащения: WEB-449.
2026-09-13T11:01:35.791Z · coordinator
[13.09 11:01Z координатор] Мойка отложенных, волна 3668. Вердикт: ЖДЁТ-ВЛАДЕЛЬЦА. Engine не задеплоен + видео выключено; app-коммит потерян → волна 1517.
2026-09-22T18:32:37.627Z · triage-neo
РЕШЕНИЕ=parked
ОСНОВАНИЕ=2026-09-22: волна 3668 (13.09) — ЖДЁТ-ВЛАДЕЛЬЦА; engine не задеплоен, видео выключено, app-коммит 1c01d428 потерян.
ЧТО НУЖНО=волна 1517 должна задеплоить engine и восстановить app-путь, затем live-прогон с доказанными per-operator captions.
triage-neo 4616
2026-09-23T12:50:47.470Z · triage-neo
РЕШЕНИЕ=parked
ОСНОВАНИЕ=2026-09-13, волна 3668: ЖДЁТ-ВЛАДЕЛЬЦА; видео off, engine не задеплоен, app-коммит 1c01d428 потерян; посадки нет.
ЧТО НУЖНО=владелец: решить, возвращаем ли видео-импорт в релиз (включить или оставить off); triage-neo 4713
Воркер
не проверен 3338-wash-video M4 движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
Обновлён
2026-09-22T18:32:37.636Z