WEB board

всеканоны и докиворкеры↗ iOS↗ Легаси
WEB-607 · Задача · — · web

SEC-058 [CVSS N/A or UNKNOWN] Google realtime bridge сохраняет started при закрытии до setup

В работе P2 ведёт: — эпик: WEB-515
Суть
# SEC-058 — Google realtime bridge сохраняет started при закрытии до setup
## 1. Суть и условие дефекта
Google realtime bridge: early close до setup должен быть terminal — started не должен оставаться true.

## 2. МЕХАНИКА
`infra/sip/gateway/liveTransport/googleRealtimeWsBridge.js:741-768` (open/setup), `:982-1010` (handleSocketClose). **Корень:** при close до `setupComplete` состояние `started` оставалось `true`. Фикс `21f5c67db` (repair 3345): `resetStartupState()` при `!setupCompleted`.

## 3. ЧТО СДЕЛАНО
1. **10.09** — триаж BACKLOG64 (база `49bc58dcc`): карточка заведена из отчёта R09; условие подтверждено, независимая приёмка 3309SEC058ACCEPTANCE-REPORT.md (a2) — NO-GO.
2. **10.09** — repair-волна 3345 написала фикс `21f5c67db`; независимая source-приёмка 3367 — GO.
3. **10–11.09** — интеграция 3473 → 3488 (все 26 кандидатов, HEAD `d95fd864`, 201/201 миграций, P19 negative blocksStartup).
4. **12.09** — посадки на прод: l115f-r2 (18:02Z, source `92f7ae807`, artifact `1353e969b`) → l115g (`9c8a9762`) → l115h (`f0777c4d`, 23:47Z).
5. **13.09** — l115i (`6aac3421`, 06:37Z); получено живое доказательство (см. ниже) → карточка переведена в done. Эпик WEB-515 закрыт.
6. **13.09** — закрыто харнессом (не живым гейтом на проде): волна 3626 — изолированный стенд с артефактом прода l115i + одноразовые фикстуры (провайдер — фальшивый сокет)


## 4. ЧЕМ ДОКАЗАНО ЖИВЬЁМ
Волна 3626 (13.09): новый тест на НАСТОЯЩИЙ `GoogleRealtimeWsBridge` (через `createGoogleRealtimeWsBridge`) с фальшивым `createSocket`/`fetchImpl`: провайдер рвёт сокет сразу после setup-кадра до `setupComplete` → `resetStartupState()` ставит `started=false`; ретрай стартует чисто; положительный контроль (setup завершился) → `started=true`. 3/3. Evidence: `/home/ubuntu/waves/3626SECURITYLASTSIX-evidence/SEC-058.log`.

## 5. КАРТА ДОКУМЕНТОВ
  - Repair-волна: M4 `/Users/milamarty/waves/3345REPAIRBRIDGE-REPORT.md`
  - Независимая source-приёмка: A1 `/home/wave/waves/3367INDEPENDENTLIFECYCLE-REPORT.md`
  - Приёмка условия (триаж): `/Users/annakorin/nc-ops-scripts/run-l115b-luna/acceptance-results/a2/3309SEC058ACCEPTANCE-REPORT.md`
  - Харнесс-отчёт: волна 3626 — изолированный стенд с артефактом прода l115i + одноразовые фикстуры (провайдер — фальшивый сокет)
  - Отчёт 3626: `/home/ubuntu/waves/3626SECURITYLASTSIX-REPORT.md` (A2) = `/Users/milamarty/waves/inputs/3639/3626SECURITYLASTSIX-REPORT.md` (M4).
  - Evidence 3626: `/home/ubuntu/waves/3626SECURITYLASTSIX-evidence/` (SHA256SUMS).
  - Живая матрица гейтов: `/home/ubuntu/sec-checks-3592/out/matrix.txt` (A2) = `/Users/milamarty/waves/inputs/3639/matrix-l115i.txt` (M4).
  - Карта закрытия эпика: `WEB515-CLOSING-MAP.md` — `/Users/milamarty/waves/inputs/3639/WEB515-CLOSING-MAP.md` (M4) и `nc-ops-scripts/shift-20260912-resume/3604/collected/out/WEB515-CLOSING-MAP.md` (Intel).
  - Канон: `/Users/milamarty/waves/inputs/3639/canon449.json` (WEB-449).
  - Исходник R09 (мастер-разбор): `/Users/poolpooly/audit/inbox/2813-BLOCK24-PROVIDER-SPEND-WIRING-REPORT.md` (SHA `26816992…`).
  - Все 28 карточек: `/Users/milamarty/waves/inputs/3639/sec28.json`.

## 6. ОСТАТОК
Смежное наблюдение (вне скоупа карточки, отдельным тикетом): при close ПОСЛЕ setupComplete `handleSocketClose` не сбрасывает `started` обратно в false (только cleanupSocket) — мост репортит started:true с null-сокетом до явного .close().

## 7. КАК ПЕРЕПРОВЕРИТЬ
```
node --test infra/sip/gateway/liveTransport/__tests__/googleRealtimeWsBridge.closeBeforeSetup.test.js
```


## История (триаж 10.09)

Правила обогащения: WEB-449. Parent WEB-515. BACKLOG64-TRIAGE-20260910. Дата UTC: 2026-09-10T17:07:52.835164+00:00.

## ДЛЯ ТИКЕТА — SEC-058

**Условие:** Google realtime bridge сохраняет started при закрытии до setup.

**Состояние:** подтверждено в изученных стендовых свидетельствах воркера на указанной базе; независимая приёмка на Нео ещё не выполнена. Это не объявление дефекта живого l115a. Исходный NO-GO относится к полному scope и может одновременно содержать незавершённые группы.

**Исследованные байты:** `30000baf9939f94d062b0e216f023a11faa4af3f`. Базовая ветка — указанная в исходном отчёте; рабочее дерево lead `/Users/poolpooly/audit/nc` не используется вместо этой версии. **Файл:строка:** infra/sip/gateway/liveTransport/googleRealtimeWsBridge.js:741-768,982-1010.

**Доказательство и controls:** Actual bridge lifecycle harness5/5: provider close до setup leaves started=true/listeners; safe setup-success and close controls.

**CVSS 3.1:** N/A — функциональная/операционная находка без доказанного CIA-влияния.
CVSS3.1 N/A: operational lifecycle; external reachability/принудительное CIA воздействие не доказано.
Числа пересчитаны по FIRST CVSS3.1, а не скопированы из заголовков: https://www.first.org/cvss/v3.1/specification-document#7-1-Base-Metrics-Equations . При неполных предпосылках оценка не становится окончательной. N/A/UNKNOWN не означает Low или нулевой риск.

**Предложение исправления:** Сбросить state/listeners на pre-setup close, атомарно settle setup promise и допустить корректный повтор. Не менять установленный gateway по appSHA.

**Сданные изменения:** Не представлен в этом возврате.
**Связи/дедупликация:** WEB-595, WEB-597 Старые условия SEC-001…048 не регистрируются заново. Эта карточка описывает отдельное условие, а не повтор счёта того же отчёта.

