Design 58 and 36: cite ADR 0266's ways to root, and make acceptance tests 7 and 9 and the nox glossary entry agree with ADR 0411, 0412 and 0414 (review round 1)
mesh/merge-gate head 0dc8cab1781b merged into trunk 375e77690b8a — pass: the change touches no module of the mesh's graph
mesh/repo-check head 0dc8cab1781b merged into trunk 375e77690b8a — pass: its merge-check.sh passed
mesh/delivery delivered

This commit is contained in:
2026-10-17 09:40:48 +00:00
parent 98b731d5d1
commit 0dc8cab178
3 changed files with 9 additions and 8 deletions
+2 -2
View File
@@ -626,8 +626,8 @@ asking, never the act. **Decided by** ADR 0152, 0175, 0234, 0259, 0272, 0383, 03
line as the **controller's terminal** or as an ordinary call line as the **controller's terminal** or as an ordinary call
(ADR 0272). (ADR 0272).
- **nox** — `mesh-cli`'s alias, in interactive zsh only. A script, `sudo` and a document meant to work everywhere - **nox** — `mesh-cli`'s alias, in interactive zsh only. A script, `sudo` and a document meant to work everywhere
say `mesh-cli`. The operator also calls the mesh itself *nox mesh*; on this page and in the records *nox* is the say `mesh-cli`. The operator also calls the mesh itself *nox mesh*. *nox* is also the agent (ADR 0414 §7): see
alias alone. It is the one command the operator types: every line the mesh addresses to the operator — a [Homonyms](#homonyms), and say which is meant. It is the one command the operator types: every line the mesh addresses to the operator — a
condition's words, a verb's answer, a README, a design — names a `nox` line, never a daemon's (the controller's condition's words, a verb's answer, a README, a design — names a `nox` line, never a daemon's (the controller's
or the node-engine's binary followed by a command), which `words.py` and the catalogue's check refuse or the node-engine's binary followed by a command), which `words.py` and the catalogue's check refuse
(ADR 0272, (ADR 0272,
@@ -326,7 +326,7 @@ is empty, so nothing changes there, though a login `nox` exists for the modules
**What the module declares.** **What the module declares.**
- No login. The mesh makes the agent's machine account (home, own group, no password) from the identity, and the - No login. The mesh makes the agent's machine account (home, own group, no password) from the identity, and the
node-engine judges on every look that it cannot become root without a person, by the ways ADR 0266 §3 lists. node-engine judges on every look that it cannot become root without a person, by the ways ADR 0266 §12 to §17 list.
It detects those ways and no others; it prevents nothing. The `user` resource named by `agent-account`, It detects those ways and no others; it prevents nothing. The `user` resource named by `agent-account`,
which this module declared until ADR 0411, goes. which this module declared until ADR 0411, goes.
- `~/.claude` under that account's home, owned by it. - `~/.claude` under that account's home, owned by it.
@@ -127,7 +127,7 @@ An identity's login on one machine is its **machine account**. The controller co
identity present on a machine into that machine's declaration, and the node-engine applies it with its `user` identity present on a machine into that machine's declaration, and the node-engine applies it with its `user`
resource. A login that exists is adopted under its name, uid and home; the mesh never renames or deletes one. An resource. A login that exists is adopted under its name, uid and home; the mesh never renames or deletes one. An
agent's machine account has its own home and group, no password, no root group and no sudo rule, and the node-engine agent's machine account has its own home and group, no password, no root group and no sudo rule, and the node-engine
judges on every look that it cannot become root without a person (ADR 0266 §3). No module declares a login for a judges on every look that it cannot become root without a person, by the ways ADR 0266 §12 to §17 list. No module declares a login for a
person or an agent: claude-code's `agent-account` resource goes, and the catalogue's check refuses a manifest that person or an agent: claude-code's `agent-account` resource goes, and the catalogue's check refuses a manifest that
declares one. The node record's operator account and agent account are read from the identities, no longer stated declares one. The node record's operator account and agent account are read from the identities, no longer stated
at the controller's terminal or in the mesh-config snapshot; the machine facts `account`, `agent-account` and their at the controller's terminal or in the mesh-config snapshot; the machine facts `account`, `agent-account` and their
@@ -256,12 +256,13 @@ From research 057 (ADR 0411 to ADR 0414):
6. The identity seat lists `jochen` and `nox` with their machines, kept logins and novox's agent account mark; a 6. The identity seat lists `jochen` and `nox` with their machines, kept logins and novox's agent account mark; a
create or a presence change by any caller but the operator's Approve is refused. create or a presence change by any caller but the operator's Approve is refused.
7. On ace, g14 and shanks a login `nox` exists; on novox the login `nox` is adopted with its uid and home unchanged; 7. On ace, g14 and shanks a login `nox` exists; on novox the login `nox` is adopted with its uid and home unchanged;
on all four the node-engine judges `nox` unable to become root, and the self-check raises `agent-can-become-root` on all four the node-engine judges `nox` unable to become root; a login `nox` given a sudo rule in a test is left
for it on a machine that marks no agent account too; the operator's logins `ace`, `jochen` and `jochens` are unaltered and the self-check raises `agent-can-become-root` for it, on a machine that marks no agent account too;
the operator's logins `ace`, `jochen` and `jochens` are
unchanged. unchanged.
8. No manifest in the catalogue declares a login for a person or an agent; the catalogue's check refuses one. 8. No manifest in the catalogue declares a login for a person or an agent; the catalogue's check refuses one.
9. For every machine, the declaration before and after differs only in the machine accounts' `user` resources (now 9. For every machine, the declaration before and after differs, for the modules not set to run for an identity, only
the controller's, and `nox` added on ace, g14 and shanks); claude-code on novox, run for `nox`, places the same in the machine accounts' `user` resources (now the controller's, and `nox` added on ace, g14 and shanks); claude-code on novox, run for `nox`, places the same
files in the same home; on ace, g14 and shanks the guard stays off and the operator's sessions keep the mesh's tools. files in the same home; on ace, g14 and shanks the guard stays off and the operator's sessions keep the mesh's tools.
10. A session started for `nox` on novox gets the agent's home configuration and one started for `jochen` the 10. A session started for `nox` on novox gets the agent's home configuration and one started for `jochen` the
operator's, with no tool call through; a session as `nox` that starts claude-code for `jochen` is refused; with operator's, with no tool call through; a session as `nox` that starts claude-code for `jochen` is refused; with