Assigning networking is not being on the network

N1 assigned the module and stopped, and the mesh wrote a names file with no names
in it. That is correct behaviour, not a bug: a node with no address on the
network has no name, because a name resolving to nothing is worse than no name —
a connection to an address that does not answer hangs, where a name that does not
resolve fails at once and says so.

The missing act is placement. Assigning installs the module that answers how
machines reach each other; placing says where this machine is on the resulting
network. The four-machine test did both and this one did neither, which is how
the distinction stayed invisible.

Claude-Session: https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
This commit is contained in:
2026-09-14 22:26:04 +02:00
parent d0d56782a0
commit 6b482ee7dc
2 changed files with 42 additions and 21 deletions
+35 -21
View File
@@ -1,7 +1,7 @@
{
"scenario": "one-node-mesh",
"established": 14,
"of": 18,
"established": 11,
"of": 20,
"steps": [
{
"code": "R1",
@@ -56,71 +56,85 @@
"code": "P1",
"title": "the mesh builds the shared base from source",
"status": "pass",
"seconds": 84,
"seconds": 78,
"why": ""
},
{
"code": "P2",
"title": "the mesh builds and runs a store of its own",
"status": "pass",
"seconds": 40,
"seconds": 50,
"why": ""
},
{
"code": "P3",
"title": "the mesh builds and runs its own catalogue",
"status": "pass",
"seconds": 34,
"seconds": 25,
"why": ""
},
{
"code": "P4",
"title": "the mesh rebuilds its own control plane from source",
"status": "pass",
"seconds": 36,
"seconds": 37,
"why": ""
},
{
"code": "N1",
"title": "the mesh puts itself on a private network, and its machine has a name",
"status": "fail",
"seconds": 125,
"why": "networking is assigned and no machine has a name:\n# Generated by the mesh. Do not edit — this file is replaced whenever a node\n# joins or leaves, and an edit would survive until then and vanish.\n\n127.0.0.1\tlocalhost\n::1\t\tlocalhost ip6-localhost ip6-loopback\n127.0.1.1\tanchor\n"
},
{
"code": "U1",
"title": "the mesh builds a module standing on that base",
"status": "pass",
"seconds": 14,
"why": ""
"status": "skip",
"seconds": 0,
"why": "not attempted — N1 (the mesh puts itself on a private network, and its machine has a name) did not succeed"
},
{
"code": "U2",
"title": "the mesh runs a broker for that module to talk to",
"status": "pass",
"seconds": 24,
"why": ""
"status": "skip",
"seconds": 0,
"why": "not attempted — U1 (the mesh builds a module standing on that base) did not succeed"
},
{
"code": "U3",
"title": "the anchor runs the module the mesh built",
"status": "pass",
"seconds": 6,
"why": ""
"status": "skip",
"seconds": 0,
"why": "not attempted — U2 (the mesh runs a broker for that module to talk to) did not succeed"
},
{
"code": "V1",
"title": "the mesh can describe itself, and what it says is true",
"status": "fail",
"seconds": 2,
"why": "the catalogue does not know about mesh-tools:\n{\"modules\":[{\"module\":\"amqp-ping\",\"commit\":\"af1e3afa495bac11e74c2d76cb2cf7a78167f2f6\",\"repository\":\"https://git.novox.be/novox/mesh-catalog.git\",\"path\":\"modules/amqp-ping\"},{\"module\":\"lavinmq\",\"commit\":\"af1e3afa495bac11e74c2d76cb2cf7a78167f2f6\",\"repository\":\"https://git.novox.be/novox/mesh-catalog.git\",\"path\":\"modules/lavinmq\"},{\"module\":\"mesh-control\",\"commit\":\"5062c36fc9efe159aa9706c0ca2c873351ef1ce0\",\"repository\":\"https://git.novox.be/novox/mesh-control.git\",\"path\":\"\"}]}\n"
"title": "the control plane can describe the mesh, and what it says is true",
"status": "skip",
"seconds": 0,
"why": "not attempted — U3 (the anchor runs the module the mesh built) did not succeed"
},
{
"code": "V2",
"title": "the catalogue holds every module this mesh built",
"status": "skip",
"seconds": 0,
"why": "not attempted — V1 (the control plane can describe the mesh, and what it says is true) did not succeed"
},
{
"code": "V3",
"title": "the machine's networking is what the modules asked for",
"status": "skip",
"seconds": 0,
"why": "not attempted — V1 (the mesh can describe itself, and what it says is true) did not succeed"
"why": "not attempted — V1 (the control plane can describe the mesh, and what it says is true) did not succeed"
},
{
"code": "E1",
"title": "a change to a module's source reaches the machine on its own",
"status": "skip",
"seconds": 0,
"why": "not attempted — V2 (the machine's networking is what the modules asked for) did not succeed"
"why": "not attempted — V3 (the machine's networking is what the modules asked for) did not succeed"
},
{
"code": "E2",