ADR 0038 ("the mesh assigns the port, and a module does not care") was proposed 2026-09-01. The machinery already implements it fully — mesh-controller's internal/inventory/ports.go (PortFor, an actual free-port allocator, 20000–29999) and declaration.go's publishedOn already rewrite a bare container port automatically. What was missing was catalogue compliance: issue 091 measured 14 of 46 modules baking a machine-side port into their own shared manifest anyway.
Companion PR in mesh-catalog (#53) fixes 11 of them — the two defensible kinds the issue itself names (foundation ports rewritten per ADR 0100, and unifi's protocol/device-discovery-fixed ports) are left alone.
Accepting the decision now that it's actually enforced, and closing the issue it was blocking. Checks pass (records.py, cycle.py, index.py).
ADR 0038 ("the mesh assigns the port, and a module does not care") was proposed 2026-09-01. The machinery already implements it fully — `mesh-controller`'s `internal/inventory/ports.go` (`PortFor`, an actual free-port allocator, 20000–29999) and `declaration.go`'s `publishedOn` already rewrite a bare container port automatically. What was missing was catalogue compliance: issue 091 measured 14 of 46 modules baking a machine-side port into their own shared manifest anyway.
Companion PR in `mesh-catalog` (#53) fixes 11 of them — the two defensible kinds the issue itself names (foundation ports rewritten per ADR 0100, and `unifi`'s protocol/device-discovery-fixed ports) are left alone.
Accepting the decision now that it's actually enforced, and closing the issue it was blocking. Checks pass (`records.py`, `cycle.py`, `index.py`).
The decision (the mesh assigns a container's machine-side port; a module
says only what it needs) was proposed 2026-09-01, and the machinery
already implements it in full -- internal/inventory/ports.go's PortFor,
declaration.go's publishedOn. What was missing was the catalogue actually
complying: 14 of 46 modules baked a machine-side number into their own
manifest anyway. mesh-catalog PR fixes 11 of them (the two defensible
kinds -- foundation, protocol-fixed -- are left alone, per the issue's own
categories). Accepting the decision now that it's actually enforced, and
closing the issue it was blocking.
Checks pass.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
ADR 0038 ("the mesh assigns the port, and a module does not care") was proposed 2026-09-01. The machinery already implements it fully —
mesh-controller'sinternal/inventory/ports.go(PortFor, an actual free-port allocator, 20000–29999) anddeclaration.go'spublishedOnalready rewrite a bare container port automatically. What was missing was catalogue compliance: issue 091 measured 14 of 46 modules baking a machine-side port into their own shared manifest anyway.Companion PR in
mesh-catalog(#53) fixes 11 of them — the two defensible kinds the issue itself names (foundation ports rewritten per ADR 0100, andunifi's protocol/device-discovery-fixed ports) are left alone.Accepting the decision now that it's actually enforced, and closing the issue it was blocking. Checks pass (
records.py,cycle.py,index.py).