## KNOWN ISSUES / ТРАБЛШУТИНГ

Симптом → Google realtime bridge сохраняет started при закрытии до setup.
Проверка → воспроизвести указанный actual-module/PG fixture с положительным разрешённым контролем; сверить SHA исходников и хеши артефактов. Мок транспорта допустим, мок самой проверяемой проверки — нет. Report file получен и хеширован лидом; исходные raw artifacts вне inbox ещё не объявляются независимо проверенными.
Причина → infra/sip/gateway/liveTransport/googleRealtimeWsBridge.js:741-768,982-1010.
Лечение/статус → Сбросить state/listeners на pre-setup close, атомарно settle setup promise и допустить корректный повтор. Не менять установленный gateway по appSHA. Приёмка/актуальность l115a пока pending. Если условие уже устранено позднейшим коммитом, зафиксировать точный fix→release mapping и принять существующий результат; повторный фикс не нужен.

## Три группы приёмки на Нео

1. **Байты и достижимость:** сравнить исследованную базу с переданным current candidate, проверить реальный entrypoint/инициализацию/feature flag и не подменять его вызовом недостижимого helper. Отдельно актуализировать policy/grants там, где это предпосылка.
2. **Поведение:** тот же безвредный red fixture на базе; нормальный positive control; после исправления — требуемый отказ/результат до side effect, повтор/конкурентный/отложенный вариант, точные счётчики. Для durable эффектов — одноразовый PostgreSQL, не только in-memory adapter.
3. **Независимость и сдача:** reviewer на Нео, не OpenAI; сверка diff/тестов/изменённых путей, bundle+SHA256, report с GO/NO-GO и отдельными UNKNOWN. Live/prod/host действия — только отдельная работа координатора. Не заявлять landing по наличию commit.

## Карта документов

- R20: /Users/poolpooly/audit/inbox/3113-B32-04-REPORT.md — SHA256 `79f827227f3983705cbfaaff18fa362a0997c2a432878c3beebe4ebb3f6c80c8`
- Мастер-разбор: /Users/poolpooly/audit/outbox/BACKLOG64-TRIAGE-20260910.md
- Данные: /Users/poolpooly/audit/evidence/backlog64-20260910/findings28.json


A1-REBOOT-RESUME:20260910:3367
Снимок 2026-09-10 20:40Z. Приёмка 3367 была прервана перезагрузкой A1 без полного комплекта сдачи. Сохранены прежние QA worktrees, незакоммиченные тесты, журналы и бандлы; архив /home/wave/waves/recovery-20260910/before/. Продолжение с прежним UUID сессии через exec resume. Бриф находится в очереди; запуск ещё не подтверждён. Одновременно до 3 волн, общий MemoryHigh=10G/MemoryMax=12G/SwapMax=1G, Node heap=2048 MB; тяжёлые проверки последовательно. Guards и входные SHA проверены перед возвратом. Это восстановление проверки, нового GO и посадки нет. A1 перезагрузилась: в 20:33:37Z uptime=66.75 s, оба backend paidReady=true/enforce_ready, SIP health=ok.

CHECKPOINT3478:WEB-607 2026-09-10T23:30:08.650195+00:00
3473 активно объединяет 14 точных кандидатов для22 критериев. Этот кандидат google 21f5c67db6aac85a1a553043b0fe48babf15ad83; критерии SEC-058. Входные hashes и git objects проверены до старта. Последний наблюдённый merge66a666e38 объединил манифест миграций; итогового integration verdict нет. SEC053/054 и062/064 вне этой партии. Предыдущий scoped GO не означает проверку конфликтов, сборку или посадку.
Полные отчёты и проверки SHA: /Users/annakorin/nc-ops-scripts/checkpoint-3478/snapshot.json; задания и SHA inputs: refill-20260911-0015,0025,0028,0030. Спецификация: /Users/annakorin/nc-ops-scripts/enterprise2-20260910/ENTERPRISE-2.md; цель: SHIFT-GOAL-20260911-8H.md.

CHECKPOINT3484:WEB-607 2026-09-10T23:46:59.374675+00:00
3473 integration GO: exact HEAD f9c514014fcedccdecc2cf9e7c39a79421b4655b, все 14 кандидатов/22 критерия сохранены; P19 и migration-set 200/200, дерево чистое, SHA и bundle проверены координатором. Кандидат google 21f5c67db6aac85a1a553043b0fe48babf15ad83. Независимая 3484 Claude Opus доставлена на A1 с inputs SHA и exact BASE для merged-source/изолированной PG проверки. Пока подтверждена очередь, не выполнение тестов. Новых посадок нет; live flags/roles/scheduler/browser и post-QA впереди.
Доказательства: /Users/annakorin/nc-ops-scripts/checkpoint-3484/receipt.json, integration-manifest.json, focused-tests-summary.log, migration-gates.log и 3473SECURITYINTEGRATION-REPORT.md; доставка: refill-20260911-0050. Норматив: enterprise2-20260910/ENTERPRISE-2.md.

## HANDOFF-20260912T1721:WEB-607 — точка входа для нового агента
Правила обогащения: [[WEB-449]]. Наблюдение: 12.09.2026 18:21:36 Europe/Dublin / 17:21:36 UTC. Автор: координатор. История выше сохранена; эту запись читать как текущий handoff на указанное время.

**Задача.** SEC-058 [CVSS N/A or UNKNOWN] Google realtime bridge сохраняет started при закрытии до setup

**Что подтверждено и что остаётся.** 3521 дал bounded source/isolated-PG GO при общем NO-GO;3525 закрыл узкий SOURCE_PG_HANDOFF и CHARGE_COMPLETENESS, сохранив RELEASE_RUNTIME=OPEN. Итог на реальном релизе для этой карточки не подтверждён. 

**Как устроено / почему остановилось.** Google realtime bridge: close до setup не оставляет started/lease; проверить реальный транспорт и флаги без подмены теста строковым поиском.

**Следующая операция.** Общий переход релиза выполнять по [[WEB-515]]. Индивидуальный gate этой карточки: Google realtime bridge: close до setup не оставляет started/lease; проверить реальный транспорт и флаги без подмены теста строковым поиском. Зафиксировать exact deployed artifact, positive/negative, raw commands, exits и skips. Непройденный runtime gate не заменять повтором прежнего source suite.

**Исполнитель и приёмка.** Координатор даёт установленный artifact и исполняет хостовые операции; независимый security-приёмщик проверяет gate. Назначение не считать запущенным процессом.

**Условие закрытия.** Доказанный результат именно этой finding на установленной версии и соответствующий независимый вердикт; review остаётся до этого.

**КАРТА ДОКУМЕНТОВ**
- Intel: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3521/3521ACCSECURITY26REPAIRED-REPORT.md
- Intel: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3525/3525SECURITYHANDOFFGATES-REPORT.md
- Intel: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3525/3525SECURITYHANDOFFGATES-evidence/GATES.md
- Intel: /Users/annakorin/nc-ops-scripts/release-l115f/r2/l115f-artifact.json
- Intel: /Users/annakorin/nc-ops-scripts/release-l115f/handoff-tickets/live-observation.json

