diff --git a/04-ISSUES/218-a-mesh-seat-is-answered-by-a-module-that-does-not-hold-it/00-report.md b/04-ISSUES/218-a-mesh-seat-is-answered-by-a-module-that-does-not-hold-it/00-report.md new file mode 100644 index 0000000..2847c5e --- /dev/null +++ b/04-ISSUES/218-a-mesh-seat-is-answered-by-a-module-that-does-not-hold-it/00-report.md @@ -0,0 +1,39 @@ +--- +status: open +opened: 2026-10-03 +located-in: [] +fixed-by: +amended-design: +--- + +# 218 — A seat held once for the mesh is answered by a module on a machine that does not hold it + +## What was observed + +2026-10-03. Asked which databases the mesh's store holds, `mesh-store.databases` answered from the +postgres on one machine with that machine's application databases; the controller's own database +lives on the postgres of the other machine, which the controller's records name as the seat's one +holder: + +``` +mesh-store scope: mesh delivers: postgres-database holders: [ {node: , module: postgres} ] +``` + +The discovery console, which reads what answers on the bus ([ADR 0197](../../02-DECISIONS/0197-every-tool-announces-itself-on-the-bus-in-the-nats-services-protocol.md)), +shows the same seat announced from **both** machines running postgres. + +## Why it matters beyond this instance + +A seat held once for the mesh promises one answerer: the role's holder. A module that implements a +seat's verbs on every machine it runs on, and is let serve them on each, turns "the mesh's store" into +"whichever postgres replied first" — a read against the wrong database that looks like a right one, +and a write would be worse. Every mesh-scoped seat whose implementing module runs on more than one +machine has this shape. + +## Where to look + +Whether the runtime serves a seat's verbs where its module merely *claims* the seat rather than where +the mesh made it the holder ([ADR 0159](../../02-DECISIONS/0159-a-tool-call-names-the-machine-and-a-holder-serves-its-seats-verbs.md), +[ADR 0160](../../02-DECISIONS/0160-the-mesh-issues-an-assignments-subjects-and-a-runtime-serves-what-it-is-issued.md)): +the membership the controller issues each assignment, and what the runtime admits from it. A check: +a mesh-scoped seat's verbs are served by exactly the holder the records name, on every machine.