# 🔬 Адрес объекта в тексте отказа SpeechKit - **Тип:** research - **Категория:** Очередь — Тот же род утечки в журнал, но вне темы входа — идёт следом за ней. - **Зачем:** Текст отказа операции приходит от Yandex и уезжает в журнал и в колонку error_text: если он несёт URI объекта, из журнала снова собирается ссылка на чужую запись. - **Теги:** review-2026-08-23 Гипотеза ревью задачи `pocketbase-storage` 2026-08-12, оставшаяся без оракула: поднять настоящий отказ Yandex нечем, а прогон на реальных ключах запрещён. Собственные цепочки отказов задача оборвала — чтение из хранилища и выгрузка в Object Storage больше не называют ключ, — но текст, пришедший **чужими руками**, идёт в журнал и в задачу как есть. Подтверждено прогоном ревью `config-test-headers-login` 2026-08-23: та же находка пришла второй раз. Оракула у неё нет и быть не может — нужен настоящий SpeechKit, а прогон на реальных ключах запрещён («Yandex Cloud за деньги»). ## Вопрос Несёт ли текст отказа операции распознавания адрес объекта, который мы отдали SpeechKit, и в каких случаях? Если несёт — чем его отсечь, не потеряв причину отказа: разбором по образцу, перечнем известных кодов отказа или отказом писать чужой текст вовсе. ## Куда ляжет ответ - Наблюдение с командой и условиями — записка в `docs/research/`, рядом с `pocketbase-defaults.md`. - Если адрес приходит — норма в спеку `storage`, требование «Файл отдаётся ссылкой», и строка в `docs/security.md`, раздел «Из чего строятся пути и ключи»; сама правка — отдельной задачей. - Если не приходит — строка в ту же записку, чтобы гипотезу не поднимали заново. ## Рамки Реальные ключи Yandex и боевые данные не трогаем. Отказ придётся вызывать дешёвым способом: битый объект, объект вне бакета, отозванный доступ — что из этого доступно, решается по ходу. Цена прогона в деньгах называется до запуска.