**Релизная зависимость:** [[WEB-515]] — r2 staged/signed, compat BUILDING; prod l115e на времени наблюдения. Не путать SEC registry с количеством сегментов аудита.


SHIFT-STOP-20260912:R2:WEB-607
ТЕКУЩИЙ СРЕЗ ПЕРЕД ОСТАНОВКОЙ — WEB-607 / SEC-058
Задача: SEC-058 [CVSS N/A or UNKNOWN] Google realtime bridge сохраняет started при закрытии до setup
Пакет l115f-r2 установлен на прод 2026-09-12T18:02:33.922654Z.
SOURCE=92f7ae807869bbaa8ae7ef6ca2ea622675e31af9
ARTIFACT_SHA256=1353e969b2a7a1a31ac702be361913c41cb53c104db49938a02f5fcd07766668
Runtime 18:15:34 UTC: оба backend ready=true, paidReady=true/enforce_ready; web A/B, indexing и extraction указывают на новый release; старых процессов 0. Таймеры indexing/extraction active.
Сборка, подпись с tamper-negative, совместимый rollback, dryrun и flip выполнены. Редактор: приложение HTTP200, список 58 документов, один документ открыт, новых ошибок после клика 0; при загрузке были две прерванные prefetch-загрузки и admin/agents403. Это не полная browser/security приёмка.
Один платный synthetic chat: HTTP200; operation terminal/succeeded, event APPLIED, 5/5 обязательных receipts нового identity. BILLING_PARITY=NO-GO: в ответе $0.000637, в LedgerEntry списано $0.039476, разница $0.038839, SETTLED_MAX/usage_untrusted. HTTP200 и paidReady не доказывают корректность суммы или ответа.
Владелец 18:13:55 UTC поручил сохранить готовое, обогатить тикеты, написать хендофф и остановить смену. Новые волны, сборки, paid requests, load/soak и security-вердикты не запускаются. Эпик остаётся открыт.
Откат после появления candidate receipts — только arm64-l115e-compat-20260912T172738Z, SHA ef4b7c2a6e8bcda45fc361f979076f43d37f4caf1256bcbbccf2188b2e2d092d. Plain l115e несовместим с новой identity; исторические receipts не переписывать.

ПРИЁМКА ЭТОЙ НАХОДКИ
ALL26 criterion: SEC-058 SIP bridge; source=GREEN inherited; PG=live transport not claimed. Evidence: `13`: 14/14 pass, exit 0. Оставшиеся gates при handoff: P, F.
ТОЧНЫЙ ОСТАТОК / СЛЕДУЮЩИЙ ИСПОЛНИТЕЛЬ
Сверить отдельно реально работающий SIP gateway с исправленным googleRealtimeWsBridge.js. Установка Next-артефакта не доказывает замену отдельной службы ag-sip-native. Затем проверить early-close/setup и terminal accounting.
Координатор собирает runtime receipts; независимый security-приёмщик не на OpenAI выдаёт scoped verdict. Сейчас никто не назначается на новую волну. Review сохраняется: факт установки не превращает OPEN в PASS.
КАРТА ДОКУМЕНТОВ
Intel: /Users/annakorin/nc-ops-scripts/release-l115f/r2/{l115f-artifact.json,signature-receipt.json,runtime-stop-verified.log,editor-postqa-rerun.log,paid-probe-accounting-receipt.json,paid-probe-failure-detail.json}.
Source/QA: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3521/3521ACCSECURITY26REPAIRED-REPORT.md; 3525/3525SECURITYHANDOFFGATES-evidence/GATES.md; 3530/3530ACCSECURITYGOOGLEFIXTURE-REPORT.md.
Merge: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3526/3526INTEGRATESECURITYRELEASE-evidence/merge-manifest.json.
Transition: /Users/annakorin/nc-ops-scripts/release-l115f/{3534-collected,3536-collected,compat}.


Billing finding: [[WEB-650]].
Доказательства

ACCEPTANCE-3300-3327:3309SEC058ACCEPTANCE-REPORT.md:5544083618d957b8bdd622dda34773123d7a3401aa26f100060ec5dd2db9af99
/Users/annakorin/nc-ops-scripts/run-l115b-luna/acceptance-results/a2/3309SEC058ACCEPTANCE-REPORT.md
SHA256 5544083618d957b8bdd622dda34773123d7a3401aa26f100060ec5dd2db9af99
SEC-REPAIR-DISPATCH:3345:WEB-607
/Users/milamarty/waves/3345REPAIRBRIDGE-REPORT.md
A1-REBOOT-RESUME:20260910:3367
Снимок 2026-09-10 20:40Z. Приёмка 3367 была прервана перезагрузкой A1 без полного комплекта сдачи. Сохранены прежние QA worktrees, незакоммиченные тесты, журналы и бандлы; архив /home/wave/waves/recovery-20260910/before/. Продолжение с прежним UUID сессии через exec resume. Бриф находится в очереди; запуск ещё не подтверждён. Одновременно до 3 волн, общий MemoryHigh=10G/MemoryMax=12G/SwapMax=1G, Node heap=2048 MB; тяжёлые проверки последовательно. Guards и входные SHA проверены перед возвратом. Это восстановление проверки, нового GO и посадки нет. A1 перезагрузилась: в 20:33:37Z uptime=66.75 s, оба backend paidReady=true/enforce_ready, SIP health=ok.

THREAD-STATUS-2240 3367 завершена, четыре scoped source GO по отчёту. SEC050 scoped tsc UNKNOWN. Полная интеграция/сборка/live pending; это не работающая3367.

CHECKPOINT3478:WEB-607 2026-09-10T23:30:08.650195+00:00
3473 активно объединяет 14 точных кандидатов для22 критериев. Этот кандидат google 21f5c67db6aac85a1a553043b0fe48babf15ad83; критерии SEC-058. Входные hashes и git objects проверены до старта. Последний наблюдённый merge66a666e38 объединил манифест миграций; итогового integration verdict нет. SEC053/054 и062/064 вне этой партии. Предыдущий scoped GO не означает проверку конфликтов, сборку или посадку.
Полные отчёты и проверки SHA: /Users/annakorin/nc-ops-scripts/checkpoint-3478/snapshot.json; задания и SHA inputs: refill-20260911-0015,0025,0028,0030. Спецификация: /Users/annakorin/nc-ops-scripts/enterprise2-20260910/ENTERPRISE-2.md; цель: SHIFT-GOAL-20260911-8H.md.

