The operator, 2026-11-09: which module holds a seat is a fact of the mesh's assignments and "it shouldn't be in the glossary"; it is read by one call to the seat that answers it.
What changes.
A new paragraph at the glossary's head states the rule. It names the read: mesh-module-assigner.assignments with seats: true, and node for one machine. Today that answers only the seats held once for the mesh; node seats are a gap, noted on issue 1966.
About 20 entries keep their definition and drop the holder: the seat, upgrade policy, mesh-config, the bus, mesh-module-assigner, mesh-wants, seat holders, mesh-provisioner, mesh-node-enroller, build module, registry seat, artifact sweep, git, condition keeper, hand-act, the-private-network, engine, mail web client, mail reading, knowledge base and issue tracker.
00-META/checks/words_test.go gains the check holders. It refuses a seat "held by" or "claimed by" a named module, a module "holder of" a seat, a module that "holds the seat", and "its holder, the X". It has a fixture test of 9 refused and 5 passing cases, and the checks README gains its row.
Checked locally.go test ./... at the root passes. The new check failed on 20 real lines of the glossary before the rewording.
Open points, noted for later:
The rule could become a decision record with this test as its check.
The check may miss a holder written in parentheses.
The entry "seat holders" names the state of mesh-module-assigner, which the mesh serves today as mesh-delivery-assigner.seat-holders.
The operator, 2026-11-09: which module holds a seat is a fact of the mesh's assignments and "it shouldn't be in the glossary"; it is read by one call to the seat that answers it.
**What changes.**
- A new paragraph at the glossary's head states the rule. It names the read: `mesh-module-assigner.assignments` with `seats: true`, and `node` for one machine. Today that answers only the seats held once for the mesh; node seats are a gap, noted on issue 1966.
- About 20 entries keep their definition and drop the holder: the seat, upgrade policy, mesh-config, the bus, mesh-module-assigner, mesh-wants, seat holders, mesh-provisioner, mesh-node-enroller, build module, registry seat, artifact sweep, git, condition keeper, hand-act, the-private-network, engine, mail web client, mail reading, knowledge base and issue tracker.
- `00-META/checks/words_test.go` gains the check `holders`. It refuses a seat "held by" or "claimed by" a named module, a module "holder of" a seat, a module that "holds the seat", and "its holder, the X". It has a fixture test of 9 refused and 5 passing cases, and the checks README gains its row.
**Checked locally.** `go test ./...` at the root passes. The new check failed on 20 real lines of the glossary before the rewording.
**Open points**, noted for later:
- The rule could become a decision record with this test as its check.
- The check may miss a holder written in parentheses.
- The entry "seat holders" names the state of `mesh-module-assigner`, which the mesh serves today as `mesh-delivery-assigner.seat-holders`.
https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Which module holds a seat is a fact of the mesh's assignments, and a copy
in the glossary drifts (the operator, 2026-11-09: "it shouldn't be in the
glossary"). Each entry keeps its definition and drops the holder; the head
says the holder is read with mesh-module-assigner.assignments and seats.
The words test now refuses a seat held or claimed by a named module; it
failed on twenty statements before they were reworded.
Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Deliverynovox/hq@dea6b197c5ba — merged since 2026-11-08T23:21:14Z
Source — source.main moved to novox/hq@e7f090e333. Whether it reached the machines is mesh-delivery-view's, derived from source.main, the wants and the haves.
Transitions
2026-11-08 23:21 (new) → proposed (announced): novox/hq#527's head announced
2026-11-08 23:21 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
2026-11-08 23:21 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under refs/notes/mesh-plan keeps every transition of this change up to its merge: git log --notes=mesh-plan.
<!-- mesh-delivery:view -->
**Delivery** `novox/hq@dea6b197c5ba` — **merged** since 2026-11-08T23:21:14Z
**Source** — source.main moved to novox/hq@e7f090e33302. Whether it reached the machines is `mesh-delivery-view`'s, derived from `source.main`, the wants and the haves.
**Transitions**
- 2026-11-08 23:21 (new) → proposed (announced): novox/hq#527's head announced
- 2026-11-08 23:21 proposed → ready (accepted): a verdict names this commit and the trunk's head as its trunk commit, the gate passed or warned, and the repository's own check did not fail; or the check gates no merge (check-gates-merge false)
- 2026-11-08 23:21 ready → merged (merged): on the trunk its modules follow: merged there
The commit's note under `refs/notes/mesh-plan` keeps every transition of this change up to its merge: `git log --notes=mesh-plan`.
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.
The operator, 2026-11-09: which module holds a seat is a fact of the mesh's assignments and "it shouldn't be in the glossary"; it is read by one call to the seat that answers it.
What changes.
mesh-module-assigner.assignmentswithseats: true, andnodefor one machine. Today that answers only the seats held once for the mesh; node seats are a gap, noted on issue 1966.00-META/checks/words_test.gogains the checkholders. It refuses a seat "held by" or "claimed by" a named module, a module "holder of" a seat, a module that "holds the seat", and "its holder, the X". It has a fixture test of 9 refused and 5 passing cases, and the checks README gains its row.Checked locally.
go test ./...at the root passes. The new check failed on 20 real lines of the glossary before the rewording.Open points, noted for later:
mesh-module-assigner, which the mesh serves today asmesh-delivery-assigner.seat-holders.https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5
Delivery
novox/hq@dea6b197c5ba— merged since 2026-11-08T23:21:14ZSource — source.main moved to novox/hq@e7f090e333. Whether it reached the machines is
mesh-delivery-view's, derived fromsource.main, the wants and the haves.Transitions
The commit's note under
refs/notes/mesh-plankeeps every transition of this change up to its merge:git log --notes=mesh-plan.