- расширение приводится к перечню известных форматов прежде метки метрики: страница метрик открыта, и хвост имени уезжал на неё дословно - проверки приёма перехватывают все три потока журнала и читают реестр метрик, каждая падает при снятии того, что сторожит
46 lines
3.8 KiB
Markdown
46 lines
3.8 KiB
Markdown
# ADR-2026-08-11. Наружу расширение выходит только приведённым к перечню
|
||
|
||
- **Дата:** 2026-08-11
|
||
- **Источник:** [openspec/changes/archive/2026-08-11-no-user-filename-in-log/design.md](../../openspec/changes/archive/2026-08-11-no-user-filename-in-log/design.md), раздел `Decisions`
|
||
|
||
## Решение
|
||
|
||
Расширение принятой записи приводится к закрытому перечню известных форматов
|
||
прежде, чем уйти меткой метрики; всё, чего в перечне нет, заменяется одним общим
|
||
значением. Имя файла на диске при этом не трогается — там расширение остаётся
|
||
тем, каким пришло.
|
||
|
||
Дословно из источника:
|
||
|
||
> Из трёх способов человек выбрал средний. Отвергнуты: оставить как есть и завести
|
||
> задачу — канал жил бы до неё, а закрытие этой задачи читалось бы как
|
||
> «починено»; приводить расширение везде, включая имя файла на диске, —
|
||
> раскладка каталога записей объявлена необратимой и меняется решением человека,
|
||
> а не по ходу починки журнала.
|
||
|
||
## Почему
|
||
|
||
Расширение берётся из имени, которое дал отправитель, дословно: имя
|
||
`запись.тайное-слово` отдаёт `тайное-слово`, а `Разговор с Петровым 11.08` —
|
||
`08`. Оно уходило меткой метрики, а страница метрик отдаётся без проверки
|
||
отправителя. Канал оказался шире того, ради которого задача заводилась: журнал
|
||
читает владелец сервиса, метки — кто угодно, и то же значение оседает в
|
||
хранилище метрик. Тем же каналом множество значений метки становится
|
||
неограниченным: их задаёт анонимный отправитель.
|
||
|
||
Отказ от нормализации на диске — не экономия, а граница обратимости: формат
|
||
имени файла и раскладка `data/files` объявлены необратимыми, и меняются они
|
||
решением человека под свою задачу, а не попутно с починкой журнала.
|
||
|
||
## Цена
|
||
|
||
- Перечень форматов стал нормой и требует ведения: формат, который сервис
|
||
начнёт принимать, до внесения в перечень будет виден в метрике как общее
|
||
значение, неотличимо от чужого хвоста.
|
||
- Форма метки размера принятой записи изменилась — ведущая точка пропала
|
||
(`.mp3` стало `mp3`). Ряды, собранные до выкладки, перестают пополняться.
|
||
- Настоящий формат записи, попавшей в общее значение, остаётся видимым только в
|
||
журнале — по полю пути строки приёма и полю формата строки конвертации.
|
||
- Хвост расширения по-прежнему уходит в журнал внутри пути файла. Это остаток,
|
||
он записан в [../security.md](../security.md), и своей задачи у него пока нет.
|