CHECKPOINT3484:WEB-607 2026-09-10T23:46:59.374675+00:00
3473 integration GO: exact HEAD f9c514014fcedccdecc2cf9e7c39a79421b4655b, все 14 кандидатов/22 критерия сохранены; P19 и migration-set 200/200, дерево чистое, SHA и bundle проверены координатором. Кандидат google 21f5c67db6aac85a1a553043b0fe48babf15ad83. Независимая 3484 Claude Opus доставлена на A1 с inputs SHA и exact BASE для merged-source/изолированной PG проверки. Пока подтверждена очередь, не выполнение тестов. Новых посадок нет; live flags/roles/scheduler/browser и post-QA впереди.
Доказательства: /Users/annakorin/nc-ops-scripts/checkpoint-3484/receipt.json, integration-manifest.json, focused-tests-summary.log, migration-gates.log и 3473SECURITYINTEGRATION-REPORT.md; доставка: refill-20260911-0050. Норматив: enterprise2-20260910/ENTERPRISE-2.md.

CHECKPOINT3484LIMIT:WEB-607 2026-09-10T23:52:07.659549+00:00
3484 не выполнила приёмку: A1 после ремонта TMPDIR отказала OAuth session expired; тот же exact candidate перенесён без дубля на A2, guard/SHA/BASE проверены. A2 запустила Claude Opus, затем WAVE_EXIT=1: weekly limit, resets Sep 12 16:00 UTC. Приёмка merged-source/PG BLOCKED_PROVIDER_LIMIT, результата нет. Кошелёк и OpenAI для security acceptance не подключались. 3473 остаётся integration-only GO для22 критериев, HEAD f9c514014fcedccdecc2cf9e7c39a79421b4655b. Посадки нет. Evidence: checkpoint-3484, refill-20260911-0052; A2 /home/ubuntu/waves/3484-acc-security-merged-pg-claude.log.

CHECKPOINT3488:WEB-607 2026-09-11T00:15:51.647210+00:00
Пять новых сдач проверены координатором: bundle verify, SHA256 и exact HEAD. 3427 сдала ingest cf64ed4074c8349c12ed10a3725797ec2c65ff75; source PG 23/23, component 33+3+20; ESLint UNKNOWN timeout, финальная security/live приёмка не выполнена. 3488 реально запущена на A1: объединяет 3473 (22 критерия), 3479 (tokens/types), 3427 (ingest), охватывая входы всех исходных26. Итогового merge verdict ещё нет. Security acceptance3484 остаётся BLOCKED_PROVIDER_LIMIT до12.09 16:00UTC; кошелёк не менялся. Новых посадок нет. Evidence: checkpoint-3488/snapshot.json; security-integration-3488/{3488-receipt.json,inputs/manifest.json}; полный3427 report.

CHECKPOINT3492:WEB-607 2026-09-11T00:32:55.179360+00:00
3488 завершила source integration: d95fd864292c2763e8125de62a08e8fd8c181cde. Все 26 строк матрицы и исходные 14 веток сохранены; 201/201 миграций, P19 negative blocksStartup, 123 activation rows сохранены. SHA256 d3bd60ef387de0cb79342522be849d9023365f96e33d69c866b3ab2598aa8e7d, exact HEAD/clean/bundle проверены и скопированы. Это не независимая security/PG/runtime приёмка. 3484 BLOCKED_PROVIDER_LIMIT до 2026-09-12 16:00 UTC; новых посадок нет. Evidence: checkpoint-3491/snapshot.json, полный 3488 REPORT и бандл; A1 3488SECURITYINTEGRATIONFINAL-evidence.

HANDOFF-20260912T1721:WEB-607 — автономный handoff добавлен в body: причина, механизм, подтверждённое/OPEN, следующая операция, ответственный, критерий закрытия и карта документов. Срез фактов 2026-09-12T17:21:36.454887+00:00. Исторические отказы и статусы сохранены. Полный аудит записи: Intel /Users/annakorin/nc-ops-scripts/release-l115f/handoff-tickets/.

SHIFT-STOP-20260912:R2:WEB-607
Installed source92f7ae807 / artifact1353e969; runtime-stop-verified.log; billing parity NO-GO [[WEB-650]]; per-finding remaining gates in body.
Замечен в сборке
l115f-r2 / 92f7ae807
Лента
2026-09-10T17:07:53.888Z · astra-security
BACKLOG64-TRIAGE-20260910-SEC-058 — 2026-09-10T17:07:53.888192+00:00 / IST=2026-09-10T22:37:53.888201+05:30

Новая карточка по возвратам R20.

Actual bridge lifecycle harness5/5: provider close до setup leaves started=true/listeners; safe setup-success and close controls.

База 30000baf9939f94d062b0e216f023a11faa4af3f; CVSS3.1 N/A — функциональная/операционная находка без доказанного CIA-влияния. Приёмка Нео и current mapping pending. Предложение: Сбросить state/listeners на pre-setup close, атомарно settle setup promise и допустить корректный повтор. Не менять установленный gateway по appSHA.

Исходные отчёты:
- R20: /Users/poolpooly/audit/inbox/3113-B32-04-REPORT.md — SHA256 `79f827227f3983705cbfaaff18fa362a0997c2a432878c3beebe4ebb3f6c80c8`
2026-09-10T17:43:11.060Z · coordinator
[2026-09-10T17:43:11.002Z] Маршрут изменён по прямому указанию владельца: 3309-sec058-acceptance-brief.md → Codex gpt-5.6-luna xhigh, A2. Предыдущий Claude-запуск завершился по weekly limit без отчёта; его бриф и лог сохранены. Повторно поставлен тот же номер волны. База current l115a и три исторических SHA проверены на хосте. Доставлены исходные отчёты с manifest SHA256; raw artifacts и effective host inputs не объявляются полностью полученными. Критерии независимости и доказательств сохранены. Постановка в очередь не является положительной приёмкой или посадкой.
2026-09-10T18:39:13.464Z · coordinator
ACCEPTANCE-3300-3327:3309SEC058ACCEPTANCE-REPORT.md:5544083618d957b8bdd622dda34773123d7a3401aa26f100060ec5dd2db9af99
Независимый отчёт получен координатором. Проверенная база l115a 8d598d69a663cfa8977816d96bb20303e9a9650c; это не повторная проверка l115c.
Исправление требует выполнения; положительной приёмки исправленного кода нет.

SEC-058 / WEB-607 is a separate lifecycle condition and is not a re-count of
WEB-595, WEB-597, or SEC-001…048. R20 (`3113-B32-04-REPORT.md`) investigated
historical bytes `30000baf9939f94d062b0e216f023a11faa4af3f` and reported actual
bridge lifecycle harness evidence: provider close before setup left
`started=true`, while setup-success and normal close controls were safe. The
Backlog64 triage recorded this as SEC-058, priority P2, CVSS N/A, with no
candidate fix and current applicability pending.

