The predecessor is retired on every node and what it still owned on the two workstations — some thirty modules of dotfiles, user units and /etc files — is owned by nothing. To-be 29 covers one directory under the home; the operator wants the whole machine, system folders and home alike, as modules: one default configuration each, varied per node by settings or a kept region, never an edit; roles the machine has once as node-scoped seats with tool contracts; the graphical stack gated by a capability so the same catalogue serves the servers. Four documents: the intended behaviour in the mesh's words; the predecessor's desktop measured (34 modules, one with 88 files, 4 flavors and ~90 theme variables) against what the records already give and what is missing (the account is empty on every node, no user-scoped units, settings leak, tools run in a container per module per node); the direction the operator set for where tools run — one executor per node, host-side, module-agnostic, the console renamed and moved out of its container, superseding 0047/0150 for tools; and the candidate seats of the environment with first verbs, the shell first.
81 lines
5.2 KiB
Markdown
81 lines
5.2 KiB
Markdown
---
|
|
status: active
|
|
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: []
|
|
---
|
|
|
|
# 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 this must settle before it graduates.**
|
|
|
|
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.
|