WEB-518 · Задача · — · web
SEC-002 [Hardening; CVSS pending] Tavily: платный origin отсутствует в общем egress-контроле
Закрыт
P1 · важно
ведёт: l111b a14181f77 (на проде 19:13Z)
эпик: WEB-515
Суть
Родитель: [[WEB-515]]. Правила обогащения: WEB-449.
Состояние: hardening review / Needs Independent Proof. Локальная инженерная проверка, не подтверждённая эксплуатация. Severity и CVSS 3.1 pending; P1 — приоритет инженерной проверки, не CVSS.
УСЛОВИЕ И ГРАНИЦА
При URL https://api.tavily.com/search классификатор paidVendorHosts возвращает false; vendorEgressGuard выбирает неприменение paid guard. webSearchProvider содержит прямой provider fetch. Поведение реального guard со stub transport проверяется в этом блоке. Списание/обход кошелька на пользовательском маршруте пока не доказаны.
База: l106-line 6930c6832744e273ccad495caba9b31329761650, /Users/poolpooly/audit/nc. Код/прод не менялись; fix commit отсутствует.
ПРИЁМКА
Безопасные unit/integration проверки на синтетических данных, red/green для целевого поведения, независимая Claude-проверка по outbox. Никаких вредных данных, exploit/payload/attack steps, реальных ключей, платных запросов, продовых учёток, SSH или живого шлюза. Влияние на runtime и CVSS устанавливаются отдельно, при недостатке данных — Needs Proof. Для high/critical fix обязательна независимая Claude-приёмка до передачи координатору.
КАРТА ДОКУМЕНТОВ
M1: /Users/poolpooly/audit/reports/2026-09-05-tavily-boundary-block2.md (отчёт этого блока; дополняется по мере завершения проверки).
M1: /Users/poolpooly/audit/evidence/block2/ — тесты и логи.
M1: /Users/poolpooly/Projects/nc-agent-ops/board/specs/SECURITY-FINDINGS-REGISTER.md; SECURITY-THREAT-MODEL.md.
KNOWN ISSUES / ТРАБЛШУТИНГ
Симптом и причина: условие выше. Проверка до 2 минут: целевой Node22-тест из отчёта. Лечение/статус: предложение фикса и независимая проверка, ничего не посажено. Новые результаты дописываются комментариями, исходная запись не переписывается.
## ДЛЯ НУЛЕВОГО АГЕНТА (обновлено 2026-09-05 UTC)
- **Суть одной строкой:** SEC-002 [Hardening; CVSS pending] Tavily: платный origin отсутствует в общем egress-контроле
- **Текущее состояние:** статус: done; База: l106-line 6930c6832744e273ccad495caba9b31329761650, /Users/poolpooly/audit/nc. Код/прод не менялись; fix commit отсутствует. | ПРИЁМКА | Безопасные unit/integration проверки на синтетических данных, red/green для целевого поведения, независимая Claude-проверка по outbox. Никаких вредных данных, exploit/payload/attack steps, реальных ключей, платных запросов, продовых учёток, SSH или живого шлюза. Влияние на runtime и CVSS устанавл… | M1: /Users/poolpooly/audit/reports/2026-09-05-tavily-boundary-block2.md (отчёт этого блока; дополняется по мере завершения проверки). | M1: /Users/poolpooly/Projects/nc-agent-ops/board/specs/SECURITY-FINDINGS-REGISTER.md; SECURITY-THREAT-MODEL.md. | Симптом и причина: условие выше. Проверка до 2 минут: целевой Node22-тест из отчёта. Лечение/статус: предложение фикса и независимая проверка, ничего не посажено. Новые результаты дописываются комментариями, исходная запись не переписывается. | Состояние: локальный hardening-вопрос о границе разобран; дочерняя задача остаётся Needs Independent Proof / Fix Proposal. Severity/CVSS3.1 pending, P1 — инженерный приоритет. Код/прод не менялись. | УСЛОВИЕ: paidVendorHosts.ts:2–27 не включает api.tavily.com; vendorEgressGuard.ts:625–636 пропускает его по unclassified ветке. provider map :830–849 также требует расширения. webSearchProvider.ts:58–81 вызывает provider напрямую.
- **Кто работал:**
- 2026-09-05T02:14:12.637Z — astra-security — [BLOCK2-SEC-002-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-002 [[WEB-518]], родитель [[WEB-515]]. Правила: WEB-449. Состояние: локальный hardening-вопрос о границе разобран; дочерняя задача
- 2026-09-05T08:30:59.637Z — coordinator — [05.09 08:30Z координатор] Волна 1901 TAVILY-SPEND-PROOF (+дельта 1903, Claude opus, A2) = GO по локальному контракту, рантайм-влияние INCONCLUSIVE (денежных потерь не заявлено). ПОДТВЕРЖДЕНО на 6930c683: api.tavily.com
- 2026-09-05T09:04:33.552Z — astra-security — BLOCK7-SEC002-FIX-IN-PROGRESS — 2026-09-05T09:04:33.154061+00:00 / IST 2026-09-05T14:34:33.154061+05:30 SEC-002 → fix-in-progress; поле доски переведено в поддерживаемый enum inprogress по прямому поручению CONT7. Уже на
- 2026-09-05T09:04:33.555Z — astra-security — BLOCK7-1974-THREE-REDS — 2026-09-05T09:04:33.154061+00:00 / IST 2026-09-05T14:34:33.154061+05:30 Три обязательных red-теста для приёмки 1974-tavilyfence Это спецификация regression oracle для существующей волны1974, не н
- 2026-09-05T13:30:41.956Z — coordinator — [05.09 13:30Z координатор] Приёмка ACCTAVILYFENCE (1988, M4): VERDICT=NO-GO — но только по базису: кандидат 282c21e6 сидит на l106 (6930c683), а бриф требовал l108, и переданный L108-line.bundle оказался без prerequisite
- 2026-09-05T19:19:03.777Z — fable-coordinator — [2026-09-05 19:13Z] НА ПРОДЕ: линия l111b (a14181f77ba69013c7183d56dd23980d7c176f39) посажена 19:13Z без простоя (flip по одному бэкенду через контроллер), платный гейт проверен на dry-run до flip и на обоих бэкендах пос
- **Ветки/бандлы/отчёты:** нет данных в тикете; sha: 6930c6832744e273ccad495caba9b31329761650, 6930c683, 282c21e6, 7b49e1a1, a14181f77ba69013c7183d56dd23980d7c176f39, a14181f7
- **KNOWN ISSUES / ТРАБЛШУТИНГ:**
- Состояние: hardening review / Needs Independent Proof. Локальная инженерная проверка, не подтверждённая эксплуатация. Severity и CVSS 3.1 pending; P1 — приоритет инженерной проверки, не CVSS.
- При URL https://api.tavily.com/search классификатор paidVendorHosts возвращает false; vendorEgressGuard выбирает неприменение paid guard. webSearchProvider содержит прямой provider fetch. Поведение реального guard со stub transport проверяется в этом блоке. Списание/обход кошелька на пользователь…
- База: l106-line 6930c6832744e273ccad495caba9b31329761650, /Users/poolpooly/audit/nc. Код/прод не менялись; fix commit отсутствует.
- Безопасные unit/integration проверки на синтетических данных, red/green для целевого поведения, независимая Claude-проверка по outbox. Никаких вредных данных, exploit/payload/attack steps, реальных ключей, платных запросов, продовых учёток, SSH или живого шлюза. Влияние на runtime и CVSS устанавл…
- M1: /Users/poolpooly/audit/reports/2026-09-05-tavily-boundary-block2.md (отчёт этого блока; дополняется по мере завершения проверки).
- KNOWN ISSUES / ТРАБЛШУТИНГ
- Симптом и причина: условие выше. Проверка до 2 минут: целевой Node22-тест из отчёта. Лечение/статус: предложение фикса и независимая проверка, ничего не посажено. Новые результаты дописываются комментариями, исходная запись не переписывается.
- Состояние: локальный hardening-вопрос о границе разобран; дочерняя задача остаётся Needs Independent Proof / Fix Proposal. Severity/CVSS3.1 pending, P1 — инженерный приоритет. Код/прод не менялись.
- **Эволюция:**
- 2026-09-05 → [BLOCK2-SEC-002-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security] ДЛЯ ТИКЕТА — SEC-002 [[WEB-518]], родитель [[WEB-515]]. Правила: WEB-449. Состояние: локальный hardening-вопрос о границе разобран; дочерняя задача остаётся Needs Independent Proof / Fix P
- 2026-09-05 → [05.09 08:30Z координатор] Волна 1901 TAVILY-SPEND-PROOF (+дельта 1903, Claude opus, A2) = GO по локальному контракту, рантайм-влияние INCONCLUSIVE (денежных потерь не заявлено). ПОДТВЕРЖДЕНО на 6930c683: api.tavily.com отсутствует в PAIDVENDORHOSTS (paidVendo
- 2026-09-05 → BLOCK7-SEC002-FIX-IN-PROGRESS — 2026-09-05T09:04:33.154061+00:00 / IST 2026-09-05T14:34:33.154061+05:30 SEC-002 → fix-in-progress; поле доски переведено в поддерживаемый enum inprogress по прямому поручению CONT7. Уже назначена координатором 1974-tavilyfence (
- 2026-09-05 → BLOCK7-1974-THREE-REDS — 2026-09-05T09:04:33.154061+00:00 / IST 2026-09-05T14:34:33.154061+05:30 Три обязательных red-теста для приёмки 1974-tavilyfence Это спецификация regression oracle для существующей волны1974, не новая волна и не сообщение о выполненных
- 2026-09-05 → [05.09 13:30Z координатор] Приёмка ACCTAVILYFENCE (1988, M4): VERDICT=NO-GO — но только по базису: кандидат 282c21e6 сидит на l106 (6930c683), а бриф требовал l108, и переданный L108-line.bundle оказался без prerequisite 7b49e1a1 (ошибка координатора при упако
- 2026-09-05 → [2026-09-05 19:13Z] НА ПРОДЕ: линия l111b (a14181f77ba69013c7183d56dd23980d7c176f39) посажена 19:13Z без простоя (flip по одному бэкенду через контроллер), платный гейт проверен на dry-run до flip и на обоих бэкендах после. Статус → done; пост-QA l111 (волна 2
- M1: /Users/poolpooly/audit/reports/2026-09-05-tavily-boundary-block2.md (отчёт этого блока; дополняется по мере завершения проверки).
- [BLOCK2-SEC-002-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security]
- КАРТА ДОКУМЕНТОВ (M1): /Users/poolpooly/audit/reports/2026-09-05-tavily-boundary-block2.md; /Users/poolpooly/audit/reports/2026-09-05-boundaries-block2.md; /Users/poolpooly/audit/evidence/block2/tavily/; /Users/poolpooly/audit/evidence/block2/parent-validation.json; /Users/poolpooly/Projects/nc-a…
- [05.09 08:30Z координатор] Волна 1901 TAVILY-SPEND-PROOF (+дельта 1903, Claude opus, A2) = GO по локальному контракту, рантайм-влияние INCONCLUSIVE (денежных потерь не заявлено). ПОДТВЕРЖДЕНО на 6930c683: api.tavily.com отсутствует в PAIDVENDORHOSTS (paidVendorHosts.ts:2-17) → страж egress в enfo…
- ДЛЯ ТИКЕТА: сели status и evidence delta; fix commit/acceptance/deploy ещё не подтверждены. Три обязательных regression oracle публикуются одним следующим комментарием. Реестр /Users/poolpooly/Projects/nc-agent-ops/board/specs/SECURITY-FINDINGS-REGISTER.md; отчёт /Users/poolpooly/audit/reports/20…
- [05.09 13:30Z координатор] Приёмка ACCTAVILYFENCE (1988, M4): VERDICT=NO-GO — но только по базису: кандидат 282c21e6 сидит на l106 (6930c683), а бриф требовал l108, и переданный L108-line.bundle оказался без prerequisite 7b49e1a1 (ошибка координатора при упаковке). Функционально по отчёту приёмщи…
- **Следующий шаг:** Безопасные unit/integration проверки на синтетических данных, red/green для целевого поведения, независимая Claude-проверка по outbox. Никаких вредных данных, exploit/payload/attack steps, реальных ключей, платных запросов, продовых учёток, SSH или живого шлюза. Влияние на runtime и CVSS устанавл… | Что осталось: независимая Claude-проверка по /Users/poolpooly/audit/outbox/1903-tavily-boundary-delta-brief.md — supplement1901, без дублирования волны. Брифы опубликованы в outbox; подхват координатором ещё не подтверждён, inbox пуст. Никаких вредных данных, exploit/payload/пошаговых атак; тольк…
Связи
- связан → WEB-515 — ЭПИК: АУДИТ БЕЗОПАСНОСТИ проекта (Codex gpt-6-astra как security lead) — карта поверхности, threat model, ASVS L2, реестр находок, фиксы с adversarial-приёмкой на Claude
Лента
2026-09-05T02:14:12.637Z · astra-security[BLOCK2-SEC-002-FINAL | 2026-09-05 02:14Z / 07:44 IST | astra-security]
ДЛЯ ТИКЕТА — SEC-002 [[WEB-518]], родитель [[WEB-515]]. Правила: WEB-449.
Состояние: локальный hardening-вопрос о границе разобран; дочерняя задача остаётся Needs Independent Proof / Fix Proposal. Severity/CVSS3.1 pending, P1 — инженерный приоритет. Код/прод не менялись.
УСЛОВИЕ: paidVendorHosts.ts:2–27 не включает api.tavily.com; vendorEgressGuard.ts:625–636 пропускает его по unclassified ветке. provider map :830–849 также требует расширения. webSearchProvider.ts:58–81 вызывает provider напрямую.
ПРИЧИНА С ДОКАЗАТЕЛЬСТВОМ: Actual guard в enforce: unauthorized OpenAI denied, authorized OpenAI dispatched, Tavily unclassified dispatched —3/3 exit0. runWebSearch со synthetic key/stub transport —1/1 exit0. Tavily deny invariant —0pass/1fail exit1. Prisma и нецелевые provider dependencies заменены; реального wallet/request flow и расходов нет.
ПРЕДЛОЖЕНИЕ ФИКСА: Registry + provider host map + common metered admission с identity/action keys, estimator/settlement. Host-only фикс может заблокировать search. У deep-research есть parent admission: вывода «вне всех paid controls» нет.
Что село: 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/1903-tavily-boundary-delta-brief.md — supplement1901, без дублирования волны. Брифы опубликованы в outbox; подхват координатором ещё не подтверждён, inbox пуст. Никаких вредных данных, exploit/payload/пошаговых атак; только benign fixture behavior + fix design.
КАРТА ДОКУМЕНТОВ (M1): /Users/poolpooly/audit/reports/2026-09-05-tavily-boundary-block2.md; /Users/poolpooly/audit/reports/2026-09-05-boundaries-block2.md; /Users/poolpooly/audit/evidence/block2/tavily/; /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-05T08:30:59.637Z · coordinator[05.09 08:30Z координатор] Волна 1901 TAVILY-SPEND-PROOF (+дельта 1903, Claude opus, A2) = GO по локальному контракту, рантайм-влияние INCONCLUSIVE (денежных потерь не заявлено). ПОДТВЕРЖДЕНО на 6930c683: api.tavily.com отсутствует в PAID_VENDOR_HOSTS (paidVendorHosts.ts:2-17) → страж egress в enforce пропускает запрос как неклассифицированный (vendorEgressGuard.ts:576-577,625-636), runTavilySearch вызывает fetch напрямую (webSearchProvider.ts:58-81; OpenAI-ветка :215 идёт через страж); тот же предикат отключает paid-fence factcheck-адаптера (factcheck/providers/utils.ts:69-72,183-185). Fixture-набор 15 тестов: 9 control зелёных, 6 red красных, два идентичных прогона. Фикс-волна 1974-tavilyfence (M4, luna): Tavily в PAID_VENDOR_HOSTS + guarded-транспорт с admission/reservation/settlement + paid-fence factcheck; red-набор 1901 → зелёный. Отчёт передан Астре (inbox).
2026-09-05T09:04:33.552Z · astra-securityBLOCK7-SEC002-FIX-IN-PROGRESS — 2026-09-05T09:04:33.154061+00:00 / IST 2026-09-05T14:34:33.154061+05:30
SEC-002 → fix-in-progress; поле доски переведено в поддерживаемый enum in_progress по прямому поручению CONT7. Уже назначена координатором 1974-tavilyfence (M4), см. комментарий1332; новой волны нет.
Принят входной отчёт1901(+1903): GO по локальному контракту, runtime INCONCLUSIVE. Worker сообщает15tests/9pass/6red дважды и repo control3/3. Семь source fingerprints совпали с локальной базой6930c6832744e273ccad495caba9b31329761650; worker TAP/fixture не доставлены на M1 и здесь не перезапускались.
Причина: src/lib/billing/paidVendorHosts.ts:2–17 не включает api.tavily.com; vendorEgressGuard.ts:576–577,625–636 пропускает unclassified transport; src/lib/ai/tools/webSearchProvider.ts:58–81 вызывает напрямую; src/lib/factcheck/providers/utils.ts:69–72,183–185 использует тот же classifier для paid-fence.
Эффект/риск: платный egress без admission/учёта → возможные неучтённые траты общего ключа. Утечка и фактические денежные потери не установлены. Предварительный **условный** CVSS3.1 **4.3**, вектор **CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:L** — только если расход общей квоты/бюджета ограниченно ухудшает доступность поиска/factcheck. AV:N/PR:L — сетевые app surfaces с обычной учёткой; AC:L/UI:N/S:U — сценарий штатного запроса и ресурсов того же приложения; C:N/I:N — нет доказательства disclosure/изменения данных. A:L пока не измерен. Для чистого финансового расхода без C/I/A final CVSS остаётся pending. Методика: https://www.first.org/cvss/v3-1/specification-document . Это не новый подтверждённый High/Critical.
KNOWN ISSUES / ТРАБЛШУТИНГ: symptom — denied admission при inert dispatch; проверка≤2мин — §1/4/7 отчёта /Users/poolpooly/audit/inbox/done/TAVILY-SPEND-PROOF-REPORT.md и /Users/poolpooly/audit/evidence/block7/source-fingerprint-check.json; причины выше; лечение1974 в работе. Host-only patch fail-shut из-за отсутствия provider binding (:818–844); нужен разрешённый Tavily control. Старый B4 заменить, а не сохранять как acceptance. Общийключ/план/фактические расходы не читались.
ДЛЯ ТИКЕТА: сели status и evidence delta; fix commit/acceptance/deploy ещё не подтверждены. Три обязательных regression oracle публикуются одним следующим комментарием. Реестр /Users/poolpooly/Projects/nc-agent-ops/board/specs/SECURITY-FINDINGS-REGISTER.md; отчёт /Users/poolpooly/audit/reports/2026-09-05-tavily-fix-handoff-block7.md. Остальные волны не запускались.
2026-09-05T09:04:33.555Z · astra-securityBLOCK7-1974-THREE-REDS — 2026-09-05T09:04:33.154061+00:00 / IST 2026-09-05T14:34:33.154061+05:30
## Три обязательных red-теста для приёмки 1974-tavilyfence
Это спецификация regression oracle для существующей волны1974, не новая волна и не сообщение о выполненных тестах. Только обычные синтетические входы, inert transport и fixture wallet/ledger; проверяются реальные admission/reservation/settlement helpers и оба Tavily call-site. Подмена gateway без проверки, что его действительно вызвал call-site, недостаточна.
1. **Denied admission → ноль отправок в обоих путях.** Параметризовать `runWebSearch` и `TavilyProvider.getEvidence`: кошелёк отказывает, reservation отсутствует/отклонена либо trusted identity отсутствует. Ожидать типизированный отказ, `transportCalls=0`, отсутствие результата `ok` и платного dispatch. Проверить enforcement paid-fence factcheck и передачу identity из travel/tool callers. Тест обязан стать красным, если исчезнет registry/fence/admission или хотя бы одна отправка произойдёт до разрешения. Старые B3/C1/E1 должны перейти в green; отдельно сохранить recognised-provider deny control.
2. **Разрешённый Tavily → одна отправка через связанную reservation.** Синтетическая допустимая reservation для Tavily, правильного user/tenant/action и `api.tavily.com` приводит ровно к одному transport call с той же identity и reservation fingerprint. Неверная связь provider/host/identity должна давать отказ до transport. Ожидать зарегистрированный estimator/цену, достижение metered gateway и provider-host binding. Тест становится красным как при прямом fetch без reservation, так и при host-only фиксе, который блокирует разрешённый поиск. Старый B4, проверявший невозможность авторизовать Tavily, **заменить** этим положительным контролем; не требовать сохранения старого fail-shut поведения.
3. **Каждая отправленная попытка учтена; replay не удваивает обязательство.** Параметризовать обычный ответ, пустой ответ с `primary=fallback=tavily`, повтор логической операции и timeout/abort после dispatch. Для каждого реально отправленного платного вызова есть ровно одно ненулевое учётное обязательство; повтор того же dispatch fingerprint не создаёт вторую reservation/двойное списание. Если fallback дедуплицирован до отправки — один вызов/одно обязательство; если отправлены два платных вызова — оба покрыты явными обязательствами. Для неопределённого исхода после dispatch оставить bounded reservation/консервативное settlement по принятому контракту, без автоматического бесплатного refund; не утверждать, что провайдер фактически списал деньги. Тест становится красным при нулевом/потерянном учёте, неучтённом fallback или двойном обязательстве из-за replay. До dispatch отказ не создаёт окончательного расхода.
Приёмка требует exact fix commit, команды/exit/TAP/число вызовов и reservations, red на исходной6930 и green на1974, сохранение действующих no-retry/deny controls. D2/D3 source assertions из1901 должны сопровождать behavior, а не заменять его. `VERDICT=GO` отчёта1901 не является приёмкой1974. Расширять этот пакет на Mistral/Cohere или deep research не требуется: это вне поручения блока7.
KNOWN ISSUES / ТРАБЛШУТИНГ: host-only изменение может блокировать разрешённый Tavily; B4 из отчёта1901 проверяет старый дефект. Метрики приёмки: transportCalls/reservations/accounting obligations и typed outcome на обоих call-site. Отчёт1901 в /Users/poolpooly/audit/inbox/done/TAVILY-SPEND-PROOF-REPORT.md; спецификация /Users/poolpooly/audit/evidence/block7/acceptance-three-tests.md.
ДЛЯ ТИКЕТА: ровно3 обязательные группы приёмки существующей1974; новых волн нет. Критерии сформулированы, тесты1974 здесь не запускались. Статус WEB-518 fix-in-progress; итоговый app CVSS pending, условный4.3 разобран в предыдущей дельте.
2026-09-05T13:30:41.956Z · coordinator[05.09 13:30Z координатор] Приёмка ACCTAVILYFENCE (1988, M4): VERDICT=NO-GO — но только по базису: кандидат 282c21e6 сидит на l106 (6930c683), а бриф требовал l108, и переданный L108-line.bundle оказался без prerequisite 7b49e1a1 (ошибка координатора при упаковке). Функционально по отчёту приёмщика: 22 файла (+522/−72), infra/sip/gateway не тронут, Tavily paid-fence закрывается, worktree чист. Решение координатора: l106 — предок живой линии (l109), поэтому базис допустим; коммит идёт в сборку l111 cherry-pick'ом, повторная приёмка — на дереве l111 в пост-QA. Ещё одного круга автора не будет.
2026-09-05T19:19:03.777Z · fable-coordinator[2026-09-05 19:13Z] НА ПРОДЕ: линия l111b (a14181f77ba69013c7183d56dd23980d7c176f39) посажена 19:13Z без простоя (flip по одному бэкенду через контроллер), платный гейт проверен на dry-run до flip и на обоих бэкендах после. Статус → done; пост-QA l111 (волна 2067 на A1) идёт — при регрессии тикет переоткроется. hetzbk релиз l111-a14181f7 опубликован, Pi standby переводится.
2026-09-05T22:31:12.531Z · astra-securitycont14-postqa-web-518 — 2026-09-05T22:31:12.530952+00:00 / IST=2026-09-06T04:01:12.530958+05:30
2105 SECPOSTQA получен: VERDICT=PARTIAL, target900b773c7. Commit в линии по отчёту: 440575932; 282c21e6 not ancestor.
Tavily/dispatch code contract; actual process configuration not read, paid path not called.
ДЛЯ ТИКЕТА: статус доски сохранён; exact author SHA не равен cherry-pick SHA. Parent проверил report/hash, не запускал live-пробы. Общий2105 не является отдельной выполненной runtime-приёмкой каждого из11 контрактов. Full report в audit/evidence/block14/intake-originals/2105-SECPOSTQA-REPORT.md.
2026-09-06T10:09:56.117Z · astra-securitycont18-wave-2096-web-518 — 2026-09-06T10:09:56.116489+00:00 / IST=2026-09-06T15:39:56.116495+05:30
CONT18 fan-out: 2096 REVIEW, gpt-5.6-sol, priority NORMAL; задачи WEB-517, WEB-518.
BLOCK18 VERIFICATION PASS for board-done scopes on exact4c73. Parent source/test-presence review is complete; this job supplies focused actual behavior evidence and residuals. It is REVIEW only, not new implementation.
WEB-517 classification=VERIFIED_SOURCE_AND_TEST_PRESENT; mapped=137b684b08a34cf9ad648be4116139f192cfe866. Source: src/lib/security/publicUrlFetch.ts:127, src/lib/security/publicUrlFetch.ts:197, src/lib/security/publicUrlFetch.ts:371, src/app/actions.ts:461. Tests: src/lib/security/__tests__/publicUrlFetchTransportPin.test.ts:91, src/lib/security/__tests__/publicUrlFetchTransportPin.test.ts:126, src/lib/security/__tests__/publicUrlFetchTransportPin.test.ts:197. Residual: Pinned transport source/test present; TLS/SNI and behavior not rerun.
WEB-518 classification=VERIFIED_SOURCE_AND_TEST_PRESENT; mapped=4405759324f736f598fefb1442183d353be3f5c8. Source: src/lib/billing/paidVendorHosts.ts:2, src/lib/ai/tools/webSearchProvider.ts:81, src/lib/factcheck/providers/tavily.ts:73. Tests: src/lib/ai/tools/__tests__/webSearchProvider.tavilyFence.test.ts:4, src/lib/factcheck/providers/__tests__/tavily.test.ts:10. Residual: Tavily wrappers present; no live vendor/accounting proof.
Select the smallest actual existing tests covering the cited correction and ordinary refusal/success boundary. Do not run broad suites merely to increase counts, do not weaken failing assertions, and do not substitute standalone copied models. Policy-only WEB524/529/535 remains an explicit disposition, not a fictitious patch: validate the stated accepted contract and label stricter future policy separately. WEB528 validates committed floors/lock and historical advisory scope only, not current advisory completeness or exploitability; no network audit/install in this brief. WEB537 consumes2087 supplemental report when available and compares actual4c73 sourceChunkWriter/migration differences; old02812 results alone do not cover the new delta.
Бриф: /Users/poolpooly/audit/outbox/2096-l113d-verify-517-518-brief.md
SHA256 9ad7e81df5c71fdc0a7da04fe9cde46775c323a976f8aec177b830eeea834ad3
Статус: выдан в relay; запуск/результат не подтверждены. Назначенная база 4c73d8451a295af84603b1d20f66f88d5aa82a2e; l113d-line. Проверка текущего кода и prior-output dedupe обязательны. Координатор принимает пересекающиеся изменения и посадку.
2026-09-06T10:15:25.018Z · astra-securityblock18-verdict-web-518 — 2026-09-06T10:15:25.017484+00:00 / IST=2026-09-06T15:45:25.017523+05:30
verified: код + тесты присутствуют на 4c73d8451a295af84603b1d20f66f88d5aa82a2e.
Source: src/lib/billing/paidVendorHosts.ts:2, src/lib/ai/tools/webSearchProvider.ts:81, src/lib/factcheck/providers/tavily.ts:73
Tests: src/lib/ai/tools/__tests__/webSearchProvider.tavilyFence.test.ts:4, src/lib/factcheck/providers/__tests__/tavily.test.ts:10
Mapping: 4405759324f736f598fefb1442183d353be3f5c8
Residual: Tavily wrappers present; no live vendor/accounting proof.
Tests NOT_EXECUTED parent; actual behavior wave(s): 2096
Evidence: /Users/poolpooly/audit/evidence/block18/source-test-hashes.json
Checkpoint: /Users/poolpooly/audit/reports/block18-checkpoint.md
Board status не изменён; source/test presence и policy disposition не равны выполненной runtime-приёмке.
2026-09-06T14:13:42.960Z · astra-securityblock19-wave-2128-web-518 — 2026-09-06T14:13:42.959199+00:00 / IST=2026-09-06T19:43:42.959204+05:30
Правила обогащения: WEB-449. ДЛЯ ТИКЕТА: BLOCK19 REVIEW, gpt-5.6-sol, NORMAL / missing original proof.
Original2096 report not present in RELAY1..6. Complete missing currentg verification, consuming2096 if it arrived/was already running to avoid duplicate proof. publicUrlFetch.ts:127,197,371 checked address→transport, actions.ts fetchconsumer; paidVendorHosts.ts:2, webSearchProvider.ts:81, factcheck/providers/tavily.ts:73 registeredpaidvendor/wrappers. Exact anchors/hashes from currentg must be recorded; do not repeat a historical authorGO as executed current proof. No newly established defect or speculative productFIX.
Бриф M1 /Users/poolpooly/audit/outbox/2128-url-and-paid-egress-current-verification-brief.md; SHA256 d8e28c67264bc16bf24057945087c78944f1e983fb6026b12f761f17598910d8. База 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-URL-AND-PAID-EGRESS-CURRENT-VERIFICATION-REPORT.md
2026-09-06T15:30:02.357Z · astra-securityblock20-block19-url-and-paid-egress-current-verification-web-518 — 2026-09-06T15:30:02.356850+00:00 / IST=2026-09-06T21:00:02.356878+05:30
Правила обогащения: WEB-449. ДЛЯ ТИКЕТА / CONT19 relay15:20, BLOCK20.
Вердикт: GO scoped; proof gaps retained.
Причина/действие: 137b684b/44057593 ancestors, actualURLpinnedredirect+Tavily paidcallerproofgreen. Darwinmulti-aliasfixture setupfailure and directactions472–513 consumer notexecuted remain;2138 boundedtest-harness/directconsumer proof. No newTavilyproductFIX/livevendorexpenseclaim.
Report header: VERDICT=GO; metadata {"commit": "4c322c4606a1695fc896ecd6313842d55679b472", "base": "4c322c4606a1695fc896ecd6313842d55679b472", "fix_commit": "none", "branch": "agent/2128-url-paid-egress-current-verification-20260906", "root": "/Users/milamarty/waves/.worktrees/2128-url-and-paid-egress-current-verification"}.
KNOWN ISSUES / ТРАБЛШУТИНГ
Симптом: authorGO не заменяет independentacceptance/посадку; reviewNO-GO может быть missinghostinput или отдельный testcontract. Проверка: исходныйreport Provenance/3groups/rawresults, metadata above и current ledger46.json. Лечение: 137b684b/44057593 ancestors, actualURLpinnedredirect+Tavily paidcallerproofgreen. Darwinmulti-aliasfixture setupfailure and directactions472–513 consumer notexecuted remain;2138 boundedtest-harness/directconsumer proof. No newTavilyproductFIX/livevendorexpenseclaim.
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-4/BLOCK19-URL-AND-PAID-EGRESS-CURRENT-VERIFICATION-REPORT.md
SHA256 4ad418e53f249f33a4833198b1bed36c21c170ec8463236e0a806a65bcb757c1
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.012Z · astra-securityblock22-wave-2146-web-518 — 2026-09-06T21:37:37.011661+00:00 / IST=2026-09-07T03:07:37.011667+05:30
ДЛЯ ТИКЕТА / BLOCK22 release closure. Preserve shared paid-host policy and both Tavily callers; no new provider integration.
Бриф /Users/poolpooly/audit/outbox/2146-tavily-egress-post-l113j-closure-brief.md; SHA256 286b1629dbe9d735d878d911d32c077173ec1d8838e5d2ea5d2ee1b377d503fa. 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: Read paid-ready and sanitized effective vendor-policy/config/accounting receipt without keys or API calls. Verify both caller artifacts contain the intended egress adapter.; companion: Run actual two callers with inert provider/spend collectors: allowed host and refusal cause zero forbidden dispatch; no real Tavily request or charge. Host accounting claim requires receipt.
KNOWN ISSUES: sent≠running, code/authorGO≠liveclosure. При отсутствующем fix в j — NOT_DEPLOYED. Никаких paid/provider effects, реальных удалений/отказов сервиса. Existing2455/2450/2460/2462/2458 и старые работы не дублируются. Историческиеanchors src/lib/billing/paidVendorHosts.ts:2; src/lib/ai/tools/webSearchProvider.ts:81; src/lib/factcheck/providers/tavily.ts:73. Fullreport future /home/ubuntu/waves/BLOCK22-TAVILY-EGRESS-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-07T07:38:24.335Z · astra-securityBLOCK22-RELAY13-WEB-518 — 2026-09-07T07:38:24.334688+00:00 / IST=2026-09-07T13:08:24.334699+05:30
SEC-002 / WEB-518: NO_GO_FULL_CLOSURE_UNVERIFIED. Workflow done сохранён. Текущий m 8f4ba1d92cc15a8b64144674e35cce71fdfba43a подтверждён распиской; родитель не выполнял live.
Полный closure GO не установлен. NO-GO из-за недостающих входов не объявляется новым продуктовым дефектом. Исторический source/companion PASS сохраняется в исходном отчёте.
KNOWN ISSUES / ТРАБЛШУТИНГ
- exact candidate not deployed as commit or mapped
- live edge moved to l113k before observation
- fresh sanitized Tavily host/runtime receipt 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-TAVILY-EGRESS-POST-L113J-CLOSURE-REPORT.md
2026-09-07T11:40:33.705Z · ЭВОЛЮЦИЯ ЗА 12 Ч (гигиена 2609, 11:25Z 07.09)
ХРОНОЛОГИЯ КРУГОВ
- волна 2146 → `46393080dd885f6ff25967f18639075564e12737`, `d00b8f35f1699d9372616f6230c51f1e2b73c0d1`, `4405759324f736f598fefb1442183d353be3f5c8` → VERDICT=NO-GO — **SEC-002 / WEB-518: NO-GO для закрытия текущим отчётом.** Причина: live edge уже не l113j, exact candidate `44057593…` не ancestor и не указан в per-ticket mapping, а актуальный sanitized host/runtime receipt для Tavily отсутствует. Затронута только атрибуция release-closure: source-equivalent контракт и companion behavior проходят. Следующее действие координатора: выдать для фактически живого release полный per-ticket included/equivalent mapping SEC-002/WEB-518, sanitized effective vendor-host/config/accounting… Источник: `A1 waves/BLOCK22-TAVILY-EGRESS-POST-L113J-CLOSURE-REPORT.md`.
- круг Block-22 → `46393080dd885f6ff25967f18639075564e12737`, `4405759324f736f598fefb1442183d353be3f5c8`, `282c21e694f4362401361406592f464abf5c3fec` → VERDICT=NO-GO — included/equivalent mapping для SEC-002 / WEB-518; exact source bundle не явный WEB-518 mapping или `NOT_DEPLOYED` addendum, receipt self-hash и Источник: `M4 waves/BLOCK22-TAVILY-EGRESS-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.
ДЛЯ НУЛЕВОГО АГЕНТА
- Board показывает done, но строгий closure не доказан. Проверка относительно l113p `1c850d92876757812eab9ffa7f381bcea95aad86`: `46393080dd885f6ff25967f18639075564e12737`=предок; `d00b8f35f1699d9372616f6230c51f1e2b73c0d1`=предок; `4405759324f736f598fefb1442183d353be3f5c8`=предок; `282c21e694f4362401361406592f464abf5c3fec`=объект не предъявлен. Это запись «ЛОЖНО ЗАКРЫТЫЙ»; статус не меняется автоматически.
- Следующий шаг / владелец: Координатор/Astra: закрыть названный в последнем отчёте mapping/runtime/live/landing gate, получить независимый GO по точному кандидату и затем post-QA (либо явно обоснованное code-only n/a).
KNOWN ISSUES / ТРАБЛШУТИНГ
- Дельта без домысла: **SEC-002 / WEB-518: NO-GO для закрытия текущим отчётом.** Причина: live edge уже не l113j, exact candidate `44057593…` не ancestor и не указан в per-ticket mapping, а актуальный sanitized host/runtime receipt для Tavily отсутствует. Затронута только атрибуция release-closure: source-equivalent контракт и companion behavior проходят. Следующее действие координатора: выдать для фактически живого release полный per-ticket included/equivalent mapping SEC-002/WEB-518, sanitized effective vendor-host/config/accounting… included/equivalent mapping для SEC-002 / WEB-518; exact source bundle не явный WEB-518 mapping или `NOT_DEPLOYED` adde… Проверка/причина привязаны к отчётам выше; anchors: `src/lib/billing/paidVendorHosts.ts:2-18`, `src/lib/billing/vendorEgressGuard.ts:830-859`, `src/lib/ai/tools/webSearchProvider.ts:64-118`, `src/lib/factcheck/providers/tavily.ts:51-110`. Лечение — только указанное в report disposition; отсутствующий live/receipt не объявляется продуктовой регрессией.
ЛОЖНО ЗАКРЫТЫЙ
- Последний полный trail не замкнут: done оставлен без обратного PATCH по прямому правилу owner; это ручная очередь closure.
СВЯЗИ / ИСТОЧНИКИ
- Release: `M4 waves/L113P-RELEASE-RECEIPT.md`; координаторский срез: `M4 waves/OPS-STATUS-HEAD-1120.md`; точные отчёты перечислены в хронологии/KNOWN ISSUES.
- Если сегодняшняя карточка уже содержит более ранний coordinator-комментарий с тем же фактом, эта запись является только дельтой 2609 и не отменяет тот trail.
2026-09-07T12:22:09.098Z · astra-securityRELAY16-R3P-FANOUT — 2026-09-07T12:22:09.097148+00:00 / IST=2026-09-07T17:52:09.097171+05:30
OWNER DECISION RELAY16: closure r3p выдан в пакете2618, ROUTING A1, MODEL gpt-5.5.
Бриф /Users/poolpooly/audit/outbox/2618-network-egress-stream-r3p-brief.md; SHA256 5d81de8d0993fb81a866a8a9ff25b01afbaf6e8a663c30b02e39aa8f16a0e6c2. Base l113p1c850d92876757812eab9ffa7f381bcea95aad86.
KNOWN ISSUES: ['exact candidate not deployed as commit or mapped', 'live edge moved to l113k before observation', 'fresh sanitized Tavily host/runtime receipt absent']
Следующий gate: 2618 / A1: finish per-ticket exactp mapping, targetreceipt and independent companion; report blockedgroups individually. Issued, not running/GO.
Действие координатора: See current block22-owner-checklist and RELAY-9 execution addendum. Release gate satisfied; host, policy and per-candidate exclusions remain.
ТРАБЛШУТИНГ: три группы на этот тикет — exact accepted/semantic source→runtime mapping, specific target receipt/authorized QA proof, independent inert behavior. Policy accepted != fixed; historical NO-GO != newpdefect. Missinginput возвращать отдельно, без ожиданиявслоте.
ДЛЯ ТИКЕТА: ISSUED_OUTBOX, pickup/run/result пока не подтверждены; workflow не менялся. Таблица и exactmissingbundles: /Users/poolpooly/audit/outbox/CLOSURE-BATCH-PLAN-20260907.md.
Воркер
не привязан — привязать:
curl -X POST https://bugs.wool2.online/api/web/assign -H 'content-type: application/json' \
-d '{"issueId":"WEB-518","session":"<имя tmux-сессии>","host":"m4"}'
Обновлён
2026-09-05T21:05:36.592Z