This A2 acceptance created an independent current worktree from
`8d598d69a663cfa8977816d96bb20303e9a9650c`, verified exact tree identity and
caller reachability, and ran the same actual bridge module against synthetic
fixtures on both historical and current trees. The current bridge bytes are
unchanged, and the condition remains reproducible. The new retry scenario
shows the setup promise/listener consequence in addition to the original
stale `started` state. No fix was submitted, no product path was modified, and
no landing is claimed.
2026-09-10T19:23:43.494Z · coordinator
SEC-REPAIR-DISPATCH:3345:WEB-607
Назначено исправление: волна 3345 repair-bridge, M4, Codex gpt-5.6-luna xhigh. Это разработка исправления; отдельная приёмка и посадка ещё впереди. База l115c 1ad52e16b. Входы доставлены и проверены по SHA256: /Users/milamarty/waves/inputs/security-repairs-20260910/bridge.
Бриф: /Users/milamarty/waves/queue/3345-repair-bridge-brief.md
Отчёт: /Users/milamarty/waves/3345REPAIRBRIDGE-REPORT.md
Предыдущие результаты сохранены; 5 отсутствующих исторических кандидатов ищет координатор. Исполнитель обязан сначала проверить доступный кандидат; при отсутствии исправлять воспроизводимый дефект текущей базы и явно назвать новую реализацию.
Состояние на проверке: active.
2026-09-10T19:54:37.266Z · coordinator
SEC-INDEPENDENT-DISPATCH:3367:WEB-607
2026-09-10T19:54:22.234861+00:00 — Получен исходный repair 3345, коммит 21f5c67db6aac85a1a553043b0fe48babf15ad83. Отчёт автора: m4:/Users/milamarty/waves/3345REPAIRBRIDGE-REPORT.md. Bundle SHA256: 35d561485f4e580b03cfc94f6d06f0fca8b55f732ab712a6e51754f71d4f6814.
Отдельная независимая приёмка 3367 на A1, Codex gpt-5.6-luna xhigh; доставлена в очередь, запуска ещё нет.
Проверка exact candidate с собственными RED/GREEN/negative tests; PostgreSQL там, где требуется durable/race proof. Входы проверены по SHA256, candidate objects импортированы и проверены.
Входы: /home/wave/waves/inputs/security-independent-20260910/3367
Бриф: /home/wave/waves/queue/3367-secaccept-lifecycle-brief.md
Ожидаемый отчёт: /home/wave/waves/3367INDEPENDENTLIFECYCLE-REPORT.md
Source repair GO автора не является независимым GO. Приёмка, интеграция, посадка и runtime proof ещё не получены. Итоговый статус после проверки; эта запись не закрывает находку.
2026-09-10T20:40:46.167Z · coordinator
A1-REBOOT-RESUME:20260910:3367
Снимок 2026-09-10 20:40Z. Приёмка 3367 была прервана перезагрузкой A1 без полного комплекта сдачи. Сохранены прежние QA worktrees, незакоммиченные тесты, журналы и бандлы; архив /home/wave/waves/recovery-20260910/before/. Продолжение с прежним UUID сессии через exec resume. Бриф находится в очереди; запуск ещё не подтверждён. Одновременно до 3 волн, общий MemoryHigh=10G/MemoryMax=12G/SwapMax=1G, Node heap=2048 MB; тяжёлые проверки последовательно. Guards и входные SHA проверены перед возвратом. Это восстановление проверки, нового GO и посадки нет. A1 перезагрузилась: в 20:33:37Z uptime=66.75 s, оба backend paidReady=true/enforce_ready, SIP health=ok.
2026-09-10T22:53:37.861Z · coordinator
THREAD-STATUS-2240 3367 завершена, четыре scoped source GO по отчёту. SEC050 scoped tsc UNKNOWN. Полная интеграция/сборка/live pending; это не работающая3367.
2026-09-10T23:33:44.125Z · coordinator
CHECKPOINT3478:WEB-607 2026-09-10T23:30:08.650195+00:00
3473 активно объединяет 14 точных кандидатов для22 критериев. Этот кандидат google 21f5c67db6aac85a1a553043b0fe48babf15ad83; критерии SEC-058. Входные hashes и git objects проверены до старта. Последний наблюдённый merge66a666e38 объединил манифест миграций; итогового integration verdict нет. SEC053/054 и062/064 вне этой партии. Предыдущий scoped GO не означает проверку конфликтов, сборку или посадку.
Полные отчёты и проверки SHA: /Users/annakorin/nc-ops-scripts/checkpoint-3478/snapshot.json; задания и SHA inputs: refill-20260911-0015,0025,0028,0030. Спецификация: /Users/annakorin/nc-ops-scripts/enterprise2-20260910/ENTERPRISE-2.md; цель: SHIFT-GOAL-20260911-8H.md.
2026-09-10T23:46:59.923Z · coordinator
CHECKPOINT3484:WEB-607 2026-09-10T23:46:59.374675+00:00
3473 integration GO: exact HEAD f9c514014fcedccdecc2cf9e7c39a79421b4655b, все 14 кандидатов/22 критерия сохранены; P19 и migration-set 200/200, дерево чистое, SHA и bundle проверены координатором. Кандидат google 21f5c67db6aac85a1a553043b0fe48babf15ad83. Независимая 3484 Claude Opus доставлена на A1 с inputs SHA и exact BASE для merged-source/изолированной PG проверки. Пока подтверждена очередь, не выполнение тестов. Новых посадок нет; live flags/roles/scheduler/browser и post-QA впереди.
Доказательства: /Users/annakorin/nc-ops-scripts/checkpoint-3484/receipt.json, integration-manifest.json, focused-tests-summary.log, migration-gates.log и 3473SECURITYINTEGRATION-REPORT.md; доставка: refill-20260911-0050. Норматив: enterprise2-20260910/ENTERPRISE-2.md.
2026-09-10T23:52:08.306Z · coordinator
CHECKPOINT3484LIMIT:WEB-607 2026-09-10T23:52:07.659549+00:00
3484 не выполнила приёмку: A1 после ремонта TMPDIR отказала OAuth session expired; тот же exact candidate перенесён без дубля на A2, guard/SHA/BASE проверены. A2 запустила Claude Opus, затем WAVE_EXIT=1: weekly limit, resets Sep 12 16:00 UTC. Приёмка merged-source/PG BLOCKED_PROVIDER_LIMIT, результата нет. Кошелёк и OpenAI для security acceptance не подключались. 3473 остаётся integration-only GO для22 критериев, HEAD f9c514014fcedccdecc2cf9e7c39a79421b4655b. Посадки нет. Evidence: checkpoint-3484, refill-20260911-0052; A2 /home/ubuntu/waves/3484-acc-security-merged-pg-claude.log.
2026-09-11T00:15:52.185Z · coordinator
CHECKPOINT3488:WEB-607 2026-09-11T00:15:51.647210+00:00
Пять новых сдач проверены координатором: bundle verify, SHA256 и exact HEAD. 3427 сдала ingest cf64ed4074c8349c12ed10a3725797ec2c65ff75; source PG 23/23, component 33+3+20; ESLint UNKNOWN timeout, финальная security/live приёмка не выполнена. 3488 реально запущена на A1: объединяет 3473 (22 критерия), 3479 (tokens/types), 3427 (ingest), охватывая входы всех исходных26. Итогового merge verdict ещё нет. Security acceptance3484 остаётся BLOCKED_PROVIDER_LIMIT до12.09 16:00UTC; кошелёк не менялся. Новых посадок нет. Evidence: checkpoint-3488/snapshot.json; security-integration-3488/{3488-receipt.json,inputs/manifest.json}; полный3427 report.
2026-09-11T00:32:55.726Z · coordinator
CHECKPOINT3492:WEB-607 2026-09-11T00:32:55.179360+00:00
3488 завершила source integration: d95fd864292c2763e8125de62a08e8fd8c181cde. Все 26 строк матрицы и исходные 14 веток сохранены; 201/201 миграций, P19 negative blocksStartup, 123 activation rows сохранены. SHA256 d3bd60ef387de0cb79342522be849d9023365f96e33d69c866b3ab2598aa8e7d, exact HEAD/clean/bundle проверены и скопированы. Это не независимая security/PG/runtime приёмка. 3484 BLOCKED_PROVIDER_LIMIT до 2026-09-12 16:00 UTC; новых посадок нет. Evidence: checkpoint-3491/snapshot.json, полный 3488 REPORT и бандл; A1 3488SECURITYINTEGRATIONFINAL-evidence.
2026-09-12T14:52:13.252Z · coordinator
TICK-3525-STALE-LIMIT-20260912:WEB-607
Старая отметка provider-limit снята: source/QA приёмка3521 и узкая3525 завершены. Неизменённые доказательства наследуются с точным SHA и указанными skips/границами; это не новые live тесты этой карточки. Посадка, соответствующие runtime/browser/provider gates остаются OPEN. Матрица26 и GATES.md привязаны к WEB-515; done не выставляется.
2026-09-12T18:22:02.167Z · coordinator
SHIFT-STOP-20260912:R2:WEB-607
ТЕКУЩИЙ СРЕЗ ПЕРЕД ОСТАНОВКОЙ — WEB-607 / SEC-058
Задача: SEC-058 [CVSS N/A or UNKNOWN] Google realtime bridge сохраняет started при закрытии до setup
Пакет l115f-r2 установлен на прод 2026-09-12T18:02:33.922654Z.
SOURCE=92f7ae807869bbaa8ae7ef6ca2ea622675e31af9
ARTIFACT_SHA256=1353e969b2a7a1a31ac702be361913c41cb53c104db49938a02f5fcd07766668
Runtime 18:15:34 UTC: оба backend ready=true, paidReady=true/enforce_ready; web A/B, indexing и extraction указывают на новый release; старых процессов 0. Таймеры indexing/extraction active.
Сборка, подпись с tamper-negative, совместимый rollback, dryrun и flip выполнены. Редактор: приложение HTTP200, список 58 документов, один документ открыт, новых ошибок после клика 0; при загрузке были две прерванные prefetch-загрузки и admin/agents403. Это не полная browser/security приёмка.
Один платный synthetic chat: HTTP200; operation terminal/succeeded, event APPLIED, 5/5 обязательных receipts нового identity. BILLING_PARITY=NO-GO: в ответе $0.000637, в LedgerEntry списано $0.039476, разница $0.038839, SETTLED_MAX/usage_untrusted. HTTP200 и paidReady не доказывают корректность суммы или ответа.
Владелец 18:13:55 UTC поручил сохранить готовое, обогатить тикеты, написать хендофф и остановить смену. Новые волны, сборки, paid requests, load/soak и security-вердикты не запускаются. Эпик остаётся открыт.
Откат после появления candidate receipts — только arm64-l115e-compat-20260912T172738Z, SHA ef4b7c2a6e8bcda45fc361f979076f43d37f4caf1256bcbbccf2188b2e2d092d. Plain l115e несовместим с новой identity; исторические receipts не переписывать.

