Files
hq/01-RESEARCH/023-a-seat-protocol-that-defines-what-its-holder-owns/00-overview.md
T
jschoubben 8184585213 ADR 0199: a module that answers names declares its zone, and a node's hosts file is one module's
The per-node resolvers 0194 retires held two kinds of names that are neither nodes nor routes: the
lab's scenario machines and an operator's own lines. A zone a module declares is forwarded by the
mesh's resolver to that module; /etc/hosts is held per node through node-hosts-file, the operator's
lines in its kept region. Research 023 parks seats that define what their holder owns.
2026-10-03 23:19:36 +02:00

2.0 KiB
Raw Blame History

status, initiated, touches
status initiated touches
active 2026-10-03
the seats
the seat protocol
the controller's ownership check
03-DESIGN/01-to-be/26-the-seats.md

023 — A seat protocol that defines what its holder owns

What is investigated

A seat is a definition — a protocol — and a module occupies it by implementing that protocol. Today the protocol is what the holder accepts, emits and serves (ADR 0118, 0129, 0132): its verbs, as MCP tool definitions. This asks whether the protocol should also name the files and directories the holder owns, so that occupying the seat means owning them: node-resolver-config owns /etc/resolv.conf, node-hosts-file owns /etc/hosts, the intrusion prevention owns its jail file.

The direction is the protocol's, not the holder's: the seat states what any holder must own; a module that wants the seat must declare those paths among its resources, or the controller refuses the claim as not implementing the seat. Two seats may not name one path.

Why

Who owns a singular file is today answered by reading every manifest, and enforced only after the fact, when two modules on one machine both declare the same path. The question which module owns /etc/resolv.conf? came up on 2026-10-03 with no place to look it up. A seat that names the path answers it from the seat table, before any module is written, and makes "implements the seat" checkable.

What it touches

  • The seat definition and its table (ADR 0122) — a new part of the protocol.
  • The controller's ownership check (checkResources), which already refuses two modules owning one path.
  • Every node seat that is really about a file: node-resolver-config, node-hosts-file (ADR 0199), node-intrusion-prevention, node-packet-filter.

Raised by the operator during the resolver work of ADRs 0194–0199 and parked there so that work was not widened by it.