# Каталог данных задаётся одним ключом `[storage] data_dir`

- **Дата:** 2026-08-12
- **Источник:** [../../openspec/changes/archive/2026-08-12-pocketbase-storage/design.md](../../openspec/changes/archive/2026-08-12-pocketbase-storage/design.md),
  раздел «Ключи конфигурации: два пути заменяются одним каталогом»

## Решение

Ключи `[database] path` и `[storage] path` уходят. Вместо них — один
`[storage] data_dir` со значением `data`: база и файлы записей лежат под одним
каталогом, и по-другому хранилище не умеет.

Выбор сделан человеком 2026-08-12 из трёх названных вариантов.

## Почему

Имя ключа конфигурации проект объявил необратимым
([../../CLAUDE.md](../../CLAUDE.md), «Работа»): переименование правится не в
одном файле, а в конфигурации на сервере и в выкладке, и молча ломает запуск.
Поэтому выбор ушёл человеку, а не был принят по ходу.

Цитата источника о цене каждого варианта:

> - `[storage] data_dir` — **выбрано**. Ключ назван по назначению, как названы и
>   сегодняшние; смена библиотеки через год имени не тронет. Слово `storage` при
>   этом уже занято capability, но в конфигурации оно значит ровно то же — где
>   лежат данные;
> - `[pocketbase] data_dir` — прямее всего читается тем, кто знает библиотеку, и
>   вписывает имя поставщика в необратимый ключ. Смена библиотеки потребует
>   второго необратимого переименования;
> - `[data] dir` — короче и нейтральнее всех, но `data` в проекте уже значит
>   каталог на диске, и секция с таким именем читается как «настройки каталога»,
>   а не «настройки хранилища».

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

## Последствия

- `+` имя ключа не называет поставщика, и смена библиотеки хранилища второго
  необратимого переименования не потребует.
- `+` каталог данных один, и запрет «боевой каталог не трогать» покрывает и базу,
  и записи одной строкой.
- `−` слово `storage` в проекте теперь значит три вещи: capability, само
  хранилище и секцию конфигурации. Поле записи о файле от этого переименовано в
  `location` — чтобы смыслов было три, а не четыре.
- `−` прежние конфигурации несовместимы: сервис на старом `config.toml`
  поднимется на умолчании `data`, а не на прежних путях. Данные при этом не
  переносятся по решению задачи, так что цена нулевая ровно сейчас и была бы не
  нулевой при переносе.