ПРИЁМКА ЭТОЙ НАХОДКИ
ALL26 criterion: SEC-058 SIP bridge; source=GREEN inherited; PG=live transport not claimed. Evidence: `13`: 14/14 pass, exit 0. Оставшиеся gates при handoff: P, F.
ТОЧНЫЙ ОСТАТОК / СЛЕДУЮЩИЙ ИСПОЛНИТЕЛЬ
Сверить отдельно реально работающий SIP gateway с исправленным googleRealtimeWsBridge.js. Установка Next-артефакта не доказывает замену отдельной службы ag-sip-native. Затем проверить early-close/setup и terminal accounting.
Координатор собирает runtime receipts; независимый security-приёмщик не на OpenAI выдаёт scoped verdict. Сейчас никто не назначается на новую волну. Review сохраняется: факт установки не превращает OPEN в PASS.
КАРТА ДОКУМЕНТОВ
Intel: /Users/annakorin/nc-ops-scripts/release-l115f/r2/{l115f-artifact.json,signature-receipt.json,runtime-stop-verified.log,editor-postqa-rerun.log,paid-probe-accounting-receipt.json,paid-probe-failure-detail.json}.
Source/QA: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3521/3521ACCSECURITY26REPAIRED-REPORT.md; 3525/3525SECURITYHANDOFFGATES-evidence/GATES.md; 3530/3530ACCSECURITYGOOGLEFIXTURE-REPORT.md.
Merge: /Users/annakorin/nc-ops-scripts/tick-20260912-recovery/3526/3526INTEGRATESECURITYRELEASE-evidence/merge-manifest.json.
Transition: /Users/annakorin/nc-ops-scripts/release-l115f/{3534-collected,3536-collected,compat}.


