Issue 088: the forge's own address names a port it may not have
This commit is contained in:
@@ -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?
|
||||||
Reference in New Issue
Block a user