diff --git a/02-DECISIONS/0001-mesh-brokers-nodes-host-agents-think.md b/02-DECISIONS/0001-mesh-brokers-nodes-host-agents-think.md index dfb74fc..546301e 100644 --- a/02-DECISIONS/0001-mesh-brokers-nodes-host-agents-think.md +++ b/02-DECISIONS/0001-mesh-brokers-nodes-host-agents-think.md @@ -81,15 +81,19 @@ Four layers. Naming them honestly is worth more than the word on the tin: | **machines are linked by a private network** | and every machine reaches every other over it | | **one node holds knowledge of all of them** | the control plane, and only it | | **modules are how anything is built and delivered** | this *is* the CI/CD, not something beside it ([ADR 0010](0010-delivery.md)) | -| **every node is a conversation you can address** | it holds a session, it remembers, and any node can message any other ([ADR 0004](0004-a-node-and-how-it-joins.md)) | +| **every node runs a session you can message** | a feature of the node, remembering across callers; any node can message any other ([ADR 0004](0004-a-node-and-how-it-joins.md)) | | **workers are hired onto nodes to do tasks** | employees, with a lifecycle — a different thing from the row above ([ADR 0003](0003-agents-are-persistent-employees.md)) | **The last two rows are not the same thing and the vocabulary of one does not describe the other.** -A node's own session belongs to the node: nobody hires it, it holds no tasks, it is never -reassigned, and it is gone when the node leaves. A worker is an employee — named, hired, drained, +A node's session comes with the machine: nobody hires it, it holds no tasks, it is never +reassigned, and it goes when the node leaves. A worker is an employee — named, hired, drained, retired, movable. They are built from the same parts and run on entirely different terms, and collapsing them is how the employee vocabulary ends up stretched over something it does not fit. +**Neither makes the node itself a thinking thing.** A node is a machine; both of these run *on* +one, which is why *a node does not authenticate to a model provider, agents do* is unaffected by +either. + **Where the value is** is that both can reach across the whole set: a shell, a service, a file, or simply a question to another node. Not machines that can be configured centrally, which is ordinary, but a set of machines that can be worked across as though they were one. diff --git a/02-DECISIONS/0004-a-node-and-how-it-joins.md b/02-DECISIONS/0004-a-node-and-how-it-joins.md index c8731e5..e5a1b7c 100644 --- a/02-DECISIONS/0004-a-node-and-how-it-joins.md +++ b/02-DECISIONS/0004-a-node-and-how-it-joins.md @@ -28,15 +28,19 @@ asked to do — and that belongs in the host's profile rather than in the defini because its absence is every node in the ordinary disconnected situation at once. An episodic host on a phone is that situation more often. Neither needed a new mechanism. -### A node is also a conversation +### A node runs one agent session *Written 2026-08-29. It runs on every node today and appeared in no record, which is how something deliberate comes to look accidental.* -**A node holds one session, permanently, and it is part of what the node is** — not a program -installed on it. Anything in the mesh can send it a message; it replies; and it remembers. What it -was asked ten minutes ago is still there next week, alongside what everything else asked in -between, the same way both sides of any conversation remember it. +**A node is a machine. The session is a feature of it** — one of the things running there, like the +host, like any workload. The node does not think; something on the node does. Which is why +[ADR 0001](0001-mesh-brokers-nodes-host-agents-think.md)'s *a node does not authenticate to a model +provider, agents do* holds unchanged: the session authenticates, and it is not the machine. + +**It is permanent, and it remembers.** Anything in the mesh can send it a message; it replies; and +what it was asked ten minutes ago is still there next week, alongside what everything else asked in +between — the same way both sides of any conversation remember it. Its system prompt is the node's **engram** — what makes one node's replies recognisably its own rather than generic. @@ -48,7 +52,7 @@ be answered by going and looking: *what is in our forge*, not only *what is your There is no second transport and nothing is dialled. **Any node can message any node, and this is the one part of the system that is genuinely a mesh** -— symmetric, with no centre. A node that is asked something it does not know can ask another, and +— symmetric, with no centre. A node that is asked something it does not have can ask another, and how it passes the question on is its own business: it may say who wants to know, or simply ask. A person relaying a question makes the same choice, and it follows from the engram rather than from a message format.