Billing finding: [[WEB-650]].
2026-09-12T22:25:57.483Z · coordinator
[12.09 22:25Z координатор] ОБОГАЩЕНИЕ 12.09 (3573-enrich-web515-a): SEC-058 — Google realtime bridge: started при pre-setup close
Сделано: условие подтверждено на базе (независимая приёмка), исправление прошло независимую source-приёмку и интегрировано (3473→3488).
На проде: да — линия l115g, HEAD 9c8a97629 (BASE), фикс-коммит 21f5c67db в истории; not_live_testable (план QA-харнесса 3557).
Доказано: /Users/milamarty/waves/3345REPAIRBRIDGE-REPORT.md; /home/wave/waves/3367INDEPENDENTLIFECYCLE-REPORT.md; SHIFT-STOP R2 (SOURCE=92f7ae807, ARTIFACT_SHA256=1353e969b); гейты scripts/security/live-gates/run.mjs.
Осталось: Live-гейт невозможен (not_live_testable): закрыть через QA-харнесс 3557.; Точный fix→release mapping принят координатором (SOURCE=92f7ae80 → l115g), но независимой строкой на карточке ещё не зафиксирован.; Полная browser/security приёмка (SHIFT-STOP R2 помечен как неполная)..
Кто следующий: координатор — дождаться гейта, закрыть BILLING_PARITY=NO-GO; статус не меняется (keep).
Ссылки: /Users/milamarty/waves/3345REPAIRBRIDGE-REPORT.md; /home/wave/waves/3367INDEPENDENTLIFECYCLE-REPORT.md; ARTIFACT_SHA256 1353e969b2a7a1a31ac702be361913c41cb53c104db49938a02f5fcd07766668; BASE l115a 8d598d69a663cfa8977816d96bb20303e9a9650c; R20 3113-B32-04-REPORT.md (SHA 79f827227f3983705cbfaaff18fa362a0997c2a432878c3beebe4ebb3f6c80c8); SOURCE 92f7ae807869bbaa8ae7ef6ca2ea622675e31af9; candidate 21f5c67db6aac85a1a553043b0fe48babf15ad83; fix 21f5c67db6aac85a1a553043b0fe48babf15ad83; https://bugs.wool2.online/web; integration 3473 HEAD f9c514014fcedccdecc2cf9e7c39a79421b4655b; integration 3488 HEAD d95fd864292c2763e8125de62a08e8fd8c181cde; prod l115g HEAD 9c8a97629b3f7fd8c79faff162eed482670f499d
Отчёт волны: /Users/milamarty/waves/3573ENRICH*-REPORT.md (M4), копия nc-ops-scripts/shift-20260912-resume/wash-20260912/enrich-collected/.
2026-09-13T08:03:19.801Z · coordinator
[13.09 08:03Z координатор] ЖИВОЕ ДОКАЗАТЕЛЬСТВО ЕСТЬ → done. SEC-058: написан новый тест на НАСТОЯЩИЙ GoogleRealtimeWsBridge с фальшивым сокетом: закрытие до set не оставляет started (волна 3626, 13.09, изолированный стенд с артефактом прода l115i и одноразовые фикстуры; вердикт определённый, не UNKNOWN). Evidence: /home/ubuntu/waves/3626SECURITYLASTSIX-evidence/ (A2), копия в shift-20260912-resume/3626/collected/.
2026-09-13T09:05:32.619Z · coordinator
[13.09 09:05Z координатор] ОБОГАЩЕНИЕ ПОД НУЛЕВОГО АГЕНТА (канон WEB-449, волна 3639): тело карточки переписано — суть, МЕХАНИКА (файлы/функции/где гейт/корень), хронология с волнами и коммитами, чем доказано живьём с путями к evidence, карта документов по машинам, остаток, и одна команда для перепроверки. Прежний текст триажа 10.09 сохранён в конце тела как «История», плюс бэкап /tmp/secbody-backup-WEB-607.md на M1.
2026-09-15T01:25:11.487Z · coordinator
[15.09 01:25Z координатор] ## 15.09 01:40Z — ВОШЁЛ В ПОСАДКУ l115o. Требуется пост-QA на проде.

Прод работает на `l115o-68e25d8d` (коммит `68e25d8df5ae8263c5ac5466353631f57a17cfcc`, артефакт `cd2773f65d66b09ec03d39b553041d2814ce09413e72d72b07bc9de89df536c8`) с 00:56Z 15.09. Посадка проверена: `ready=true`, коммит совпал, браузерная проба открыла документ, 0 новых ошибок.

**Работу по этому тикету принесли волны:** 3367.

**Что это значит для этого тикета.** Работа по нему пролежала принятой, но НЕ посаженной — в некоторых случаях неделями. Теперь она на проде. Приёмка волной доказывала, что код правильный в дереве волны; она НЕ доказывала, что фича работает на живом проде. Это разные вещи, и мы на этом уже обжигались.

