From e609ccdbfb2c5b9bf7b0100dfb3995e49dbc8cd8 Mon Sep 17 00:00:00 2001 From: jochen Date: Tue, 22 Sep 2026 21:41:58 +0200 Subject: [PATCH] Issue 088: the forge's own address names a port it may not have --- .../00-report.md | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 04-ISSUES/088-the-forges-own-address-names-a-port-it-may-not-have/00-report.md diff --git a/04-ISSUES/088-the-forges-own-address-names-a-port-it-may-not-have/00-report.md b/04-ISSUES/088-the-forges-own-address-names-a-port-it-may-not-have/00-report.md new file mode 100644 index 0000000..4aa2eea --- /dev/null +++ b/04-ISSUES/088-the-forges-own-address-names-a-port-it-may-not-have/00-report.md @@ -0,0 +1,41 @@ +--- +status: open +opened: 2026-09-22 +located-in: [] +fixed-by: +amended-design: +--- + +# 088 — The forge's own address names a port it may not have + +## What was observed + +Found while fixing [issue 085](../085-the-packages-port-given-at-genesis-is-not-a-setting/00-report.md), +2026-09-22, by reading the catalogue rather than by running it. + +The forge's module declares its own address as an environment value on its container, written out +in full with the port in it. Its container publishes its port without fixing the machine side, so +the mesh assigns that side — which is already, today, usually not the number written into the +address. The address is therefore wrong on any node where the assignment differs, and it becomes +wrong for a second reason once a node is given that port as a setting +([ADR 0100](../../02-DECISIONS/0100-a-node-in-use-is-adopted-before-it-is-converged.md)). + +The mesh has the right answer for this: a placeholder that resolves to the port actually in use. +It is substituted in **file** resources only, and this value is in a container's environment map, +where nothing substitutes it. + +## Why it matters beyond this instance + +Two rules of the mesh meet here and neither is enforced. A module may not name a port it does not +control, and what a module is told about an address must come from what the provider serves. Any +module that writes its own address into an environment value has the same hole, and nothing checks +for it: the value is a string like any other, and it is wrong only at runtime, on the node where +the assignment happens to differ. + +## Open questions + +- Should the port placeholder resolve in a container's environment as it does in files, or should + a module that needs its own address be made to carry it in a file? +- Should composition refuse an environment value that names a port the module does not fix, the + way it refuses other claims a module cannot make? +- Which other modules write their own address, with a port, into their environment?