A directory the mesh places: ${dir:<id>} and the pathless directory resource #69

Merged
jschoubben merged 1 commits from feat/a-directory-the-mesh-places into main 2026-09-26 15:52:26 +00:00
Owner

The first executable slice of ADR 0112 / to-be 27, sized to what the operator settled tonight (hq #132):

  • A directory resource may omit path; composition resolves it to <root>/<module>/<id> — the root a node's setting on Rendering, /var/lib default, which reproduces exactly the layout novox converged to by hand tonight.
  • ${dir:<id>} names the place from a resource's path, content, mounts, environment and env-files — one more template kind beside ${bound:…}/${secret:…}/${seat:…}/${port:…}/${machine:…}.
  • A directory that states a path keeps it and still answers by name — the adopted-data placement (mssql is the live case).
  • Resolved in the controller at composition: the wire format and the host change not at all.
  • A reference naming no directory refuses at the manifest and again at composition; nested fills rebuild rather than write into the manifest's maps (one manifest composes for many nodes).

Six tests pin it. The catalogue conversion is deliberate per-module follow-up — for the six modules moved tonight the ids already match the resolved paths, so their conversions are textual no-ops; mailu's nested layout keeps stated paths until its own window.

The first executable slice of ADR 0112 / to-be 27, sized to what the operator settled tonight (hq #132): - A directory resource may omit `path`; composition resolves it to `<root>/<module>/<id>` — the root a node's setting on `Rendering`, `/var/lib` default, which reproduces exactly the layout novox converged to by hand tonight. - `${dir:<id>}` names the place from a resource's path, content, mounts, environment and env-files — one more template kind beside `${bound:…}`/`${secret:…}`/`${seat:…}`/`${port:…}`/`${machine:…}`. - A directory that **states** a path keeps it and still answers by name — the adopted-data placement (mssql is the live case). - Resolved in the controller at composition: the wire format and the host change **not at all**. - A reference naming no directory refuses at the manifest and again at composition; nested fills rebuild rather than write into the manifest's maps (one manifest composes for many nodes). Six tests pin it. The catalogue conversion is deliberate per-module follow-up — for the six modules moved tonight the ids already match the resolved paths, so their conversions are textual no-ops; mailu's nested layout keeps stated paths until its own window.
jschoubben added 1 commit 2026-09-26 15:52:17 +00:00
The first executable slice of ADR 0112 / to-be 27, sized to what the
operator settled tonight: a module definition names no host path for
its own data. A directory resource may omit path; composition resolves
it to <root>/<module>/<id>, the root a node's setting on Rendering with
/var/lib as the default — which reproduces exactly the layout novox
converged to by hand. ${dir:<id>} names the place from a resource's
path, content, mounts, environment and env-files, the same shape as
${bound:…}. A directory that states a path keeps it and still answers
by name — that is the adopted-data placement, mssql its live case.

Resolved in the controller at composition, so the wire format and the
host change not at all; a reference naming no directory refuses at the
manifest and again at composition; nested fills are rebuilt, never
written into the manifest's own maps, because one manifest composes
for many nodes.
jschoubben merged commit cd2481dcd8 into main 2026-09-26 15:52:26 +00:00
jschoubben deleted branch feat/a-directory-the-mesh-places 2026-09-26 15:52:26 +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/mesh-controller#69