Skip to the content.

Architecture Decision Record (ADR)

ADR-0034: ZFS organization dataset layout for gintra Ultra-light Architecture Decision Record (ADR)

1. Status:

Accepted

2. Context

setmy.info needs a consistent physical storage model for organization data on the current Linux host. The source design defines a ZFS-backed gintra tree that must encode country and organization identity while keeping structural levels separate from actual data-holding datasets. The layout also needs a clear default rule for when data stays in normal directories and when an extra ZFS sub-dataset is justified.

3. Decision

Use ZFS pool tank mounted at /mnt/gintra with the dataset hierarchy tank/organizations/<cc>/<org> as the standard physical namespace for organization data. Treat tank, tank/organizations, and tank/organizations/<cc> as structural containers, and store actual organization data in the leaf dataset tank/organizations/<cc>/<org>, where <cc> is the ISO 3166-1 alpha-2 country code and <org> is the organization short name.

4. Rationale (Justification):

This creates a clear, scalable namespace based on ISO country code and organization short name, while keeping per-organization data isolated at dataset level. It aligns the physical layout with the path convention used by the smi-* scripts. It also keeps the normal case simple: development/ and operations/ stay plain directories inside one organization dataset unless there is a specific operational reason to split part of the tree into an extra sub-dataset.

3. Consequences, Impacts & Follow-up Actions

Within each organization dataset, use development/ for long-lived configuration and operations/ for runtime workloads such as ai/, packages/, and workflows/. New organizations should be provisioned as new leaf datasets under tank/organizations/<cc>/<org>, where <cc> is the country code and <org> is the organization short name, and documentation/scripts should continue to assume /mnt/gintra/organizations/<cc>/<org> as the physical path. Optional child datasets may be created only for explicit needs such as separate quotas or snapshot policies.


https://adr.github.io/