The broker credential resolves the seat, not the hub (issue 059) #30

Merged
jschoubben merged 1 commits from fix/broker-address-resolves-the-seat into main 2026-09-17 23:12:50 +00:00
Owner

The cross-node broker address is now computed from the right facts (hq issue 059): the credential names the overlay name of the machine holding the mesh-broker seat — wherever that module is assigned — instead of assuming the hub. "On the overlay" means resolved the networking module, not merely holding an address; a portless broker address defaults its port instead of silently disabling the overlay rewrite; and a second hub is refused (ErrNotOneHub is finally returned).

Validated: unit suite green; built-store-cross-node green fresh built from this commit (run 13: mesh-controller 79a9e17, everything else on main) — the joined node's consumers open the store and broker over the overlay.

The cross-node broker address is now computed from the right facts (hq issue 059): the credential names the overlay name of the machine holding the `mesh-broker` seat — wherever that module is assigned — instead of assuming the hub. "On the overlay" means resolved the networking module, not merely holding an address; a portless broker address defaults its port instead of silently disabling the overlay rewrite; and a second hub is refused (`ErrNotOneHub` is finally returned). Validated: unit suite green; built-store-cross-node green fresh built from this commit (run 13: mesh-controller 79a9e17, everything else on main) — the joined node's consumers open the store and broker over the overlay.
jschoubben added 1 commit 2026-09-17 23:12:45 +00:00
An adversarial review of the 055 fix found it encoded the wrong invariants, latent while
every mesh keeps its broker on the hub. Now: the address is the overlay name of the node
ASSIGNED a module claiming the mesh-broker seat (the hub stands in only while nothing holds
the seat — genesis); "on the overlay" is what whereEveryoneIs answers (resolved the
networking module), not "has an address"; a portless genesis address defaults to 5671
instead of silently disabling the path; a second `overlay place --hub` is refused rather
than last-write-wins; and `overlay place` says that earlier credentials keep their old
address. A test now binds the controller's own module.json to its seat, so deleting the
claim fails the suite.

https://claude.ai/code/session_01D6qtiYU3P9jk3pnAXyAFyx
jschoubben merged commit 0b574f3972 into main 2026-09-17 23:12:50 +00:00
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: novox/mesh-controller#30