ADR 0107: persistent data is a directory bind, never a named volume #106

Merged
jschoubben merged 1 commits from decide/0107-persistent-data-is-a-directory-bind into main 2026-09-24 14:24:18 +00:00
Owner

Records the rule as given directly, mid-session: persistent data is a host directory bind, never a named volume — a named volume is permitted only for data that's disposable if lost.

HAL's own postgres and lavinmq both used a directory bind; the mesh's adoption of them three weeks ago switched to a named volume with no reason recorded. distribution and searxng followed the same pattern since.

Already built and live on novox (mesh-catalog PR #54) before this record — urgent enough to fix first, write down after. Includes the incident and its cause: a host directory doesn't get Docker's automatic ownership initialization the way a named volume does, so mesh-store crash-looped on Permission denied until its new directory's ownership was matched to the original volume's.

Closes issue 115. Checks pass (records.py, cycle.py, index.py).

Records the rule as given directly, mid-session: persistent data is a host directory bind, never a named volume — a named volume is permitted only for data that's disposable if lost. HAL's own `postgres` and `lavinmq` both used a directory bind; the mesh's adoption of them three weeks ago switched to a named volume with no reason recorded. `distribution` and `searxng` followed the same pattern since. Already built and live on `novox` (`mesh-catalog` PR #54) before this record — urgent enough to fix first, write down after. Includes the incident and its cause: a host directory doesn't get Docker's automatic ownership initialization the way a named volume does, so `mesh-store` crash-looped on `Permission denied` until its new directory's ownership was matched to the original volume's. Closes issue 115. Checks pass (`records.py`, `cycle.py`, `index.py`).
jschoubben added 1 commit 2026-09-24 14:22:01 +00:00
Records the rule the operator gave directly, mid-session, after checking
that HAL's own postgres and lavinmq both used a directory bind and the
mesh's adoption of them three weeks ago switched to a named volume without
a reason recorded anywhere.

Already built and rolled out on novox (mesh-catalog PR #54) before this
record -- urgent enough to fix first and write down after. Includes the
incident: the new host directories needed the container's own UID, which a
named volume gets for free and a directory bind does not; mesh-store
crash-looped on Permission denied until ownership was matched to what the
original volume already had.

Closes issue 115. Checks pass.
jschoubben merged commit 5677e97508 into main 2026-09-24 14:24:18 +00:00
jschoubben deleted branch decide/0107-persistent-data-is-a-directory-bind 2026-09-24 14:24:18 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/hq#106