- пять задач партии review-2026-08-23: многозначность Remote-Name и Remote-Email, мелочи входа, механизация правила о зависимостях конфига, снятие мёртвого читателя .env, управляющие знаки в расширении - две существующие разведки дополнены находками того же прогона: адрес объекта в тексте отказа SpeechKit и выводимость имени копии из журнала
4.5 KiB
🔬 Имя копии в каталоге записи без обращения к базе
- Тип: research
- Категория: Очередь — Разведка о той же раскладке каталога данных, и цена ответа растёт с каждой уложенной записью
- Зачем: Имена копий вида без базы не читаются: по каталогу на диске не сказать ни чья запись, ни какого она уровня, а раскладка объявлена необратимой, и цена решения растёт с каждой уложенной записью.
- Теги: review-2026-08-23
Копии записи лежат именами вида <ULID><расширение> в каталоге записи. По
каталогу на диске не сказать ни чья запись, ни какого уровня копия: имя читается
только вместе с базой.
Пока на боевом сервере записей нет вовсе (стадия «стройка»), это не мешает. Цена растёт с каждой уложенной записью: раскладка каталога данных объявлена необратимой, и переименование задним числом стоит прохода по всему каталогу и по всем ссылкам в базе.
Разведка отвечает не «переименовать ли», а «нужна ли читаемость без базы вообще» — и во что обойдётся её отсутствие, когда записи пойдут живым потоком.
Нашёл триаж ревью change 2026-08-23-storage-without-pocketbase.
Вопрос
Вопроса два, и оба об одном имени копии.
- Нужно ли имени копии нести что-то, по чему запись узнаётся без обращения к базе, и какой ценой это берётся сейчас против той, что придётся заплатить потом?
- Допустимо ли, что имя копии выводится из строки журнала арифметикой, и если нет — чем платить за невыводимость, не потеряв порядок имён?
Второй вопрос пришёл прогоном ревью 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 о раскладке каталога данных. Изменение самой раскладки
необратимо и берётся отдельной задачей после ответа.
Рамки
Раскладка каталога данных этой разведкой не меняется — она объявлена необратимой, и правка её решается человеком. Боевой каталог данных не трогать.