Files
transcriber/tasks/items/record-file-name-readability.md
T
av 11269c1567 учёт: заведён урожай ревью входа по конфигу
- пять задач партии review-2026-08-23: многозначность Remote-Name и Remote-Email,
  мелочи входа, механизация правила о зависимостях конфига, снятие мёртвого
  читателя .env, управляющие знаки в расширении
- две существующие разведки дополнены находками того же прогона: адрес объекта в
  тексте отказа SpeechKit и выводимость имени копии из журнала
2026-08-23 14:03:52 +03:00

4.5 KiB
Raw Blame History

🔬 Имя копии в каталоге записи без обращения к базе

  • Тип: research
  • Категория: Очередь — Разведка о той же раскладке каталога данных, и цена ответа растёт с каждой уложенной записью
  • Зачем: Имена копий вида без базы не читаются: по каталогу на диске не сказать ни чья запись, ни какого она уровня, а раскладка объявлена необратимой, и цена решения растёт с каждой уложенной записью.
  • Теги: review-2026-08-23

Копии записи лежат именами вида <ULID><расширение> в каталоге записи. По каталогу на диске не сказать ни чья запись, ни какого уровня копия: имя читается только вместе с базой.

Пока на боевом сервере записей нет вовсе (стадия «стройка»), это не мешает. Цена растёт с каждой уложенной записью: раскладка каталога данных объявлена необратимой, и переименование задним числом стоит прохода по всему каталогу и по всем ссылкам в базе.

Разведка отвечает не «переименовать ли», а «нужна ли читаемость без базы вообще» — и во что обойдётся её отсутствие, когда записи пойдут живым потоком.

Нашёл триаж ревью change 2026-08-23-storage-without-pocketbase.

Вопрос

Вопроса два, и оба об одном имени копии.

  1. Нужно ли имени копии нести что-то, по чему запись узнаётся без обращения к базе, и какой ценой это берётся сейчас против той, что придётся заплатить потом?
  2. Допустимо ли, что имя копии выводится из строки журнала арифметикой, и если нет — чем платить за невыводимость, не потеряв порядок имён?

Второй вопрос пришёл прогоном ревью config-test-headers-login 2026-08-23, и выводимость там уже установлена: TestProbeStorageNameDerivesFromRecordID даёт на record_id 01m0pwf0r1cp9v0zt83w79ccbn имя копии 01m0pwf0r1cp9v0zt83w79ccbp.mp3, ровно инкремент(record_id)+ext, а TestProbeDerivationRate — 49 из 50 приёмов подряд. Журнал несёт record_id и file_ext, то есть имя собирается без обращения к каталогу данных, и инвариант «Имя файла на диске задаёт сервис, а в журнал не идёт» соблюдён по букве, но не по назначению. Триаж тест не воспроизводил. Спрашивается поэтому не факт, а его цена.

Первый вопрос от этого дешевеет: часть читаемости без базы уже есть — просто не по назначению и не решением.

Оба вопроса решает одна разведка, и отдельной записи второй не получает — решение владельца. Довод: раскладка каталога данных объявлена необратимой, и два ответа порознь дали бы две необратимые правки одного каталога.

Куда ляжет ответ

Записка docs/research/, а решение — в ADR о раскладке каталога данных. Изменение самой раскладки необратимо и берётся отдельной задачей после ответа.

Рамки

Раскладка каталога данных этой разведкой не меняется — она объявлена необратимой, и правка её решается человеком. Боевой каталог данных не трогать.