## Why Приём кладёт в журнал имя файла, которое дал отправитель, на каждой принятой записи. Имя записи из семейного архива — такое же содержимое личной переписки, как и сам текст расшифровки; инвариант приватности объявляет такую запись критической и необратимой, потому что строка уже уехала в журнал контейнера. Доходит это имя до сервиса сегодня только по HTTP: из Telegram приходит путь, выданный самим Telegram, а не имя человека. Строка журнала при этом общая для обоих входов, и запрет пишется на неё, а не на транспорт. ## What Changes - Журнал приёма перестаёт нести имя, данное отправителем. Правка ложится на общий шаг заведения задачи, через который идут оба входа. - Прослеживаемость приёма сохраняется: идентификатор записи, её расширение и размер в байтах в журнале остаются, по ним путь записи собирается отбором. - Запрет становится проверяемым, и проверяется он на успехе и на отказе: приём прогоняется с записью, чьё имя содержит опознаваемую строку, и журнал этой строки не содержит. - **Метка метрики перестаёт нести кусок имени.** Расширение — хвост после последней точки — берётся из имени отправителя и уезжало меткой на страницу метрик, которая отдаётся кому угодно. Теперь оно приводится к перечню известных форматов, всё прочее становится одним общим значением. Решение принято контрольной точкой уже после ревью кода, которое построило этот путь. ## Capabilities ### New Capabilities Новых нет. ### Modified Capabilities - `intake`: приём получает требование о том, чего его журнал нести не вправе, и о том, что в нём остаётся ради прослеживаемости. ## Impact - `internal/service/transcribe.go`, общий шаг заведения задачи — журнальные строки приёма и обе метки, несущие расширение; - `internal/metrics` — приведение расширения к перечню известных форматов; - проверка приёма: новый прогон с опознаваемым именем и разбором перехваченного журнала; - `docs/conventions/logging.md` уже запрещает имена файлов пользователя — правки не требует, разве что строкой о том, чем имя заменено.