WEB-519 · Задача · — · web
SEC-003 [Hardening; CVSS pending] FastAGI: очистка аудио проверяет подстроку вместо владения вызовом
Закрыт
P1 · важно
ведёт: —
эпик: WEB-515
Суть
## ДЛЯ НУЛЕВОГО АГЕНТА (обновлено 2026-09-05 UTC)
- **Суть одной строкой:** SEC-003 [Hardening; CVSS pending] FastAGI: очистка аудио проверяет подстроку вместо владения вызовом
- **Текущее состояние:** статус: blocked; что на проде: body: Текущее состояние:** статус: blocked; что на проде: 2026-09-05T02:14:12.646Z: [BLOCK2-SEC-003-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-003 [[W; 2026-09-05T02:14:12.646Z: [BLOCK2-SEC-003-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-003 [[WEB-519]], родитель [[WEB-515]]. Правила: WEB-449. Состояни; 2026-09-05T13:09:56.325Z: BLOCK9-SEC003-INBOX-ADJUDICATION — 2026-09-05T13:09:56.324819+00:00 / IST=2026-09-05T18:39:56.324826+05:30 Правила обогащения WEB-449. SEC-003 / parent WE; что принято/ждёт посадки: body: Текущее состояние:** статус: blocked; что на проде: 2026-09-05T02:14:12.646Z: [BLOCK2-SEC-003-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-003 [[W; 2026-09-05T02:14:12.646Z: [BLOCK2-SEC-003-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-003 [[WEB-519]], родитель [[WEB-515]]. Правила: WEB-449. Состояни; 2026-09-05T12:47:55.078Z: [05.09 12:47Z координатор] Волна 1912 AGI-CLEANUP-BOUNDARY (Claude opus, A2) = GO по локальному контракту, runtime-impact UNKNOWN намеренно, fix PROPOSED:; 2026-09-05T13:09:56.325Z: BLOCK9-SEC003-INBOX-ADJUDICATION — 2026-09-05T13:09:56.324819+00:00 / IST=2026-09-05T18:39:56.324826+05:30 Правила обогащения WEB-449. SEC-003 / parent WE; 2026-09-05T13:09:56.330Z: BLOCK9-SEC003-THREE-ACCEPTANCE-GROUPS — 2026-09-05T13:09:56.329819+00:00 / IST=2026-09-05T18:39:56.329824+05:30 Три обязательные группы для приёмки будуще; что в работе: body: Текущее состояние:** статус: blocked; что на проде: 2026-09-05T02:14:12.646Z: [BLOCK2-SEC-003-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-003 [[W; 2026-09-05T02:14:12.646Z: [BLOCK2-SEC-003-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-003 [[WEB-519]], родитель [[WEB-515]]. Правила: WEB-449. Состояни; 2026-09-05T12:47:55.078Z: [05.09 12:47Z координатор] Волна 1912 AGI-CLEANUP-BOUNDARY (Claude opus, A2) = GO по локальному контракту, runtime-impact UNKNOWN намеренно, fix PROPOSED:; 2026-09-05T13:09:56.325Z: BLOCK9-SEC003-INBOX-ADJUDICATION — 2026-09-05T13:09:56.324819+00:00 / IST=2026-09-05T18:39:56.324826+05:30 Правила обогащения WEB-449. SEC-003 / parent WE
- **Кто работал:**
- body: Текущее состояние:** статус: blocked; что на проде: 2026-09-05T02:14:12.646Z: [BLOCK2-SEC-003-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-003 [[W
- 2026-09-05T02:14:12.646Z: [BLOCK2-SEC-003-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-003 [[WEB-519]], родитель [[WEB-515]]. Правила: WEB-449. Состояни
- 2026-09-05T12:47:55.078Z: [05.09 12:47Z координатор] Волна 1912 AGI-CLEANUP-BOUNDARY (Claude opus, A2) = GO по локальному контракту, runtime-impact UNKNOWN намеренно, fix PROPOSED:
- 2026-09-05T13:09:56.325Z: BLOCK9-SEC003-INBOX-ADJUDICATION — 2026-09-05T13:09:56.324819+00:00 / IST=2026-09-05T18:39:56.324826+05:30 Правила обогащения WEB-449. SEC-003 / parent WE
- 2026-09-05T13:09:56.330Z: BLOCK9-SEC003-THREE-ACCEPTANCE-GROUPS — 2026-09-05T13:09:56.329819+00:00 / IST=2026-09-05T18:39:56.329824+05:30 Три обязательные группы для приёмки будуще
- **Ветки/бандлы/отчёты:**
- body: Ветки/бандлы/отчёты:**
- 2026-09-05T02:14:12.646Z: [BLOCK2-SEC-003-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-003 [[WEB-519]], родитель [[WEB-515]]. Правила: WEB-449. Состояни
- 2026-09-05T12:47:55.078Z: [05.09 12:47Z координатор] Волна 1912 AGI-CLEANUP-BOUNDARY (Claude opus, A2) = GO по локальному контракту, runtime-impact UNKNOWN намеренно, fix PROPOSED:
- 2026-09-05T13:09:56.325Z: BLOCK9-SEC003-INBOX-ADJUDICATION — 2026-09-05T13:09:56.324819+00:00 / IST=2026-09-05T18:39:56.324826+05:30 Правила обогащения WEB-449. SEC-003 / parent WE
- 2026-09-05T13:09:56.330Z: BLOCK9-SEC003-THREE-ACCEPTANCE-GROUPS — 2026-09-05T13:09:56.329819+00:00 / IST=2026-09-05T18:39:56.329824+05:30 Три обязательные группы для приёмки будуще
- **KNOWN ISSUES / ТРАБЛШУТИНГ:** симптом → проверка → причина (file:line, если есть) → лечение
- body: KNOWN ISSUES / ТРАБЛШУТИНГ:** симптом → проверка → причина (file:line, если есть) → лечение
- 2026-09-05T02:14:12.646Z: [BLOCK2-SEC-003-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-003 [[WEB-519]], родитель [[WEB-515]]. Правила: WEB-449. Состояни
- 2026-09-05T12:47:55.078Z: [05.09 12:47Z координатор] Волна 1912 AGI-CLEANUP-BOUNDARY (Claude opus, A2) = GO по локальному контракту, runtime-impact UNKNOWN намеренно, fix PROPOSED:
- 2026-09-05T13:09:56.325Z: BLOCK9-SEC003-INBOX-ADJUDICATION — 2026-09-05T13:09:56.324819+00:00 / IST=2026-09-05T18:39:56.324826+05:30 Правила обогащения WEB-449. SEC-003 / parent WE
- 2026-09-05T13:09:56.330Z: BLOCK9-SEC003-THREE-ACCEPTANCE-GROUPS — 2026-09-05T13:09:56.329819+00:00 / IST=2026-09-05T18:39:56.329824+05:30 Три обязательные группы для приёмки будуще
- **Эволюция:**
- 2026-09-05T02:14:12.646Z → [BLOCK2-SEC-003-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-003 [[WEB-519]], родитель [[WEB-515]]. Правила: WEB-449. Состояние: локальный hardening-воп
- 2026-09-05T12:47:55.078Z → [05.09 12:47Z координатор] Волна 1912 AGI-CLEANUP-BOUNDARY (Claude opus, A2) = GO по локальному контракту, runtime-impact UNKNOWN намеренно, fix PROPOSED: infra/sip/gateway/index.j
- 2026-09-05T13:09:56.325Z → BLOCK9-SEC003-INBOX-ADJUDICATION — 2026-09-05T13:09:56.324819+00:00 / IST=2026-09-05T18:39:56.324826+05:30 Правила обогащения WEB-449. SEC-003 / parent WEB-515, infra WEB-420:1912
- 2026-09-05T13:09:56.330Z → BLOCK9-SEC003-THREE-ACCEPTANCE-GROUPS — 2026-09-05T13:09:56.329819+00:00 / IST=2026-09-05T18:39:56.329824+05:30 Три обязательные группы для приёмки будущего патча координатора. Это
- **Следующий шаг:** см. текущую работу из комментариев: 2026-09-05T13:09:56.325Z: BLOCK9-SEC003-INBOX-ADJUDICATION — 2026-09-05T13:09:56.324819+00:00 / IST=2026-09-05T18:39:56.324826+05:30 Правила обогащения WEB-449. SEC-003 / parent WE
Связи
- связан → WEB-515 — ЭПИК: АУДИТ БЕЗОПАСНОСТИ проекта (Codex gpt-6-astra как security lead) — карта поверхности, threat model, ASVS L2, реестр находок, фиксы с adversarial-приёмкой на Claude
- связан (обратная) → WEB-463 — P2 [ТЕЛЕФОНИЯ 8000]: ассистента нельзя перебить (barge-in не срабатывает) — owner 02.09 после переезда SIP на A1
Лента
2026-09-05T02:14:12.646Z · astra-security[BLOCK2-SEC-003-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security]
ДЛЯ ТИКЕТА — SEC-003 [[WEB-519]], родитель [[WEB-515]]. Правила: WEB-449.
Состояние: локальный hardening-вопрос о границе разобран; дочерняя задача остаётся Needs Independent Proof / Fix Proposal. Severity/CVSS3.1 pending, P1 — инженерный приоритет. Код/прод не менялись.
УСЛОВИЕ: При обычных разных call ID с общим префиксом cleanup выбирает sibling-call файлы: infra/sip/gateway/index.js:2140–2141 использует includes(uniqueId). Lease gate :2138 ограничивает поколение, но не владельца внутри поколения.
ПРИЧИНА С ДОКАЗАТЕЛЬСТВОМ: Actual whole handleCall в VM/native-mode с fake fs:2pass/1fail exit1, expected1/actual3 selected artifacts. Disjoint ID и lease-loss controls green. Реальных удалений, provider calls или shell execution не было.
ПРЕДЛОЖЕНИЕ ФИКСА: Exact per-call manifest/isolated directory с нормализованным opaque ID; сохранить lease/cache ownership. Контейнерный cleanup требует отдельной проверки. Broad H01 peer/listener/shell не закрыт; live gateway опережает baseline, не переносить clone поверх него.
Что село: baseline l106-line 6930c6832744e273ccad495caba9b31329761650, исходный root /Users/poolpooly/audit/nc; артефакты тестов и append-only specs. Родитель повторил финальные тесты, exact exits/hashes в parent-validation.json. Нет fix commit/accepted release.
Что осталось: независимая Claude-проверка по /Users/poolpooly/audit/outbox/1904-agi-cleanup-boundary-brief.md — новый независимый Claude review. Брифы опубликованы в outbox; подхват координатором ещё не подтверждён, inbox пуст. Никаких вредных данных, exploit/payload/пошаговых атак; только benign fixture behavior + fix design.
КАРТА ДОКУМЕНТОВ (M1): /Users/poolpooly/audit/reports/2026-09-05-agi-boundary-block2.md; /Users/poolpooly/audit/reports/2026-09-05-boundaries-block2.md; /Users/poolpooly/audit/evidence/block2/agi/; /Users/poolpooly/audit/evidence/block2/parent-validation.json; /Users/poolpooly/Projects/nc-agent-ops/board/specs/SECURITY-FINDINGS-REGISTER.md и SECURITY-THREAT-MODEL.md.
KNOWN ISSUES / ТРАБЛШУТИНГ: симптом/причина выше → проверка до2мин целевым Node22-тестом из parent-validation.json (там cwd/env) → лечение в предложении фикса, независимая приёмка pending. Красный baseline-инвариант не является принятым исправлением.
2026-09-05T12:47:55.078Z · coordinator[05.09 12:47Z координатор] Волна 1912 AGI-CLEANUP-BOUNDARY (Claude opus, A2) = GO по локальному контракту, runtime-impact UNKNOWN намеренно, fix PROPOSED: infra/sip/gateway/index.js:2140-2141 отбирает файлы f.includes(uniqueId) по provider-id <epoch>.<seq> (:1655) в плоском общем HOST_AUDIO (:70) — два обычных независимых id (1757068800.4 / .42; .1 / .10): ожидалось 14 удалений, наблюдалось 28, collateral 14, в том числе у ещё идущего звонка. 12 тестов (5 control pass, 7 red), два идентичных прогона, блок исполнялся verbatim из исходника, Docker-адаптер инертен. Кода не менялось; infra/sip/gateway не тронут. ФИКС: точная per-call принадлежность (уникальный каталог/префикс с разделителем на вызов) — это правка ЖИВОГО шлюза (⛔ для волн): координатор готовит патч отдельно и ставит на шлюз в окно с владельцем (после эпиков). Отчёт передан Астре (inbox).
KNOWN ISSUES / ТРАБЛШУТИНГ: пропавшая запись/аудио у звонка → проверить, не завершился ли параллельно звонок с id-префиксом (напр. .4 при .42) → до фикса: не ставить звонки с prefix-родственными id одновременно (практически не управляемо) — приоритет фикса Medium.
2026-09-05T13:09:56.325Z · astra-securityBLOCK9-SEC003-INBOX-ADJUDICATION — 2026-09-05T13:09:56.324819+00:00 / IST=2026-09-05T18:39:56.324826+05:30
Правила обогащения WEB-449. SEC-003 / parent WEB-515, infra WEB-420:1912 принят GO точного локального условия на6930. Runtime impact UNKNOWN; fix design PROPOSED, не accepted. App CVSS3.1 pending (у воркера N/A): provider-minted ID не означает управляемый внешний вход; AV/AC/PR/UI, фактический ресурс и CIA не установлены.
Условие infra/sip/gateway/index.js:2140–2141: cleanup выбирает shared audio files по подстроке provider ID, не по точному владению вызовом. Worker выполнил verbatim block на одноразовых harmless files:12tests,5control pass/7red, два одинаковых результата exit1; Docker adapter инертен. Это не живой gateway. Source SHA совпал локально; remote TAP/fixture отдельно не доставлены. Старый архив1902–1904 воркер не получил, fixture пересоздана, counts не суммируются со старым2/1.
Новые уточнения в том же scope: один unlink failure прекращает весь cleanup loop; fallback timestamp не гарантирует уникальное имя артефакта. Lease loss корректно запрещает cleanup; наличие действующей lease не доказывает per-call ownership. Не публикую оценку нагрузки стенда как доказанную нагрузку PBX.
Координатор1373 планирует собственный патч живого шлюза и окно с владельцем. Статус blocked = ждёт этого процесса и актуального разрешённого snapshot. Никакого нового outbox на gateway edits. Manifest/изолированное namespace — предложение; sketch не принят и не заменяет проверку namespace uniqueness, обеих adapter-семантик и shared cache retention.
KNOWN ISSUES / ТРАБЛШУТИНГ: snapshot6930 не равен текущему gateway, который опережает приложение. Для проверки≤2мин читать §Independent evidence и source hash; не запускать код шлюза. КАРТА: /Users/poolpooly/audit/inbox/done/AGI-CLEANUP-BOUNDARY-REPORT.md; /Users/poolpooly/audit/evidence/block9/inbox-trio-source-checks.json; specs/SECURITY-FINDINGS-REGISTER.md. ДЛЯ ТИКЕТА: ownership condition GO, runtime неизвестен, приёмка будущего патча ниже; sourcefix/deploy агентом не выполнялись.
2026-09-05T13:09:56.330Z · astra-securityBLOCK9-SEC003-THREE-ACCEPTANCE-GROUPS — 2026-09-05T13:09:56.329819+00:00 / IST=2026-09-05T18:39:56.329824+05:30
Три обязательные группы для приёмки будущего патча координатора. Это контракт на harmless fixtures, не разрешение воркерам править/запускать gateway. Правила WEB-449.
1. Exact ownership: два обычных concurrent call fixtures с пересекающимися текстовыми ID; завершение одного удаляет только его зарегистрированные файлы. Файлы соседа, его активный playback/recording, shared greeting/council cache сохраняются. Positive control удаляет все собственные завершённые артефакты.
2. Adapter/lease parity: native и inert container adapters выбирают один точный owned set, без wildcard-селекции чужих файлов. Fence loss даёт ноль cleanup effects; действующая lease не разрешает чужие пути. Provider call ID/idempotency semantics сохраняются отдельно от внутреннего artifact ID.
3. Lifecycle/errors: отдельный отсутствующий/временно недоступный файл не бросает остаток cleanup; повторная очистка идемпотентна, cancellation/completion не теряются. Fallback allocation создаёт различные внутренние artifact names для разных вызовов, не полагается на один timestamp. Проверить действительные filename producers, а не только manifest с уже совпавшими именами.
Нужны exact reviewed snapshot/fix commit, baseline red/fix green TAP, source/test hashes и независимый автор. Runtime/deploy вне этой приёмки и выполняется только координатором в согласованном окне. KNOWN ISSUES / ТРАБЛШУТИНГ: manifest-only green не решает предшествующую коллизию имён.
2026-09-05T20:39:29.463Z · coordinator[05.09 20:39Z координатор] [05.09 20:33Z координатор | ХОСТ-ПАТЧ В ОКНЕ ВЛАДЕЛЬЦА] Владелец дал окно (voice 20:17Z: шлюзом сейчас не пользуются). Применил hardening на живом SIP-хосте A1: `/home/pi/ag-voice/infra/sip/gateway/index.js` (бэкап `index.js.bak-web519-20260905T2031Z`, хост-копия НЕ git и отличается от repo-копии: sha256 b7f019f6… vs a140fbd4… в l112). Было (:2306): `readdirSync(HOST_AUDIO).filter(f => f.includes(uniqueId))` — подстрока; стало: `ownedRe = /(^|[-_])<escaped uniqueId>(?=[-_.]|$)/` + unlink каждого файла в своём try (один отсутствующий файл не рвёт остаток). Продьюсеры имён проверены по хосту: `turn-${uniqueId}-${turn}`, `resp-${uniqueId}-greeting`, `pseudo-${key}-${uniqueId}-${turnIndex}`, `ev-/cancel-/pin-/start-${uniqueId}` — во всех uniqueId ограничен `-` и после него `-`/`.`; shared `greeting-cached-<hash>-playback.wav` не содержит uniqueId. Фикстурный тест (node, uid=1757068800.4): DEL turn-1757068800.4-1.wav, resp-1757068800.4-greeting.wav, pseudo-x-1757068800.4-2-kind.wav; KEEP turn-1757068800.42-1.wav, resp-1757068800.41-greeting.wav, turn-11757068800.4-1.wav, greeting-cached-0b05-playback.wav. `node --check` ok; `ag-sip-native` перезапущен 20:32Z, Asterisk :5060 и шлюз :4080 живы, greeting pre-warmed.
ПОПУТНО (та же причина «отвалился SIP»): после OCI RESET A1 15:11Z поднялись ОБА юнита `ag-sip-native` и `ag-sip-native-opus-experimental` (оба enabled) и 5 ч дрались за :5060 (686 рестартов, «Asterisk PID is gone»). Экспериментальный disabled+stopped 20:30Z. fail2ban (jail asterisk-sip-auth) тоже лежал с ребута — поднят 20:31Z.
ОСТАЁТСЯ ДЛЯ ЗАКРЫТИЯ: контракт трёх групп приёмки (комментарий 13:09Z) требует repo-фикс + TAP baseline red/fix green + независимого автора → волна 2080 на repo-копии `infra/sip/gateway/index.js` (l112 900b773c7), потом sync хост↔repo. Хост-патч = минимальный hardening «exact ownership», не закрывает группы 2 (adapter/lease parity) и 3 (fallback allocation) целиком.
KNOWN ISSUES / ТРАБЛШУТИНГ (дельта): симптом «SIP не логинится/звонки пропали» → `systemctl status ag-sip-native ag-sip-native-opus-experimental` + `ss -lunp | grep 5060` → два юнита enabled бьются за порт → `disable --now` экспериментального, `restart ag-sip-native`; телефоны 7015/7016 регистрируются заново сами (софтфон перезайти).
2026-09-05T21:01:54.237Z · coordinator[05.09 21:01Z координатор] [05.09 21:30Z координатор | 2080 AGICLEANUP = GO автора] Кандидат `a36b3c1125abd462465c3ed7b9b509a26c1f7d04` (luna, A2, база l112 900b773c7; бандл `/home/ubuntu/waves/AGICLEANUP.bundle`, отчёт `AGICLEANUP-REPORT.md`): owned-set артефактов на вызов, продьюсеры имён регистрируют файлы (таблица file:line в отчёте), cached greeting/council cache намеренно shared и не регистрируются, idempotency-ключи ev-/cancel-/pin-/start-/complete-/turn- не тронуты, RED baseline → GREEN на node:test. По контракту трёх групп (13:09Z) требуется независимый автор приёмки → волна 2087 (luna, A2) с собственными фикстурами по каждой группе. После GO: l113 (repo) + sync хост↔repo координатором в окне (хост сейчас несёт минимальный regex-патч 20:31Z, sha256 хост-копии b7f019f6…).
2026-09-05T21:12:53.114Z · coordinator[05.09 21:12Z координатор] [05.09 21:30Z координатор | ПРИЁМКА 2087 = GO] Независимая приёмка luna (A2, `/home/ubuntu/waves/ACCAGICLEANUP-REPORT.md`) кандидата `a36b3c1125abd462465c3ed7b9b509a26c1f7d04` по контракту трёх групп — GO. → l113 (repo). После посадки l113 — sync хост↔repo `infra/sip/gateway/index.js` координатором в окне (сравнить с хост-копией, на которой сейчас минимальный regex-патч 20:31Z и, возможно, другие локальные отличия — sha256 хоста b7f019f6… vs repo l112 a140fbd4…), затем закрыть SEC-003 с runtime-подтверждением одного реального звонка (7016 → 8000 по TCP).
2026-09-05T21:34:22.815Z · astra-securitycont13-candidate-acceptance — 2026-09-05T21:34:22.814935+00:00 / IST=2026-09-06T03:04:22.814942+05:30
WEB-519 comment1625 сообщает independent GO2087 по трём группам для a36b3c11. Статус остаётся blocked: после l113 координатор отдельно сравнивает и синхронизирует host/repo gateway в назначенном окне, затем подтверждает runtime. На хосте есть отдельный минимальный патч/возможные локальные отличия; parent не делает sync или service restart. Приёмка repo-кандидата не принимается за уже изменённый gateway runtime.
ДЛЯ ТИКЕТА: reported GO candidate; blocked статус координатора сохранён. High/Critical и фактическая посадка/приёмка передаются координатору. Полный2087 report локально ещё не получен; no parent runtime execution.
2026-09-05T22:32:21.269Z · astra-securitycont14-cleanup-child — 2026-09-05T22:32:21.269322+00:00 / IST=2026-09-06T04:02:21.269328+05:30
## CONT14 — 2087 cleanup: repo GO принят в заявленном объёме
Получен полный2087 ACCAGICLEANUP report (9564 bytes; SHA256 8bec2e478b744f252361eb112eb107e1b50b82c2173a6725b18aabc5561c55dc). Принимается независимый scoped GO repo-кандидата a36b3c1125abd462465c3ed7b9b509a26c1f7d04 на точной базе900b773c7. Scope: семь JS-файлов infra/sip/gateway, +458/-24, dependency/lockfile изменений нет по отчёту. Новый fix-бриф не создаётся.
Independent harness: три группы exact ownership / adapter+lease parity / lifecycle+errors. Общий baseline0pass/3fail exit1 → candidate3pass/0fail exit0. Baseline группы2/3 падают на отсутствующем новом helper: это change-detection RED, не дополнительная поведенческая характеристика legacy. Не трактовать строку0/3 как три отдельных проверки первой группы. Candidate author test7/7; scoped regression62/62 на обеих базах. Plain node --test допустим для данного JS/CommonJS набора; исходная команда с tsx не воспроизведена из-за отсутствия установленной зависимости в remote worktree, не потому что tsx не объявлен проектом.
Сохранение соседнего call-owned набора/shared caches, exact native/container selection и lease loss refusal проверены fixture-автором. Container — injected adapter, не запущенный Docker; experimental trace/tap/ingress retention вне FastAGI cleanup scope. M1 проверил bytes/SHA отчёта; bundle/harness/raw TAP и candidate objects здесь отсутствуют. Указанные remote bundle verification и candidate hashes — report-attested, не повторно исполненные M1 checks.
WEB-519 остаётся blocked до coordinator landing/sync/runtime: включение repo-кандидата в собираемый l113675f21e6 не подтверждает host gateway. После посадки координатор сравнит фактическую host-копию с полной согласованной семифайловой дельтой и сохранит host-only изменения; минимальный regex-патч не эквивалентен registry ownership. Действующий window/runtime acceptance остаётся за координатором; parent не выполняет SSH/sync/service restart или звонки. CVSS3.1 не пересчитан без новых actor/impact evidence.
2026-09-06T03:54:13.600Z · coordinator[06.09 03:54Z координатор] [2026-09-06T03:54Z координатор] SIP→sip.sixbyy.com: подготовка без простоя выполнена — сертификат /etc/letsencrypt/live/sip.sixbyy.com (до 05.12), ufw 5061/tcp, nginx ACME-vhost, дерево infra/sip из l113b на стейдже /home/ubuntu/sip-stage. План-волна 2165 (A1) = BLOCKED: repo-лаунчер при пропущенном DB sync очищает SIP_NATIVE_EXTRA_PJSIP_TEMPLATE (pjsip-public-owner-proof.conf) → endpoint'ы 7015/7016 исчезнут. → Волна 2170-siplauncherpreserve (A2, luna xhigh): host-preserving лаунчер + RUNBOOK. Окно владельца — после её GO. Отчёт: A1 /home/ubuntu/waves/SIPSYNCPLAN-REPORT.md.
2026-09-06T04:11:39.574Z · coordinator[06.09 04:11Z координатор] [2026-09-06T04:11Z координатор] Волна 2170-siplauncherpreserve (A2, luna xhigh): VERDICT=GO, commit=929dcf4a — лаунчер при пропущенном DB sync append'ит host-only template (лог «legacy template appended»), compact-sip-config не теряет endpoint'ы; RUNBOOK с точными командами A1 + rollback. Файлы (start-sip-native.sh, compact-sip-config.py, pjsip-native/compact-defaults/tls.example) уже на A1 в /tmp/SIPLAUNCHERPRESERVE-d200a2bb. Приёмка 2174-accsiplauncher (sol) идёт; хостовая установка — в окне владельца после GO. Отчёт: A2 /home/ubuntu/waves/SIPLAUNCHERPRESERVE-REPORT.md.
2026-09-06T07:38:54.378Z · coordinator[06.09 07:38Z координатор] [2026-09-06T07:38Z координатор] Волна 2179b-siplauncher2b (A2, luna xhigh): VERDICT=GO, commit=b7b83b20 — дедуп transport-секций (ошибка на дубликате) + host template побеждает частичную запись writer. Независимая приёмка 2201-accsiplauncher2 поставлена (sol). GO → хостовая установка на A1 в моём окне (владелец подтвердил дефолтный GO 07:13Z; перерегистрация клиентов — позже сегодня).
2026-09-06T07:52:34.881Z · coordinator[06.09 07:52Z координатор] [2026-09-06T07:52Z координатор] SIP ПЕРЕКЛЮЧЁН НА sip.sixbyy.com 07:52Z (владелец: дефолтный GO 07:13Z). Установлено из принятого b7b83b20 (2179b, acc 2201 GO): start-sip-native.sh, compact-sip-config.py, pjsip-native/compact-defaults/tls.example → /home/pi/ag-voice/infra/sip; drop-in /etc/systemd/system/ag-sip-native.service.d/20-sixbyy-transport.conf (TLS cert/key из /home/ubuntu/sip-tls — копия LE через deploy-hook sip-tls-copy.sh, т.к. служба под ubuntu не читает /etc/letsencrypt; tlsv1_2, 5061, домен sip.sixbyy.com, alias sip.wool2.online, codecs ulaw,alaw,opus). Результат: transports udp/tcp 5060 + tls 5061; endpoints 7015/7016 для обоих доменов; generated conf 8 секций 7015/7016; «legacy template appended» в журнале; readiness 4080 ready; LEASE_LOST 0. Бэкап: /var/backups/ag-sip-native/<STAMP>-siplauncherpreserve (путь в /home/ubuntu/sip-cutover-backup.path); откат по RUNBOOK из отчёта 2170. Владельцу: перерегистрировать клиенты на sip.sixbyy.com TCP 5060 / TLS 5061. KNOWN ISSUE: /tmp/SIPLAUNCHERPRESERVE-* стейдж, asterisk бинарь /home/pi/.local/asterisk/sbin/asterisk (не в PATH sudo).
2026-09-06T14:11:34.876Z · astra-securityblock19-wave-2124-web-519 — 2026-09-06T14:11:34.875697+00:00 / IST=2026-09-06T19:41:34.875707+05:30
Правила обогащения: WEB-449. ДЛЯ ТИКЕТА: BLOCK19 REVIEW, gpt-5.6-sol, URGENT / open SEC closure.
Remaining original open SEC519/531 now need exact source/host separation. Currentg contains531 mapped dcb98b44/096b06fa/d443e772 (coordinatorca35/ad7/e8c chain), including infra/sip/gateway/index.js and stasisSnoopIngressSpike.js; targeted test infra/sip/gateway/__tests__/sec014RawSinkGuard.test.js.519 accepted cleanup contract is represented by fastAgiArtifactOwnership.test.js:25–39,74 and actual artifactOwnership.cleanup call chain. Resolve current exact file:line/hashes; do not copy repo gateway over host. Coordinator2315 host-sync plan may already own activation: consume its sanitized allowlist/receipt if supplied. NewFIX only if independent ordinary codeproof finds residual; no source change in this review.
Бриф M1 /Users/poolpooly/audit/outbox/2124-gateway-owned-artifacts-and-diagnostics-review-brief.md; SHA256 605492884b1215afeb25d3d7fb2700d8be681acae2ccaf7e4e801030ae037036. База l113g4c322c4606a1695fc896ecd6313842d55679b472. Выдан в outbox, running не подтверждён.
KNOWN ISSUES / ТРАБЛШУТИНГ: old4c73 report verdict не равен currentg defect или runtime acceptance. Сначала current-source/candidate dedupe; no duplicate implementation. Три обязательные группы проверок в брифе; failed/skipped gates и owner/host dependencies сохранять явно. High — приоритет closure, CVSS не повышен. Документы M1 /Users/poolpooly/audit/evidence/block19/fanout-jobs.json; будущий отчёт worker ~/waves/BLOCK19-GATEWAY-OWNED-ARTIFACTS-AND-DIAGNOSTICS-REVIEW-REPORT.md
2026-09-06T15:30:02.263Z · astra-securityblock20-block19-gateway-owned-artifacts-and-diagnostics-review-web-519 — 2026-09-06T15:30:02.262101+00:00 / IST=2026-09-06T21:00:02.262115+05:30
Правила обогащения: WEB-449. ДЛЯ ТИКЕТА / CONT19 relay15:20, BLOCK20.
Вердикт: MIXED:519 source GO;531 residual NO-GO.
Причина/действие: 519ownership cfbb6886 acceptedsource.531 beacon gets rawmessage from stasisSnoopIngressSpike1165–1173 after directconsolealreadyredacted; diagnosticsBeacon57–65/81–85 logs/postsrawbody.2135 fixes beaconboundary and addspermanenttest. Hostactivation remains separatefromsourceGO.
Report header: VERDICT=NO-GO; metadata {"commit": "4c322c4606a1695fc896ecd6313842d55679b472", "base": "4c322c4606a1695fc896ecd6313842d55679b472", "fix_commit": "none", "branch": "agent/2124-gateway-owned-artifacts-review-20260906", "root": "/private/tmp/nc-block19-2124-review"}.
KNOWN ISSUES / ТРАБЛШУТИНГ
Симптом: authorGO не заменяет independentacceptance/посадку; reviewNO-GO может быть missinghostinput или отдельный testcontract. Проверка: исходныйreport Provenance/3groups/rawresults, metadata above и current ledger46.json. Лечение: 519ownership cfbb6886 acceptedsource.531 beacon gets rawmessage from stasisSnoopIngressSpike1165–1173 after directconsolealreadyredacted; diagnosticsBeacon57–65/81–85 logs/postsrawbody.2135 fixes beaconboundary and addspermanenttest. Hostactivation remains separatefromsourceGO.
Source reviewed M1 /private/tmp/nc-block19-parent на4c322c4606a1695fc896ecd6313842d55679b472; h83683d48reportedWEB515:2425, objectnotlocal. Candidate/rawarchivebytes report-attested, parenttests notexecuted. КАРТА ДОКУМЕНТОВ: M1 /Users/poolpooly/audit/evidence/block20/intake-originals/CONT19-RELAY-3/BLOCK19-GATEWAY-OWNED-ARTIFACTS-AND-DIAGNOSTICS-REVIEW-REPORT.md
SHA256 6ad06183b6e4b6938333a841b65a2aee840ce8b946067081b84507ecb46f2f21
M1 /Users/poolpooly/audit/reports/block20-checkpoint.md
M1 /Users/poolpooly/audit/evidence/block20/adjudications.json
M1 /Users/poolpooly/audit/evidence/block20/fanout-jobs.json
Boardstatus/чужиеполяне менялись; числоваяCVSS не повышалась поmissinginput. 2026-09-06T21:37:37.023Z · astra-securityblock22-wave-2147-web-519 — 2026-09-06T21:37:37.022689+00:00 / IST=2026-09-07T03:07:37.022696+05:30
ДЛЯ ТИКЕТА / BLOCK22 release closure. Open WEB519: accepted cleanup cfbb6886/a36b3c11 is distinct from actual gateway host version.
Бриф /Users/poolpooly/audit/outbox/2147-gateway-owned-artifacts-post-l113j-closure-brief.md; SHA256 2d4918510731cda210f2cb72deafc972113b741dbaea68cc0623086625ae0422. MODEL=gpt-5.6-sol, A2 cap11, M4 cap3 без автоматического переноса. WAITING_RELEASE_l113j: не запускать до полного deployed-SHA/artifact/backend receipt. Сейчас reportedprod i18f130938b8d2a8f4376811651ad21beb4e28838; M1 source checkout толькоh.
Три группы: exactrelease/source mapping; live: Obtain fresh coordinator receipt of active gateway entrypoint/hash, call-owned staging roots and service identity. Metadata only; do not execute cleanup or list real call filenames/content.; companion: On exact host-file companion snapshot, exercise only own temporary normal files: preserve unrelated artifacts, delete only call-owned files, repeated cleanup harmless. Missing host snapshot keeps HOST_UNVERIFIED.
KNOWN ISSUES: sent≠running, code/authorGO≠liveclosure. При отсутствующем fix в j — NOT_DEPLOYED. Никаких paid/provider effects, реальных удалений/отказов сервиса. Existing2455/2450/2460/2462/2458 и старые работы не дублируются. Историческиеanchors infra/sip/gateway/callArtifactOwnership.js:115–157; infra/sip/gateway/index.js:2140–2141. Fullreport future /home/ubuntu/waves/BLOCK22-GATEWAY-OWNED-ARTIFACTS-POST-L113J-CLOSURE-REPORT.md. Evidence M1 /Users/poolpooly/audit/evidence/block22/fanout-jobs.json; checkpoint /Users/poolpooly/audit/reports/block22-checkpoint.md. Статус тикета не менялся.
2026-09-06T23:52:21.511Z · astra-securityblock22-relay9-adjudication-web-519 — 2026-09-06T23:52:21.511071+00:00 / IST=2026-09-07T05:22:21.511088+05:30
BLOCK22 RELAY-9: вердикты по доставленному пакету. l113j 46393080 source bundle проверен локально; runtime и live — по расписке. Численные тесты ниже выполнены авторами доставленных отчётов, родитель их не перезапускал.
ACCBLOCK20BEACONR2-REPORT.md — повтор ранее полученных байтов, не новая приёмка.
Вердикт: NO-GO independent; superseded by R3 GO
Commit/base: ec6c98b8500be5ade78eb3418318115f1c112ad2 / 4c322c4606a1695fc896ecd6313842d55679b472
Доказательства: base RED 4/4; r1 RED 4/4; candidate green expectation failed 2 pass/2 fail; focused gateway and WEB-519 suites 29/29; node --check exit 0; scoped ESLint exit 0 with existing warnings; scoped tsc exit 0; diff-check exit 0
Anchors: infra/sip/gateway/telephonyRedaction.js:99; infra/sip/gateway/diagnosticsBeacon.js:92; infra/sip/gateway/stasisSnoopIngressSpike.js
KNOWN ISSUES / ТРАБЛШУТИНГ: R2 still leaked Authorization Bearer tokens and compound serviceCredentials into collectors. Host parity was not checked.
Действие: Consume R3/2460 acceptance and do not keep R2 as current blocker.
Report: /Users/poolpooly/audit/evidence/block22-relay9/intake-originals/m4/ACCBLOCK20BEACONR2-REPORT.md
SHA256: 84032c100974760c7130e7d71b32e41adbf539c9d3c28b4852807d0d1433c13f
ACCBLOCK20BEACONR3-REPORT.md — повтор ранее полученных байтов, не новая приёмка.
Вердикт: GO independent source acceptance; no host activation proof
Commit/base: 2898c34ede09e9166dcefea1b4e130e3184a5607 / 4c322c4606a1695fc896ecd6313842d55679b472
Доказательства: new R3 verifier 4/4; previous verifier on candidate 4/4; base/r1/r2 RED controls; focused node:test 33/33; node --check exit 0; scoped ESLint exit 0 with existing warnings only; scoped tsc exit 0; diff-check exit 0
Anchors: infra/sip/gateway/telephonyRedaction.js:26; infra/sip/gateway/diagnosticsBeacon.js:62; infra/sip/gateway/stasisSnoopIngressSpike.js:1155
KNOWN ISSUES / ТРАБЛШУТИНГ: Accepted source candidate only. Host parity, deployment, copy/restart, and live traffic were not checked.
Действие: Land/integrate exact 2898c34e through existing accepted-chain and host-preserving activation workflow; do not issue a new beacon fix brief.
Report: /Users/poolpooly/audit/evidence/block22-relay9/intake-originals/m4/ACCBLOCK20BEACONR3-REPORT.md
SHA256: 910e0c210cc8a2934b154c48a45871fe4b79c6785b0ca91eca068f417516002c
BLOCK20BEACONR3-REPORT.md — повтор ранее полученных байтов, не новая приёмка.
Вердикт: GO author, confirmed by ACC R3 source acceptance
Commit/base: 2898c34ede09e9166dcefea1b4e130e3184a5607 / 4c322c4606a1695fc896ecd6313842d55679b472
Доказательства: author verifier 4/4 with stasis=false beaconLog=false post=false; focused node:test 33/33; node --check exit 0; scoped ESLint exit 0; diff-check exit 0; bundle verify exit 0
Anchors: infra/sip/gateway/telephonyRedaction.js; infra/sip/gateway/diagnosticsBeacon.js; infra/sip/gateway/__tests__/telephonyRedaction.test.js; infra/sip/gateway/__tests__/sec014RawSinkGuard.test.js
KNOWN ISSUES / ТРАБЛШУТИНГ: No host parity/prod activation; this is a source candidate confirmed later by ACC R3.
Действие: Use ACC R3 as the adjudicating acceptance and keep remaining host sync in existing lane.
Report: /Users/poolpooly/audit/evidence/block22-relay9/intake-originals/m4/BLOCK20BEACONR3-REPORT.md
SHA256: 58e24e0bc5cbb3b66e6ebc48ce46ab4efaf34d8855be67793205e7b2085cab5a
ДЛЯ ТИКЕТА: workflow review сохранён; Earlier accepted call ownership source inherited; renderer 28467587 → 8e04c643 present in j. Neither establishes active gateway parity.
Ожидает: No new candidate claimed for this row; post-j closure still pending.
Closure 2147: DISPATCHED_M4; completion unverified.
Open WEB519: accepted cleanup cfbb6886/a36b3c11 is distinct from actual gateway host version.
КАРТА ДОКУМЕНТОВ: /Users/poolpooly/audit/reports/block22-relay9-update.md; /Users/poolpooly/audit/evidence/block22/ledger46.json; /Users/poolpooly/audit/evidence/block22-relay9/adjudications.json. Новые брифы 2497/2498 — ROUTING: A2; существующие coordinator waves не дублируются. Правила обогащения: WEB-449.
2026-09-07T06:09:41.056Z · coordinator[07.09 06:09Z координатор] СИП / звонок владельца 05:17Z («приветствие, потом кладут трубку»): волна 2528 LIVELANEDISCLOSURE (A1, sol) = FIX_READY_OFFLINE, коммит e12d2e1a «fix(sip): acknowledge live disclosure playback» над d00b8f35. Два дефекта: (1) session-start вычислял fail-closed outcome для ещё НЕ проигранного disclosure и писал hangup_or_route_human/disclosure_not_delivered уже при создании сессии; (2) Stasis ARI playback ждал только websocket-событие PlaybackFinished — потеря события превращала успешный старт в playback_resume_timeout. Теперь начальное состояние wait_for_disclosure, доставка подтверждается фактическим концом ARI playback или AudioSocket turn-end. Причинность именно для 05:17 не доказана (в срезе нет gateway JSONL с call.final) → после посадки обязателен контрольный live-звонок. Дальше: приёмка 2539 (A2) → посадка в l113n + host-sync gateway (координатор, окно) → контрольный звонок владельца.
2026-09-07T06:42:35.835Z · coordinator[07.09 06:42Z координатор] ПРИЁМКА 2539 ACCLIVELANEDISCLOSURE (claude-opus, 06:16–07:00Z) фикса 2528 = GO (4 задокументированных остаточных риска, ни один не блокирует): cherry-pick на l113l чист → 4edc09d1 (9 файлов, +435/−17), строки дефектов в прод-базе подтверждены лично (sessionStart.ts + stasisSnoopIngressSpike.js). Дальше: sessionStart → l113n; gateway-часть — host-sync координатором в окне (⛔ волны); затем контрольный звонок владельца на 8000.
2026-09-07T07:17:45.668Z · coordinator[07.09 07:17Z координатор] КАНДИДАТ l113n (2554 L113NPREP, sol, 07:15Z): VERDICT=GO, commit 44d8af68 над ПРОД l113m 8f4ba1d9 (bundle sha 4d8f6691…): BLOCK19UNLANDEDR2 (Slack signed ingress 88afe3ca, push completion 83de1a1d WEB-549, account-delete 85768ecb WEB-551), BATTERYFAILS3 41aea00b (WEB-99), LIVELANEDISCLOSURE 8c8a7bcf (WEB-463/519 app-часть), regen manifest. Сборка на A2 запущена 07:40Z → посадка ~08:30Z.
2026-09-07T07:37:06.235Z · coordinator[07.09 07:37Z координатор] СИП gateway host-sync v5 (волна 2556, A1, sol xhigh, 07:36Z): VERDICT=GO KIT_READY_OFFLINE — кит /home/ubuntu/waves/gwsync-v5/ (apply.sh с бэкапом, rollback.sh, runtime-proof.sh 60 с, RUNBOOK, patched/ + diffs/, LIVE-DIFF-MANIFEST). Живой gateway — не дерево одного коммита: 18/59 файлов = d00b8f35, 24 с host-only дельтой, 17 только live, 9 только в репо; фикс e12d2e1a reconcile-нут поверх живой копии. Применение — координатором в окне без звонков ПОСЛЕ посадки app-части (l113n, sessionStart.ts) + proof + контрольный звонок владельца на 8000.
2026-09-07T07:38:24.342Z · astra-securityBLOCK22-RELAY13-WEB-519 — 2026-09-07T07:38:24.342174+00:00 / IST=2026-09-07T13:08:24.342187+05:30
SEC-003 / WEB-519: NO_GO_FULL_CLOSURE_UNVERIFIED. Workflow review сохранён. Текущий m 8f4ba1d92cc15a8b64144674e35cce71fdfba43a подтверждён распиской; родитель не выполнял live.
Полный closure GO не установлен. NO-GO из-за недостающих входов не объявляется новым продуктовым дефектом. Исторический source/companion PASS сохраняется в исходном отчёте.
KNOWN ISSUES / ТРАБЛШУТИНГ
- mandatory active-gateway receipt missing
- gateway host snapshot differs from app release and lacks full native module proof
- direct release tar byte proof absent
ДЛЯ ТИКЕТА
No new r3 wave: outside explicitly listed blockers; retain NO-GO/evidence gap for coordinator.
No additional release candidate asserted by this delta.
Полный ledger и parent adjudication: ~/audit/evidence/block22-relay13/ledger46.json; ~/audit/reports/block22-relay13-r3-plan.md.
Reports:
/Users/poolpooly/audit/evidence/block22-relay13/intake-originals/CONT19-RELAY-12/a1/BLOCK22-GATEWAY-OWNED-ARTIFACTS-POST-L113J-CLOSURE-REPORT.md
2026-09-07T07:48:45.213Z · coordinator[07.09 07:48Z координатор] ПОСАЖЕНО: ПРОД = l113n (44d8af68) с 07:47:36Z 07.09 (флип 07:46:41–07:47:36Z rolling). Над l113m: 88afe3ca Slack signed ingress (SEC-027/WEB-544), 83de1a1d push completion (WEB-549), 85768ecb account-delete completion (WEB-551) — три «принятых, но не посаженных» фикса блока 19 (аудит 2541 → r2 2549, ACC 2545); 41aea00b фиксы батареи ролей (WEB-99: окно T-365 по UTC-полуночи, C4-CROSS; ACC 2544 GO); 8c8a7bcf сип disclosure app-часть (WEB-463/519; ACC 2539 GO). Артефакт 37f136cf…, attestation fable-a2-l113n, активация подписана владельцем, миграций нет (190/190). Verify: ready/paid enforce_ready на обоих бэкендах, edge ×8 = 200, корни ×3 = 200, /login 200, вебхук 401, AttestationError/nginx/LEASE_LOST = 0, Telegram pending 0. hetzbk + env-pack + Pi → l113n-44d8af68. Откат = l113m. Расписка L113N-RELEASE-RECEIPT.md (A1/A2/M4 queue + inputs/release). Далее: gateway host-sync v5 (кит 2556) + контрольный звонок; post-QA 2572; батарея r44.
2026-09-07T07:55:58.059Z · coordinator[07.09 07:55Z координатор] GATEWAY HOST-SYNC v5 ПРИМЕНЁН (координатор, 07:54:12Z, окно без звонков, 0 каналов): патченные stasisSnoopIngressSpike.js + audiosocketTransport.js из кита 2556 положены в живой каталог gateway (sha = PATCHED-SHA256SUMS), ag-sip-native перезапущен: readiness 4080 = 200, audiosocket 4084 = 200 через 24 с, ARI connected, 0 ошибок/LEASE_LOST в свежих логах за 60 с. Бэкап живых файлов: /var/backups/ag-sip-native/20260907T075224Z-gateway-v5 (rollback.sh кита). App-часть (sessionStart wait_for_disclosure) — в l113n с 07:47Z. Ждём контрольный звонок владельца на 8000.
KNOWN ISSUES кита gwsync-v5 (для следующих версий): (1) apply.sh: node --check на staged-файле с суффиксом .$$ падает ERR_UNKNOWN_FILE_EXTENSION → staging-имя должно кончаться на .js; (2) apply.sh проверяет живость gateway PID «на секунде 1» после systemctl restart — супервизор поднимает Asterisk+gateway ~20 с → ложный STOP и авто-rollback (07:52Z стек на 1 мин был без gateway/audiosocket); нужно ждать новый PID-файл/readiness до 90 с; (3) runtime-proof.sh grep-ит ВЕСЬ gateway.out — старые LEASE_LOST от флипов дают ложный STOP; нужен offset от момента рестарта; (4) SHA256SUMS кита включает сами скрипты — любая правка координатора требует пересчёта. Применение сделано вручную по шагам кита после этих находок.
2026-09-07T08:03:17.152Z · coordinator[07.09 08:03Z координатор] КОНТРОЛЬНЫЕ ЗВОНКИ ВЛАДЕЛЬЦА 07:57:23Z и 07:57:57Z на 8000 (после l113n + gateway v5): по-прежнему сброс после приветствия, но ПРИЧИНА СМЕНИЛАСЬ. Consent-часть исправлена и работает: app лог wait_for_disclosure → disclosure playback started → «disclosure delivered» (раньше здесь был hangup_or_route_human). Теперь gateway: `deferred_rejected label=responseDeferred message=Error committing input audio buffer: buffer too small (0.00ms)` → hang-report stasis-snoop-deferred-rejected → `final status=gateway_error` → трубка. Т.е. resume отложенного ответа после disclosure коммитит пустой input-буфер в OpenAI realtime (providerAppendCount=0) и ошибка провайдера считается фатальной. Фикс-волна 2573 SIPGATEWAYEMPTYCOMMIT (A1, sol xhigh) → кит gwsync-v6 → применю → снова звонок. KNOWN ISSUES: симптом «приветствие → гудки» → проверка `grep deferred_rejected /tmp/ag-asterisk-logs/gateway.out` → причина: commit пустого буфера при resume → лечение: v6.
2026-09-07T08:06:47.248Z · astra-securityBLOCK22-RELAY13-N-WEB-519 — 2026-09-07T08:06:47.247975+00:00 / IST=2026-09-07T13:36:47.248174+05:30
l113n44d8af687a9e78816b6f747b81a13402abda98bf deployed07:47:36Z по расписке; scope closure NO_GO_FULL_CLOSURE_UNVERIFIED сохранён, workflow не менялся.
disclosure app8c8a7bcf DEPLOYED n; gateway gwsync-v5 applied07:54Z user/addendum-attested
KNOWN ISSUES
Host v5 installation is distinct from cleanup ownership, sanitized diagnostics, native/reader paths; exact active host hashes and scoped acceptance remain
Ancestry/replay attestation ≠ runtime member verification; ready/deployment ≠ scoped GO.
ДЛЯ ТИКЕТА
A1 actual LIVE-WINDOW-AUTH-l113n до10:30Z с QA lease;2568 отдельно HOLD2570 independent GO+landing. No new wave.
Evidence: ~/audit/evidence/block22-relay13-n/intake/L113N-RELEASE-RECEIPT.md + L113N-TICKET-SHA-ADDENDUM.md; remaining matrix ~/audit/reports/block22-relay13-n-update.md.
2026-09-07T08:36:08.077Z · coordinator[07.09 08:36Z координатор] GATEWAY v6 ПРИМЕНЁН (координатор, 08:34:35Z, окно без звонков, 0 каналов): фикс 2573 «ignore empty realtime audio commits» (edbb54d2; файлы stasisSnoopIngressSpike.js, audiosocketTransport.js, liveTransport/openaiRealtimeWsBridge.js) поверх живой v5-копии; бэкап /var/backups/ag-sip-native/20260907T083434Z-gateway-v6; после restart readiness 4080 + audiosocket 4084 = 200 за 6 с, ARI connected, 60 с журнала без gateway_error/buffer too small/LEASE_LOST. Ждём контрольный звонок владельца. Причинность обоих звонков 07:57/07:58 доказана в SIPGATEWAYEMPTYCOMMIT-REPORT.md (таблица consent→playback→deferred_rejected 0.00ms→gateway_error).
2026-09-07T08:40:23.403Z · coordinator[07.09 08:40Z координатор] КОНТРОЛЬНЫЕ ЗВОНКИ 08:36Z/08:38Z (после gateway v6): всё ещё сброс после приветствия. Лог: consent delivered ✔, `empty_input_audio_commit_nonfatal … action=recover` ✔ (v6 работает), затем без причины `call_summary frames_above_threshold=63–72 providerAppendCount=0 candidateFrames=0` → `final status=gateway_error`. Третий слой: после recover gateway не переходит в прослушивание (речь абонента есть, в провайдер не аппендится) и молча финализирует звонок. Фикс-волна 2584 SIPGATEWAYRECOVERFINAL (A1) → кит v7. KNOWN ISSUES: симптом тот же → проверка gateway.out: recover есть, но между recover и final нет reason → причина: пустой turn = fatal + ingest заблокирован greeting-состоянием → лечение: v7 (LISTEN после disclosure, reason у каждого finalizeCall).
2026-09-07T09:38:40.060Z · coordinator[07.09 09:38Z координатор] GATEWAY v7 ПРИМЕНЁН (координатор, 09:37:06Z, 0 каналов): фикс 2584 c0e3b233 (третий слой — после recover переход в LISTEN, пустой turn не финализирует, reason у каждого finalizeCall) поверх v6; один файл stasisSnoopIngressSpike.js; бэкап /var/backups/ag-sip-native/20260907T093706Z-gateway-v7; readiness 4080 + audiosocket 4084 = 200 за 6 с, ARI connected, 60 с без fatal-сигнатур. Ждём контрольный звонок владельца. Отчёт A1 SIPGATEWAYRECOVERFINAL-REPORT.md (таблица причинности обоих звонков 08:36/08:38).
2026-09-07T11:40:33.776Z · ЭВОЛЮЦИЯ ЗА 12 Ч (гигиена 2609, 11:25Z 07.09)
ХРОНОЛОГИЯ КРУГОВ
- волна 2147 → `46393080dd885f6ff25967f18639075564e12737`, `d00b8f35f1699d9372616f6230c51f1e2b73c0d1`, `a36b3c1125abd462465c3ed7b9b509a26c1f7d04` → VERDICT=NO-GO — SEC-003 / WEB-519: l113j application release/source mapping is proven; `cfbb6886…` is deployed lineage and `a36b3c11…` is its byte-equivalent accepted candidate. Exact l113j/l113k source tests pass 7/7, and the supplied host snapshot's native token-boundary companion removes 3 owned files, preserves 4 unrelated files, and is harmless on repeat. Overall `NO-GO` remains because the mandatory fresh active-gateway receipt is absent and the host snapshot's active mode/version is `HOST_UNVERIFIED`; its non-native branch… Источник: `A1 waves/BLOCK22-GATEWAY-OWNED-ARTIFACTS-POST-L113J-CLOSURE-REPORT.md`.
- волна 2193 → `46393080dd885f6ff25967f18639075564e12737`, `18f130938b8d2a8f4376811651ad21beb4e28838`, `83683d4818ecc9b91e151be9e27a9ef0d6015294` → VERDICT=NO-GO — `SEC-003 / WEB-519 — NO-GO for deployed closure; release identity present, deployed mapping and host behavior unverified.` Источник: `M4 waves/BLOCK22-GATEWAY-OWNED-ARTIFACTS-POST-L113J-CLOSURE-REPORT.md`.
- Линии посадки: l113j 22:56Z → l113k 00:41Z → l113l 05:30Z → l113m 06:33Z → l113n 07:48Z → l113o 09:35Z → l113p 10:21:43Z. Текущий PROD: l113p `1c850d92876757812eab9ffa7f381bcea95aad86`; общий verify — green по release receipt.
ДЛЯ НУЛЕВОГО АГЕНТА
- Текущий статус `review`; PROD=l113p `1c850d92876757812eab9ffa7f381bcea95aad86`. Проверенные SHA: `46393080dd885f6ff25967f18639075564e12737`=предок; `d00b8f35f1699d9372616f6230c51f1e2b73c0d1`=предок; `a36b3c1125abd462465c3ed7b9b509a26c1f7d04`=объект не предъявлен; `18f130938b8d2a8f4376811651ad21beb4e28838`=предок. Непринятые/непосаженные кандидаты не считаются продом.
- Следующий шаг / владелец: Следовать последнему report disposition; done допустим только после exact landing + independent GO + post-QA/code-only n/a.
KNOWN ISSUES / ТРАБЛШУТИНГ
- Дельта без домысла: SEC-003 / WEB-519: l113j application release/source mapping is proven; `cfbb6886…` is deployed lineage and `a36b3c11…` is its byte-equivalent accepted candidate. Exact l113j/l113k source tests pass 7/7, and the supplied host snapshot's native token-boundary companion removes 3 owned files, preserves 4 unrelated files, and is harmless on repeat. Overall `NO-GO` remains because the mandatory fresh active-gateway receipt is absent and the host snapshot's active mode/version is `HOST_UNVERIFIED`; its non-native branch… `SEC-003 / WEB-519 — NO-GO for deployed closure; release identity present, deployed mapping and host behavior unverifi… Проверка/причина привязаны к отчётам выше; anchors: `infra/sip/gateway/callArtifactOwnership.js:56-103`, `infra/sip/gateway/index.js:435-452`, `infra/sip/gateway/callArtifactOwnership.js:115-157`, `infra/sip/gateway/index.js:2183`. Лечение — только указанное в report disposition; отсутствующий live/receipt не объявляется продуктовой регрессией.
СВЯЗИ / ИСТОЧНИКИ
- Release: `M4 waves/L113P-RELEASE-RECEIPT.md`; координаторский срез: `M4 waves/OPS-STATUS-HEAD-1120.md`; точные отчёты перечислены в хронологии/KNOWN ISSUES.
- Если сегодняшняя карточка уже содержит более ранний coordinator-комментарий с тем же фактом, эта запись является только дельтой 2609 и не отменяет тот trail.
2026-09-08T04:37:40.362Z · coordinator[08.09 04:37Z координатор] ИТОГ ПО БЛОКУ 46 ТИКЕТОВ БЕЗОПАСНОСТИ: все имеют disposition.
СЧЁТ: закрыто с доказательством 38, ждёт посадки следующей линии 8, не начато 0, всего 46.
КАК НАБИРАЛИСЬ 38:
- 18 на момент составления реестра SEC-CLOSURE-LEDGER-20260908.md (волна 2697);
- +14 волной 2700 по группе WEB-521, 524, 526, 530, 543, 545, 549, 551, 552, 553, 554, 555, 559, 560 (GO 7, GO_SCOPED 7);
- +4 волной 2706: WEB-557 (GO), WEB-537, WEB-539, WEB-540 (GO_SCOPED);
- +2 волной 2724: WEB-519 и WEB-531, оба GO_SCOPED, формулировка приёмки «в заявленной scoped-границе не осталось ничего».
ЧТО СДВИНУЛО ДЕЛО. Волны месяцами упирались в одно: они не имеют доступа к /home/ubuntu/prod и не могут доказать, что фикс реально попал в живую сборку. Без этого доказательства тикет висит в NO-GO сколько угодно кругов. Разблокировала не новая работа, а координаторская расписка со ПОЛНЫМ списком членов сборки: COORDINATOR-RUNTIME-RECEIPT-l113q-20260908.md, sha256 d802453ab8a6954ceae493b07e6c63e2a3ceeadcea3e1f9b66200efa280dd87a, 3238 позиций, не обрезана. После её выдачи 14 тикетов закрылись за ОДИН круг без единой строки нового продуктового кода.
Отдельно отмечу: прежняя расписка l113p v1 была обрезана на 400 строках, из-за чего волна 2648 не нашла нужный маршрут и закрыла WEB-562 неверно. Класс ошибки закрыт.
ВОСЕМЬ, ЖДУЩИХ ПОСАДКИ: WEB-520, 522, 528, 533, 536, 542, 546, 547.
- WEB-522 и WEB-546 оказались ОДНИМ И ТЕМ ЖЕ фиксом, доехавшим двумя путями: одинаковый subject «fix(ingest): guard lazy transaction promises», один автор acc@local, одна метка времени 2026-09-07 10:11:52Z, различались только родители. Сведены в fe469fb247060176580323e2e2e1344954f148e9, вердикт GO. Прежний план требовал разрешать их порознь — это была бы работа над пустотой.
- WEB-528 0773fa1c52 и WEB-533 076e98666f ложатся на живой прод ЧИСТО, проверено пробой cherry-pick на точном коммите ec0ce4660.
- WEB-542 1d87f676: объекта нет ни в одной базе и ни в одном из 312 просмотренных бандлов. Нужен исходный бандл либо явное решение переоформить тикет на эквиваленты 0417f78b1 (CAS) и 0fc7f460c (write budget), чей ancestry в линии есть.
- WEB-547: дрейф деплоя на хосте, закрывается применением конфигурации, а не посадкой кода.
- WEB-520: решение о переоткрытии, вопрос политики.
НАЙДЕНО И ЗАКРЫТО ПО ХОДУ — УТЕЧКА КЛЮЧА ARI.
Asterisk на уровне debug писал в журнал строку «http.c: HTTP Request URI is /ari/events?app=…&api_key=…». Файл /tmp/ag-asterisk-logs/full имел права 644, каталог 755; проверено фактически — пользователь wave мог его читать. Ключ лежал на диске в общедоступном файле. Наш шлюз свои журналы редактирует (в gateway.out и console.out неотредактированных данных ноль), а Asterisk свой — нет.
Источник локализован точно: в logger.conf уровень debug включён ТОЛЬКО у файла full (console => notice,warning,error; messages => notice,warning,error,verbose; full => notice,warning,error,debug,verbose,dtmf).
Уровень debug намеренно НЕ снят — он нужен для расследования жалобы владельца на захлёбывание звука. Вместо этого добавлен постоянный drop-in /etc/systemd/system/ag-sip-native.service.d/60-logdir-mode.conf с ExecStartPost, закрывающим каталог до 750 и файлы до 640 при каждом старте службы, включая перезагрузку хоста.
ПРОВЕРЕНО ИСПЫТАНИЕМ: права намеренно возвращены в открытое состояние (755/644), служба перезапущена; после старта каталог снова 750, full 640, wave читать не может, ag-sip-native active, asterisk работает, шлюз поднялся (ari_connected, Greeting pre-warmed).
Ротация ключа вынесена владельцу, решение не получено. НЕ считать выполненной.
ВНЕ ГРАНИЦЫ, намеренно не закрыто (формулировка приёмки сохраняется): ротацию ключа даёт владелец; полную приёмку четырёх файлов шлюза как единого принятого состава даёт release owner — текущее отображение доказывает, ЧТО работает на проде, и не претендует доказывать, что весь состав прошёл приёмку; дрейф прав stasisSnoopIngressSpike.js (wave:wave 640 при соседях ubuntu:ubuntu 664) — операторская задача.
KNOWN ISSUES / ТРАБЛШУТИНГ
Симптом: тикет безопасности висит в NO-GO или WAITING_INPUT круг за кругом.
Проверка: прочитать в отчёте строку «осталось и от кого» — там обычно назван вход, а не дефект.
Причина: волна не имеет доступа к прод-сборке и не может доказать runtime-факт.
Лечение: выдать полную расписку членов живой сборки (sha256 + путь по каждому файлу .next/server, server.js, package.json), без усечения, на все рабочие хосты с одинаковым отпечатком; в брифе явно указать, что список полный.
Вторая ловушка: тонкий git bundle. Приёмочный хост обязан ИМЕТЬ объекты базы и кандидата до отправки брифа, иначе получите ложный NO-GO. Проверять git cat-file -e на хосте приёмщика.
2026-09-08T21:01:08.124Z · Исправительный круг закончен, VERDICT=GO (волна 2982, коммит cdc150eb0 «fix(sip): WEB-519 clean FastAGI artifacts by call ownership again»). Первая независимая проверка (2973) дала NO-GO — причина названа и закрыта: очистка звуковых артефактов FastAGI теперь проверяет принадлежность звонку ПЕРЕД удалением, негативный тест доказывает, что артефакт чужого звонка не удаляется. Собрано в линию l113y, ждёт посадки. ВНИМАНИЕ ПРИ ПОСАДКЕ: правка конфликтует с фиксом barge-in WEB-463 в infra/sip/gateway/telephonyRedaction.js — сведение идёт волной 2995, шлюз сажать ТОЛЬКО после неё.
2026-09-09T05:21:51.174Z · coordinator[09.09 05:21Z координатор] ПРИЁМКА SEC-003 НА ВЕРШИНЕ БОЕВОЙ ЛИНИИ: VERDICT=GO. Волна 3170, отчёт /home/ubuntu/waves/ACCSEC003ROUND2-REPORT.md, база 8780147cc90991b63638ba9b72cdf4e3d62387fb (l114g, посажена 09.09 04:06Z). Приёмка шла на Claude opus, не на OpenAI-модели.
Дословный вывод приёмки: «Находка WEB-519 закрыта на вершине. Решение "можно ли удалить этот файл" принимается по реестру владения, который звонок наполняет в момент выдачи пути, а не по совпадению подстроки в имени. Это подтверждено поведенчески, с A/B-контролем.»
То есть исходная находка — очистка аудио проверяла подстроку вместо владения вызовом — закрыта не декларацией, а поведением: реестр владения наполняется звонком в момент выдачи пути.
Тикет переведён в done: фикс уже на проде в составе линии l114g, приёмка это подтвердила на живой вершине.
ЗАМЕТКА ПО ПРОЦЕССУ, стоила одного круга. Первый запуск этой приёмки (волна 3164) умер за три минуты по двум причинам сразу: в брифе стояло `MODEL=claude-opus`, а CLI на A2 ждёт полное имя `claude-opus-5`; и на A2 протухла сессия Клода (`Failed to authenticate: OAuth session expired`). Сессия восстановлена с A1 по разрешённому владельцем порядку, обе машины проверены сразу после переноса. В диспетчере A2 расширен разбор псевдонимов моделей. Отдельно выяснилось, что на M4 Клода нет вообще — приёмки безопасности идут только на A1 и A2.
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-519","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-09-09T05:21:23.162Z