Files
hq/04-ISSUES/227-the-photo-apps-admin-client-asks-for-the-port-the-proxy-holds/00-report.md
T
jschoubben bc64c5c187 ADR 0201 → 0202, and three issues from the night it shipped
The derived-value record is renumbered a second time: the key-value-buckets
record took 0201 while this waited to merge, as the bundles record took 0188
before it. Both times free when chosen, taken by the time it landed. cycle.py
caught it; three repositories cite this record, so the number matters.

225 — a provisioner has not been able to read its grant secrets since 01:30,
when a module's own code left its container and the files stayed root's. Four
thousand refusals, each worded as patience, and two consumers unserved. Not
from ADR 0202 or 0189, which landed hours later; dates in the report.

226 — the store's sweep stops at the first reference recorded with an address
and collects nothing. A guard that cannot tell 'I will not ask about this'
from 'it would not answer' stops the wrong amount of work.

227 — the photo app's admin client asks for the port the proxy holds. A module
pinned months behind carries everything its branch gained, the first time
anything makes it move.
2026-10-04 04:33:45 +02:00

1.8 KiB

status, opened, located-in, fixed-by, amended-design
status opened located-in fixed-by amended-design
open 2026-10-04
mesh-catalog modules/photos

227 — The photo app's admin client asks for port 80, which the reverse proxy holds, so it cannot start

What was observed

Applying the control machine, 2026-10-04:

applying "photos.admin-client": starting container photos-admin-client:
  failed to bind host port 0.0.0.0:80/tcp: address already in use

Port 80 on that machine belongs to the reverse proxy (mesh-route-proxy, confirmed with ss), which is the whole arrangement: the proxy holds the public ports and every module is reached through it. A module that publishes 80 itself can never start beside it.

Everything else on the machine applied; this one resource fails every pass.

How it surfaced

photos had been pinned at a commit from 2026-09-28 and was rebuilt to main on 2026-10-04 — forced by ADR 0202's refusal of its transcribed bucket name. The admin client is one of the changes that came with the rest of main. The rebuild did not create the conflict; it delivered it.

A module pinned months behind carries whatever its branch gained, all at once, the first time something makes it move. That is the cost of a pin, and it is paid in full rather than gradually.

What a fix has to settle

  • Which port the admin client should ask for, or whether it should be reached through the proxy like everything else and publish nothing.
  • Whether a module declaring a port the machine's proxy already holds should be refused when it is composed, rather than failing on the machine every pass. The mesh assigns ports (ADR 0038); a fixed 80 beside a proxy is a statement it could check.