**Поэтому статус — `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-15T02:40:34.984Z · coordinator
[15.09 02:40Z координатор] ## 15.09 06:05Z — 🔴 ПЕРЕОТКРЫВАЮ. Фикс есть в коде, посажен вместе с линией — но живой SIP-шлюз его не получил. Дефект работает прямо сейчас.

Делала пост-QA четырёх тикетов безопасности, приехавших с посадкой l115o. Три подтвердились, этот — нет.

### Что проверено

**Коммит фикса на месте.** `21f5c67db` («fix(sip): reset Google bridge after pre-setup close») — **предок** посаженного коммита `68e25d8df`. По этой проверке всё хорошо.

**Но живой шлюз работает не из артефакта.** Служба `ag-sip-native` запускается из `/home/pi/ag-voice/infra/sip/systemd-sip-supervisor.sh`, рабочий каталог процесса — `/home/pi/ag-voice`. Это отдельное дерево, не каталог релиза.

**Сравнение живого файла с репозиторием:**

| | живой `/home/pi/ag-voice/infra/sip/gateway/liveTransport/googleRealtimeWsBridge.js` | версия в посаженном коммите |
|---|---|---|
| дата файла | **7 сентября 09:07** | — |
| `resetStartupState` | **0 вхождений** | объявлен на `:604`, ставит `state.started = false` на `:617` |
| присваивания `state.started` | **ровно одно: `= true` на :720. Ни одного `= false` во всём файле** | `= false` на `:617`, `= true` на `:802` |
| вызов при закрытии до setup | нет | `:1058` — `resetStartupState(new Error('Google realtime socket closed before setup completed.'))` |

В живом `handleSocketClose` при `!setupCompleted` отклоняется промис setup — и всё. **`started` остаётся `true`.** Это ровно то состояние, которое тикет объявлял закрытым.

Проверила все шесть копий файла в дереве шлюза (`gateway/`, `gateway.landed-failed/`, четыре `gateway.bak-*`): `resetStartupState` **нет ни в одной**.

### Масштаб: это не один файл

В репозитории после 07.09 в `infra/sip/gateway` — **25 коммитов, 38 файлов**. В живом дереве обновлялись в основном тесты (21 файл новее 08.09), а рабочие файлы транспорта остались от 7 сентября. Среди этих 25 коммитов есть и другие правки безопасности (например, несколько «close SEC-014 redaction gaps»). **Каждую надо проверять отдельно на живом шлюзе, а не по факту попадания в линию.**

Это ровно тот класс, о котором предупреждает WEB-578: живой шлюз разошёлся с репозиторием в обе стороны. Но до сегодня мы не связывали это с закрытием тикетов безопасности.

### Моя ошибка в методике — записываю, чтобы не повторить

Сначала я проверила наличие фиксов в артефакте так: `grep` по маркеру из коммита в `.next`. Для WEB-600 и WEB-609 получила «найдено файлов: 0» и чуть не объявила их непосаженными. **Метод был неверен:** сборка минифицирует и переименовывает идентификаторы. Контрольный поиск заведомо существующей строки (`chat-global` → 24 файла) это показал. После этого `claimActiveHold` нашёлся в `src/lib/billing/walletService.ts` внутри артефакта, а скомпилированный роут видео содержит `abort`/`aborted`.

**Правило:** проверяя присутствие правки в артефакте, сначала прогнать контрольный поиск заведомо существующей строки. Отсутствие маркера в минифицированном бандле само по себе не значит ничего.

### Статус остальных трёх

- **WEB-599** (SEC-050, factcheck identity) — коммит предок прода, код в артефакте. Остаётся поведенческая проверка.
- **WEB-600** (SEC-051, двойное списание hold) — коммит `9bbc8796a` предок прода, маркер `claimActiveHold` найден в `src/lib/billing/walletService.ts` в артефакте. **Посажен.**
- **WEB-609** (SEC-060, video abort) — коммит `d1a6934ca` предок прода, скомпилированный роут `.next/server/app/api/video/pipeline/run/[runId]/stream/route.js` содержит обработку abort. **Посажен.**

### Что дальше по этому тикету

Нужна доставка фикса на живой шлюз — это не пересборка артефакта, а отдельная операция с деревом `/home/pi/ag-voice`, и её надо делать по процедуре WEB-578, а не копированием файла руками. До этого тикет остаётся открытым.
2026-09-15T14:05:05.608Z · coordinator
[15.09 14:05Z координатор] [15.09 14:02Z координатор] Post-QA 4034: VERDICT=REOPEN, evidence 8/8 SHA256. Живой ag-sip-native.service по-прежнему исполняет pre-fix non-git tree /home/pi/ag-voice; bridge hash отличается от исправленного l115o. На фактическом executable bridge disposable fake-WebSocket harness воспроизвёл setup-close: start rejected, но started=true и providerSessionId остаётся. Точный следующий шаг: snapshot-first доставить эквивалент commit 21f5c67d в живой gateway, затем снять post-landing executable hash и разрешённую sanitised live-business receipt для setup-close recovery и normal call path. Тикет остаётся in_progress; наличие фикса в app line не считается починкой живого gateway.
2026-09-15T15:17:53.984Z · coordinator
[15.09 15:17Z координатор] 4053 author package = GO для независимой приёмки, production не менялся. Из точного live snapshot собран минимальный пятихунковый перенос l115o-поведения; live RED, staged candidate GREEN 8 lifecycle checks, inverted control red, unhandled rejections=0, live hash до/после неизменен. Полный SHA manifest проверен. Следующее: другая машина принимает patch, затем отдельный атомарный deploy/restart/live receipt.
2026-09-15T15:40:16.582Z · coordinator
[15.09 15:40Z координатор] Независимая Neo/4061: NO-GO только по целостности передаваемого patch-артефакта. Само поведение исправления принято: live snapshot воспроизводит RED, staged candidate даёт GREEN, пять нужных lifecycle-hunks и ноль посторонних, syntax и отрицательный контроль зелёные. Но `googleRealtimeWsBridge.minimal.patch` не побайтно равен свежему unified diff этих же хешированных файлов (первый hunk 499 против фактического 498); штатный source_diff_check воспроизводит расхождение. Evidence SHA целиком 8/8. WEB-607 остаётся in_progress; A1/4066 переиздаёт только patch без изменения JS-кандидата, после чего нужна свежая независимая приёмка и лишь затем deploy/restart/live receipt.
2026-09-15T15:47:16.215Z · coordinator
[15.09 15:47Z координатор] A1/Luna 4066: GO на переупакованный snapshot-bound patch, не deploy authorization. JS snapshot/candidate не менялись; deterministic `diff -U 4` дважды дал побайтно одинаковый patch, он применился без offset/fuzz и восстановил candidate byte-for-byte. Пять ожидаемых lifecycle hunks, ноль посторонних; syntax, source-diff fixture, исходный и независимый lifecycle harness, отрицательный контроль зелёные. Evidence/package SHA 18/18. WEB-607 остаётся in_progress; следующая стадия — свежая независимая приёмка другой машиной, затем атомарный deploy/restart и sanitized live-business receipt.
2026-09-15T16:04:08.620Z · coordinator
[15.09 16:04Z координатор] Независимая A2/4070 приняла исправленный snapshot-bound пакет: supplied manifest 20/20, новый delivery SHA 5/5, regenerated diff побайтно равен patch, ровно пять lifecycle-hunks и ноль посторонних; patch применяется без fuzz/offset и даёт byte-identical candidate. Live snapshot RED, candidate GREEN, retry/late-event quarantine/idempotency и negative control подтверждены.

После этого coordinator атомарно установил candidate в фактически исполняемый A1 `/home/pi/ag-voice` при исходном SHA `296f18d2…`, 0 active calls и readiness=ready. Новый SHA `e9064d51…`, service active, PID сменился `3875635→2221329`, соседний Opus-unit остался inactive. Backup: `/home/pi/ag-voice/infra/sip/backups/googleRealtimeWsBridge.js.pre-web607-20260915T155756Z`.

Post-landing harness запущен против самого live-файла: lifecycle PASS, unhandled rejections 0, readiness PASS, SHA receipt 4/4. Реальный provider-call не запускался (`real_provider_call=NOT_RUN`), поэтому WEB-607 остаётся `in_progress` до одного разрешённого нормального звонкового receipt; source/deploy дефект уже устранён.
2026-09-19T15:58:36.807Z · coordinator
[POST-QA 4211 AUDIT COMPLETE 19.09]

Fresh read-only DeepSeek Pro audit 4211 completed from the full immutable body+comment snapshot. Output SHA256SUMS readback PASS; manifest SHA-256 `eef44e99f84b858af013057c17731a4cba0e0ce5886664167507eba15afa51f1`. Disposition: `NEEDS_NARROW_POST_QA`. No status change is safe now; keep `in_progress`.

What remains unproved:
- Real provider call not run: real_provider_call=NOT_RUN. One authorized normal call receipt (setup-close recovery + normal call path) is missing.

One bounded next action: Run one authorized normal call through the live gateway and record a sanitized live-business receipt covering setup-close recovery and the normal call path.
Target evidence: A sanitized live-business receipt (real provider call) with real_provider_call=RUN/GREEN for setup-close recovery + normal call.

This audit changed no board data and made no production claim outside the snapshot. Closure still requires ticket-specific evidence and coordinator readback.
2026-09-22T18:22:00.506Z · triage-m1
РЕШЕНИЕ=in_progress
ОСНОВАНИЕ=Комментарий 5583 от 2026-09-19T15:58:36Z: real_provider_call=NOT_RUN; source/deploy gap закрыт, live normal call отсутствует.
ЧТО НУЖНО=Провести один разрешённый normal call через live gateway и записать sanitised live-business receipt для setup-close recovery и normal call path.
triage-m1 4612
2026-09-23T12:11:33.417Z · triage-neo
РЕШЕНИЕ=in_progress
ОСНОВАНИЕ=2026-09-19, аудит 4211 NEEDS_NARROW_POST_QA; фикс посажен в live, SHA e9064d51; real_provider_call=NOT_RUN остаётся открытым.
ЧТО НУЖНО=первый шаг: провести один разрешённый normal call через live gateway и записать sanitised live-business receipt
triage-neo 4704
Воркер
не проверен STOPPED; l115f-r2 installed; finding live gate OPEN coordinator движение в панели: неизвестно
Подключиться и смотреть/перехватить руками. Колесо мыши листает; клавишами — Ctrl-b затем [, выход из прокрутки q. Отсоединиться — Ctrl-b затем d:
Прочитать историю панели без подключения — листается и ищется (/ поиск, q выход), воркеру не помешает:
Обновлён
2026-09-22T18:22:00.517Z