From 5fd522b8da54e69575c8e07662f2a8b88f40f9fb Mon Sep 17 00:00:00 2001 From: jochen Date: Sat, 29 Aug 2026 14:22:29 +0200 Subject: [PATCH] A node is a machine; the session is a feature of it Correcting an overstatement from the previous commit, where I had written that a node IS a conversation. It is not. A node is a machine inside the mesh, and the session is one of the things running on it -- like the host, like any workload. That also dissolves the conflict I flagged as unresolved rather than needing anyone to decide it. 0001 says a node does not authenticate to a model provider, agents do. Still true: the session authenticates, and the session is not the machine. The node does not think, something on the node does. I had manufactured the contradiction by promoting a feature into an identity. 0001's summary row is corrected the same way, and says explicitly that neither the node's session nor a hired worker makes the node itself a thinking thing -- both run on a machine, which is what leaves that line untouched. --- .../0001-mesh-brokers-nodes-host-agents-think.md | 10 +++++++--- 02-DECISIONS/0004-a-node-and-how-it-joins.md | 16 ++++++++++------ 2 files changed, 17 insertions(+), 9 deletions(-) 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.