From bf1f67a485f31675184fd511aa69578835bb6214 Mon Sep 17 00:00:00 2001 From: jochen Date: Tue, 15 Sep 2026 12:59:00 +0200 Subject: [PATCH] listens names the port the software uses; serves is the mesh's to fill Over-corrected: taking the port out of listens as well as serves made the module declare it listens on nothing, and the parser said so. ADR 0038 splits it. A module names the port its own software listens on, because that is a fact about the software and it knows it. The mesh assigns the machine-side number, because only the mesh knows what else is on the machine, and it is the mesh that fills the assigned number into serves so a consumer is told one number rather than three that agree by luck. So what was wrong was writing a port into serves, not into listens. Claude-Session: https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx --- modules/showcase/module.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/showcase/module.json b/modules/showcase/module.json index e188ac2..e2d2711 100644 --- a/modules/showcase/module.json +++ b/modules/showcase/module.json @@ -18,8 +18,8 @@ "consumes": ["module.showcase.greeted"], "listens": [ - { "protocol": "tcp", "from": "mesh", - "why": "the showcase daemon answers here, so the mesh can reach it" } + { "port": 8080, "protocol": "tcp", "from": "mesh", + "why": "the port the daemon itself listens on. The mesh assigns the machine-side number and tells consumers that one (ADR 0038)" } ], "build": {