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.
87 lines
5.7 KiB
Markdown
87 lines
5.7 KiB
Markdown
---
|
|
status: graduated
|
|
initiated: 2026-10-02
|
|
touches:
|
|
- 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
|
|
became:
|
|
- 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](../../03-DESIGN/01-to-be/29-a-node-has-operator-accounts.md) 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](../../02-DECISIONS/0040-what-a-module-is.md)),
|
|
seats and their contracts ([ADR 0132](../../02-DECISIONS/0132-a-seat-carries-the-tools-its-holder-must-serve.md)),
|
|
where a module's tools run ([ADR 0150](../../02-DECISIONS/0150-a-modules-own-code-runs-as-supervised-processes-under-one-account.md),
|
|
[ADR 0152](../../02-DECISIONS/0152-the-operators-surface-is-a-module-the-console.md),
|
|
[to-be 33](../../03-DESIGN/01-to-be/33-the-tools-the-mesh-answers.md) §6), the host's vocabulary
|
|
([to-be 05](../../03-DESIGN/01-to-be/05-the-node-host.md)), managed files and settings
|
|
([ADR 0011](../../02-DECISIONS/0011-managed-files-are-generated-never-edited.md),
|
|
[issue 168](../../04-ISSUES/168-a-setting-reaches-every-file-and-contribution/00-report.md)),
|
|
and the catalogue's shape ([as-is 10](../../03-DESIGN/00-as-is/10-module-catalogue.md)).
|
|
|
|
**Documents.**
|
|
|
|
- [01 — The intended behaviour](01-the-intended-behaviour.md): the operator's wish, written as
|
|
how the mesh behaves, in the mesh's own words.
|
|
- [02 — What exists, and what is missing](02-what-exists-and-what-is-missing.md): the
|
|
predecessor's desktop modules measured; which records already say what is wanted; the gaps.
|
|
- [03 — One tool executor per node](03-one-tool-executor-per-node.md): where a module's tools
|
|
run. The direction the operator set, the evidence for it, and what it supersedes.
|
|
- [04 — The seats of the environment](04-the-seats-of-the-environment.md): the roles a machine
|
|
has once, their candidate contracts, and what gates each.
|
|
|
|
**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.
|