Files
hq/01-RESEARCH/018-the-operators-machine-as-modules/00-overview.md
T
jochen bf39baf104 Research 018 graduates: ADRs 0173–0177 and to-be 37, the operator's machine
Every configurable thing on a node is a module, the home included, and a
module is whatever it declares (0173, extending 0040). A node varies a module
only through a setting rendered into the file or a kept region, never an edit
(0174, extending 0011; issue 168 first). One tool runtime per node serves every
module's tools on the host side, never in a container; the console is its
serving mode, renamed node-tools (0175, extending 0150; 0047/0150/0152 carry
dated notes). The login shell is a node seat held by one shell module with
`execute` as its contract (0176). A unit may be user-scoped and the service
manager is a node seat held by systemd (0177).

To-be 37 is handed off in-progress to mesh-host, mesh-controller, mesh-tools
and mesh-catalog, with the build in order: the account on every node, the
runtime, zsh, systemd, then the graphical stack. To-be 29 keeps ~/.ssh and
points at 37; 33 §6 and 34 are amended; the glossary gains node tools, bundle,
kept region, installed/holding, and retires flavor.
2026-10-02 16:34:57 +02:00

5.7 KiB

status, initiated, touches, became
status initiated touches became
graduated 2026-10-02
02-DECISIONS/0040-what-a-module-is.md
02-DECISIONS/0011-managed-files-are-generated-never-edited.md
02-DECISIONS/0132-a-seat-carries-the-tools-its-holder-must-serve.md
02-DECISIONS/0150-a-modules-own-code-runs-as-supervised-processes-under-one-account.md
02-DECISIONS/0152-the-operators-surface-is-a-module-the-console.md
02-DECISIONS/0161-what-deserves-a-seat.md
03-DESIGN/01-to-be/05-the-node-host.md
03-DESIGN/01-to-be/29-a-node-has-operator-accounts.md
03-DESIGN/01-to-be/33-the-tools-the-mesh-answers.md
03-DESIGN/01-to-be/34-the-console.md
03-DESIGN/00-as-is/10-module-catalogue.md
04-ISSUES/160-a-machine-says-little-about-itself-and-only-when-asked/00-report.md
04-ISSUES/168-a-setting-reaches-every-file-and-contribution/00-report.md
03-DESIGN/01-to-be/37-the-operators-machine.md
02-DECISIONS/0173-the-operators-machine-is-the-meshs-and-a-module-is-what-it-declares.md
02-DECISIONS/0174-a-node-varies-a-module-through-settings-and-kept-regions-never-an-edit.md
02-DECISIONS/0175-one-tool-runtime-per-node-serves-every-modules-tools-on-the-host-side.md
02-DECISIONS/0176-the-login-shell-is-a-node-seat-and-execute-is-its-contract.md
02-DECISIONS/0177-a-unit-may-be-user-scoped-and-the-service-manager-is-a-node-seat.md

018 — The operator's machine as modules

What. The mesh owns the whole machine, not only the services on it. Everything a person configures on a node — the login manager, the display server, the window manager, the shell, the terminal, the launcher, the notifier, the audio setup, the boot images, the downloads folder, the agent at the terminal — is a module: a package, the files it owns under /etc and under the operator's home, the seat it holds, the tools it serves. One default configuration per module, varied per node only through settings rendered into the file or a kept operator region, never through an edit. The servers take the universal modules (shell, prompt, git, the agent); the workstations take those and the graphical stack, which a capability the machine reports gates. This effort writes that behaviour down, measures what the predecessor's desktop modules actually contain, and settles what the mesh must gain before the first of them can be written.

Why. The predecessor is retired on every node. What it still owned on the two workstations — about thirty modules' worth of dotfiles, user units and /etc files — is now owned by nothing: no generator regenerates them, and a fix to one of them is a hand edit that nothing records. The migration scoped these modules out as the workstation's own environment, and to-be 29 names them as the last thing the predecessor was keeping alive. To-be 29 covers one directory, ~/.ssh, and draws a boundary inside it. The operator wants no boundary: the machine is the mesh's, as far as it makes sense to configure it. That is a wider scope than any design states, and it reaches three records that were written for services: what a module is, where a module's tools run, and what a managed file may be.

What it touches. The module definition (ADR 0040), seats and their contracts (ADR 0132), where a module's tools run (ADR 0150, ADR 0152, to-be 33 §6), the host's vocabulary (to-be 05), managed files and settings (ADR 0011, issue 168), and the catalogue's shape (as-is 10).

Documents.

What it had to settle, and where each landed. (Graduated 2026-10-02.)

  1. A module is one managed thing, software or not, and every module may serve tools — or ADR 0040 already says this and only its examples are narrow.
  2. One tool executor per node, host-side, module-agnostic; which records it supersedes and in what form the console continues.
  3. Per-node variation is a setting rendered into the file or a kept region, never an edit — ADR 0011 stands — and issue 168 is fixed before any environment module carries a setting.
  4. User-scoped units on the host's service shape, and a service-manager seat whose holder serves the tools about them.
  5. The operator account stated on every node; today no node record carries one.
  6. The seats of the environment and their verbs, one record per seat, slowly, because a seat's tools bind every future holder.
  7. Where the environment modules live: this catalogue, or one of their own as the media chain has; and whether a third-party organisation's tooling belongs in a public catalogue at all.