ADR 0272: §4 as built after the confirmation review, ADR 0266 linked now it is merged
An ordinary line meets the generic verb's reading forms and never a terminal-only command (node account and node agent-account by ADR 0266, token, operator, a secret's export); a terminal line drops ADR 0266's served mark, so it reads as the terminal. How it is checked says the withholding tests search base64 too and fail when what they guard goes, and the control-node refusal is tested through the acts.
This commit is contained in:
+22
-12
@@ -17,7 +17,7 @@ Some changes to the mesh are made **at the controller's terminal** only:
|
||||
([issue 339](../04-ISSUES/339-a-verb-can-place-a-directory-at-the-machines-own/00-report.md));
|
||||
- the agent module's managed settings, tool servers and shared text
|
||||
([issue 340](../04-ISSUES/340-an-agent-can-plant-a-hook-in-every-agent-session-on-the-mesh/00-report.md));
|
||||
- a node's agent account (ADR 0266, hq pull request 225, not yet merged), typed as
|
||||
- a node's agent account ([ADR 0266](0266-on-the-control-node-agents-run-under-an-account-of-their-own-that-cannot-become-root-without-a-person.md)), typed as
|
||||
`mesh-controller node agent-account <node> <account>`.
|
||||
|
||||
In the controller's code "the terminal" is a negative: a command line that did not come through a verb. The
|
||||
@@ -157,16 +157,20 @@ A line from node N, vouched as account A, **runs as the controller's terminal**
|
||||
judgement, heard within ADR 0266 §4's fifteen minutes, says it cannot become root without a person.
|
||||
|
||||
The controller runs it as it runs a verb's line, in a fresh process of its own binary with its own environment, but
|
||||
without `MESH_VERB`, and records the caller as *A through mesh-cli on N*.
|
||||
without `MESH_VERB` and without the mark ADR 0266 puts on everything the serving controller starts, and records the
|
||||
caller as *A through mesh-cli on N*. So the line reads as the terminal wherever the controller asks whether a
|
||||
command was started there.
|
||||
|
||||
**Which node is the control-node does not follow a verb.** Whoever chooses where the controller's module runs
|
||||
chooses the terminal, so the module is assigned and unassigned at the controller's terminal only; `assign` and
|
||||
`unassign` naming it through a verb are refused with the reason.
|
||||
|
||||
**A line from N's operator account that is not the terminal is an ordinary call.** A `settings` line is composed as
|
||||
the settings verb composes its own and meets that verb's refusals, the terminal-only keys among them; any other
|
||||
line goes through exactly what the generic `command` verb does with a line: its refusals today, and its list of
|
||||
reads once ADR 0266 §7 builds one. It runs with `MESH_VERB=mesh-cli`, so every terminal-only change is refused
|
||||
the settings verb composes its own and meets that verb's refusals, the terminal-only keys among them. Any other
|
||||
line meets exactly what the generic `command` verb does with a line: only its reading forms run
|
||||
([ADR 0266](0266-on-the-control-node-agents-run-under-an-account-of-their-own-that-cannot-become-root-without-a-person.md) §7), and
|
||||
never a command that is the terminal's alone — `node account` and `node agent-account` above all, which ADR 0266
|
||||
makes terminal-only, `token`, `operator`, a secret's accept, recover or export. It runs with `MESH_VERB=mesh-cli`, so every terminal-only change is refused
|
||||
with the controller's own reason. The answer adds one sentence saying why this account on this node is not the
|
||||
terminal: the node's agents may run as its operator. That account already reaches the mesh's verbs through the
|
||||
mesh MCP server, so this widens nothing.
|
||||
@@ -269,15 +273,20 @@ Each claim, and what holds it:
|
||||
- **Another namespace is refused, and one account cannot hold the socket**: the node-engine's tests refuse a peer
|
||||
whose namespaces differ, and answer a second line of a busy account *busy* at once while the first is still
|
||||
asked.
|
||||
- **An ordinary `settings` line takes the settings verb's path**: the controller's test composes each form as the
|
||||
verb does and refuses any other; an ordinary repair without `--why` meets the generic verb's refusal.
|
||||
- **The control-node does not follow a verb**: the controller's test refuses assigning or unassigning its module
|
||||
with `MESH_VERB` set, and lets the terminal do it.
|
||||
- **An ordinary `settings` line takes the settings verb's path, and every other ordinary line only the generic verb's
|
||||
reads**: the controller's tests compose each settings form as the verb does and refuse any other, and refuse
|
||||
`node account`, `node agent-account`, `token issue`, `secret export`, `operator` and `assign` from an ordinary
|
||||
line, each running nothing (they fail on the commit before ADR 0266's checks were applied to it).
|
||||
- **The control-node does not follow a verb**: the controller's test asks the `assign` and `unassign` acts
|
||||
themselves with `MESH_VERB` set and has both refused before any store is touched; with the refusal taken out of
|
||||
the acts, the test fails.
|
||||
- **A line is never lost, and never said as nothing having run when it may have**: the controller's test follows a
|
||||
line that outlasts the answer window to its answer, over a bus, and refuses a follow by another account or
|
||||
node; the node-engine's tests follow a running line to its answer, say *not known* with the call when no
|
||||
answer comes, and say *nothing ran* only of a request nobody took. A line's record keeps neither its line's
|
||||
values nor its answer on the bus, and `calls` never shows its answer (mesh-controller `internal/link`).
|
||||
answer comes or the request fails after it may have been delivered, and say *nothing ran* only of a request the
|
||||
link knows it never asked. A line's record keeps neither its line's values nor its answer on the bus, and
|
||||
`calls` never shows its answer; those tests search both the text and the base64 JSON writes bytes in, and each
|
||||
fails when the withholding it guards is taken out (mesh-controller `internal/link`, `cmd/mesh-controller`).
|
||||
- **The `MESH_VERB` refusal in `mesh-cli` is a courtesy**: its test holds that the program refuses before asking;
|
||||
nothing rests on it, since the controller judges the vouched account whatever the program does.
|
||||
- **The module places one file**: the catalogue's test holds `mesh-cli` to one archive resource unpacking one
|
||||
@@ -308,4 +317,5 @@ Each claim, and what holds it:
|
||||
- [ADR 0267](0267-an-artifact-is-rebuilt-only-when-its-build-source-changes-and-a-module-moves-only-along-build-dependencies-on-artifacts.md):
|
||||
a module builds from its own source.
|
||||
- [ADR 0234](0234-the-mesh-holds-a-conversation-with-its-operator.md): proof and assurance.
|
||||
- ADR 0266 (hq pull request 225) and ADR 0259 (hq pull request 211): not yet merged, so named without links.
|
||||
- [ADR 0266](0266-on-the-control-node-agents-run-under-an-account-of-their-own-that-cannot-become-root-without-a-person.md): agents under an account of their own, and what is terminal-only.
|
||||
- ADR 0259 (hq pull request 211): not yet merged, so named without a link.
|
||||
|
||||
Reference in New Issue
Block a user