ace exports the operator's media library over NFS and Samba with host
services no module declares: they close at converge, nothing owns their
configuration, and no module elsewhere can require the share. Proposes a
file-sharing module that accesses the paths, holds a node-scoped seat it
defines, and provides file-share to consumers.
ace exports the operator's media library over NFS and Samba with host
services no module declares: they close at converge, nothing owns their
configuration, and no module elsewhere can require the share. Proposes a
file-sharing module that accesses the paths, holds a node-scoped seat it
defines, and provides file-share to consumers.
ace exports the operator's media library over NFS and Samba with host
services no module declares: they close at converge, nothing owns their
configuration, and no module elsewhere can require the share. Proposes a
file-sharing module that accesses the paths, holds a node-scoped seat it
defines, and provides file-share to consumers.
Amended per the operator: file sharing is a core seat family, node-scoped and defined by the control plane — one seat per protocol (node-nfs-share → nfs-share, node-smb-share → smb-share, …) as ADR 0109 does for package registries, so nfs and samba modules each hold theirs on the same machine and one module may hold several.
Amended per the operator: file sharing is a **core seat family**, node-scoped and defined by the control plane — one seat per protocol (`node-nfs-share` → `nfs-share`, `node-smb-share` → `smb-share`, …) as ADR 0109 does for package registries, so nfs and samba modules each hold theirs on the same machine and one module may hold several.
The operator's call: a node-scoped system seat family (node-nfs-share,
node-smb-share, …) defined by the control plane, one per protocol as
package registries are (ADR 0109), so several modules occupy it and a
machine may hold both.
nfs-share and smb-share share an intent, not a contract; one seat would be
a union with every field optional. What the exemplar exposes is that a
seat declared inside one module cannot be implemented by another without
depending on it.
Settled after two rounds with the operator: two module-defined seats, nfs-share and smb-share (they share an intent, not a contract — the table in the report), nfs/samba as first implementations. The design gap the exemplar exposes: a seat definition has no home outside the module that first declares it, so a second implementation (Ganesha, ksmbd) cannot hold the seat without depending on the first — the report proposes a neutral seat definition in the catalogue, registered like a manifest.
Settled after two rounds with the operator: **two module-defined seats**, `nfs-share` and `smb-share` (they share an intent, not a contract — the table in the report), `nfs`/`samba` as first implementations. The design gap the exemplar exposes: a seat definition has no home outside the module that first declares it, so a second implementation (Ganesha, ksmbd) cannot hold the seat without depending on the first — the report proposes a neutral seat definition in the catalogue, registered like a manifest.
Third round: the consumer half. A consumer on another node needs the export mounted by its host before its container starts — not an nfs-client module (fstab with a manifest around it), but a mountresource of the consuming module, filled from the binding (What=${bound:nfs-share:at}:${bound:nfs-share:path}, Where=${dir:library}), unmounted on undeclare. Expressible today as package + systemd .mount file + service; the honest form is a new mount resource kind. nfs/samba modules are server-side only. Identity crosses the wire with sec=sys: ${mount:<id>:uid} (153 extended).
Third round: the consumer half. A consumer on another node needs the export mounted by its **host** before its container starts — not an `nfs-client` module (fstab with a manifest around it), but a `mount` **resource of the consuming module**, filled from the binding (`What=${bound:nfs-share:at}:${bound:nfs-share:path}`, `Where=${dir:library}`), unmounted on undeclare. Expressible today as package + systemd .mount file + service; the honest form is a new `mount` resource kind. nfs/samba modules are server-side only. Identity crosses the wire with sec=sys: `${mount:<id>:uid}` (153 extended).
Fourth round, correcting the third: no mount resource kind — mounting is a module's work. A consumer-side network-share module (package + systemd .mount unit as a file + service, filled from ${bound:nfs-share:…}, mountpoint as the assignment's setting); app modules reach the files through an access on that path, so the same app manifest runs against a local library on ace and a mounted one elsewhere. The one check to add is the data-loss case: an access on a mountpoint must be confirmed mounted, or a writer starting first writes into the empty directory underneath.
Fourth round, correcting the third: **no `mount` resource kind** — mounting is a module's work. A consumer-side `network-share` module (package + systemd .mount unit as a file + service, filled from `${bound:nfs-share:…}`, mountpoint as the assignment's setting); app modules reach the files through an `access` on that path, so the same app manifest runs against a local library on ace and a mounted one elsewhere. The one check to add is the data-loss case: an `access` on a mountpoint must be confirmed *mounted*, or a writer starting first writes into the empty directory underneath.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
ace exports the operator's media library over NFS and Samba with host
services no module declares: they close at converge, nothing owns their
configuration, and no module elsewhere can require the share. Proposes a
file-sharing module that accesses the paths, holds a node-scoped seat it
defines, and provides file-share to consumers.
Amended per the operator: file sharing is a core seat family, node-scoped and defined by the control plane — one seat per protocol (
node-nfs-share→nfs-share,node-smb-share→smb-share, …) as ADR 0109 does for package registries, so nfs and samba modules each hold theirs on the same machine and one module may hold several.Settled after two rounds with the operator: two module-defined seats,
nfs-shareandsmb-share(they share an intent, not a contract — the table in the report),nfs/sambaas first implementations. The design gap the exemplar exposes: a seat definition has no home outside the module that first declares it, so a second implementation (Ganesha, ksmbd) cannot hold the seat without depending on the first — the report proposes a neutral seat definition in the catalogue, registered like a manifest.Third round: the consumer half. A consumer on another node needs the export mounted by its host before its container starts — not an
nfs-clientmodule (fstab with a manifest around it), but amountresource of the consuming module, filled from the binding (What=${bound:nfs-share:at}:${bound:nfs-share:path},Where=${dir:library}), unmounted on undeclare. Expressible today as package + systemd .mount file + service; the honest form is a newmountresource kind. nfs/samba modules are server-side only. Identity crosses the wire with sec=sys:${mount:<id>:uid}(153 extended).Fourth round, correcting the third: no
mountresource kind — mounting is a module's work. A consumer-sidenetwork-sharemodule (package + systemd .mount unit as a file + service, filled from${bound:nfs-share:…}, mountpoint as the assignment's setting); app modules reach the files through anaccesson that path, so the same app manifest runs against a local library on ace and a mounted one elsewhere. The one check to add is the data-loss case: anaccesson a mountpoint must be confirmed mounted, or a writer starting first writes into the empty directory underneath.