tasks: заведены шесть задач из урожая ревью и переименования образца конфига

- пять из урожая change 2026-08-11-fix-http-handler-tests, тег review-2026-08-11;
  утечка имени файла в журнал поставлена первой строкой очереди
- опечатка transcibe дописана в json-api-for-spa: текст ошибки — часть
  необратимого контракта, и в одиночку он не правится
This commit is contained in:
av
2026-08-11 08:59:45 +03:00
parent 1bd6d03188
commit 2333e80633
8 changed files with 300 additions and 4 deletions
+50
View File
@@ -0,0 +1,50 @@
# 🐞 Не писать имя файла пользователя в журнал
- **Тип:** fix
- **Категория:** Очередь — сломано сейчас: каждая принятая запись кладёт имя файла живого пользователя в журнал контейнера, нарушение объявлено критическим и необратимым
- **Зачем:** Приём кладёт имя файла, данное пользователем, в журнал контейнера на каждой принятой записи — инвариант приватности объявляет это критическим и необратимым.
- **Теги:** review-2026-08-11
Инвариант «Содержимое записи остаётся приватным» (`CLAUDE.md`) запрещает писать
имя файла пользователя в лог: «только длина и идентификаторы». Приём пишет.
Строка идёт на **общем** шаге заведения задачи, то есть и для записей из
Telegram, и для записей по HTTP.
Найдено проходом `review-specs` ревью дизайна change
`2026-08-11-fix-http-handler-tests`; отчёт триажа —
`openspec/changes/archive/2026-08-11-fix-http-handler-tests/review/triage.md`.
Правка вынесена сюда решением человека на контрольной точке: задача была про проверки.
## Воспроизведение
```
grep -n 'file_name' internal/service/transcribe.go
```
Отдаёт `107: "file_name", fileName,` — поле в `s.logger.Info("Creating
transcribe job", ...)`. Уровень `Info`, то есть в боевой конфигурации строка
пишется. Приходит `fileName` из `CreateJobFromApi` и `CreateJobFromTelegram`
без изменений — это то самое имя, которое дал отправитель.
## Затрагивает
- `internal/service/transcribe.go`, функция `createTranscribeJob` — журнальные
строки шага заведения;
- `docs/conventions/logging.md` — если после правки понадобится строка про то,
чем имя заменяется.
## Критерии приёмки
- Имени, данного отправителем, нет ни в одной журнальной строке приёма. Оракул —
прогон приёма с записью, чьё имя содержит опознаваемую строку, и `grep` этой
строки по перехваченному журналу: ничего не найдено.
- Идентификатор файла, его расширение и длина в журнале остаются: по ним путь
записи прослеживается. Оракул — тот же перехваченный журнал, `file_id` и
`size` на месте.
## Рамки
Прочие журнальные строки проекта здесь не пересматриваются. Полная сверка
журнала с запретами — отдельная работа; эта задача закрывает названный
инвариантом случай.