- пять задач партии review-2026-08-23: многозначность Remote-Name и Remote-Email, мелочи входа, механизация правила о зависимостях конфига, снятие мёртвого читателя .env, управляющие знаки в расширении - две существующие разведки дополнены находками того же прогона: адрес объекта в тексте отказа SpeechKit и выводимость имени копии из журнала
58 lines
4.5 KiB
Markdown
58 lines
4.5 KiB
Markdown
# 🔬 Имя копии в каталоге записи без обращения к базе
|
||
|
||
- **Тип:** research
|
||
- **Категория:** Очередь — Разведка о той же раскладке каталога данных, и цена ответа растёт с каждой уложенной записью
|
||
- **Зачем:** Имена копий вида <ULID><ext> без базы не читаются: по каталогу на диске не сказать ни чья запись, ни какого она уровня, а раскладка объявлена необратимой, и цена решения растёт с каждой уложенной записью.
|
||
- **Теги:** 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 о раскладке каталога данных](../../docs/adr/). Изменение самой раскладки
|
||
необратимо и берётся отдельной задачей после ответа.
|
||
|
||
## Рамки
|
||
|
||
Раскладка каталога данных этой разведкой не меняется — она объявлена
|
||
необратимой, и правка её решается человеком. Боевой каталог данных не трогать.
|