ADR 0079: foundation seats are named after their servers; issue 056 resolved

The store and broker were "one per mesh" by convention only. Each foundation module now
claims a mesh-scoped seat named after the server it guards — postgres/mesh-store,
lavinmq/mesh-broker — and the controller's seat is renamed the-controller -> mesh-controller
so all three follow one rule. The resolver refuses a second holder, closing 056. Glossary,
the foundation and installation docs, and the decisions index follow the new name.

https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
This commit is contained in:
2026-09-17 02:15:08 +02:00
parent f70973e222
commit ee7abe0a8e
6 changed files with 87 additions and 7 deletions
@@ -1,9 +1,9 @@
---
status: open
status: resolved
opened: 2026-09-17
located-in: [mesh-controller, mesh-host]
fixed-by:
amended-design:
fixed-by: mesh-catalog + mesh-controller (the foundation modules claim mesh-scoped seats)
amended-design: 02-DECISIONS/0079-the-foundation-seats-are-named-after-their-servers.md
---
# 056 — An adopted module assigned to a second node raises a second server
@@ -40,3 +40,17 @@ for.
controller refuses to place it on a node whose foundation did not raise that container?
- How is "one postgres, one lavinmq" checked, rather than assumed — in the resolver, in `status`, or
in a bed that tries the second assignment and asserts the refusal?
## Resolution (2026-09-17)
The foundation modules now claim a mesh-scoped **seat** named after the server each guards —
`postgres` claims `mesh-store`, `lavinmq` claims `mesh-broker`, and the controller's seat is
renamed `the-controller` → `mesh-controller` so all three follow one convention
([ADR 0079](../../02-DECISIONS/0079-the-foundation-seats-are-named-after-their-servers.md)). The
resolver's `checkClaims` refuses a second holder mesh-wide — the same mechanism that keeps one
hub and one controller — so a second `assign` is a refusal at resolution (*one per mesh*), not a
silent second server.
Checked by `TestAFoundationModuleCannotBeRaisedOnASecondNode` (each foundation module's second
assignment is refused) and by the manifests declaring the seat; the two-node adopted-broker bed
stays green with the seats in place, so the claim does not break single-node adoption.