Narrow ADR 0287's claimant rule to any seat naming the path, and correct two facts the review found
This commit is contained in:
@@ -264,18 +264,22 @@ is compiled with the set and never stored, like what it needs, and changing it i
|
||||
|
||||
**Holding the seat means declaring its paths.** A module that claims the seat declares every path it names,
|
||||
as a resource or as a file the mesh renders for it. `CanHold` refuses a claim without them, at registration
|
||||
and at handover, naming the missing paths, beside the verbs it already requires.
|
||||
and at handover, naming the missing paths, beside the verbs it already requires. A seat a module declares
|
||||
for itself is held to the same rule by the registration check that judges what its holder serves.
|
||||
|
||||
**Only a claimant declares a seat's path.** Any other module declaring it is refused at registration, and
|
||||
**Only a claimant declares a seat's path.** A module that claims no seat naming the path, and declares it, is
|
||||
refused at registration, naming the seats that name it, and
|
||||
what the controller generates is refused at composition by the same rule, which is how the controller is
|
||||
held to writing no file a seat's holder owns. Reading the path is access and stays open to every module.
|
||||
|
||||
**One seat per path, with a declared step-back.** Every path has exactly one seat naming it outright. A
|
||||
second seat may name it only *stepping back for* that seat: where the other seat is held on the machine, its
|
||||
holder owns the path, and the stepping-back seat's holder does not declare it there. The uplink steps back
|
||||
holder owns the path, and the stepping-back seat's holder still declares it, but its declaration is not
|
||||
composed on that machine. The uplink steps back
|
||||
for a machine's own resolver this way ([ADR 0247](../../02-DECISIONS/0247-a-machine-with-a-vpn-client-routes-names-by-domain-through-a-resolver-of-its-own.md)),
|
||||
and the collision check reads that from the seat rather than from a case of its own. A module declaring a
|
||||
seat that names a path another seat already names is refused at registration.
|
||||
seat that names a path another seat already names is refused at registration: only the mesh's own seats
|
||||
step back, each by a record.
|
||||
|
||||
**The listing shows each seat's paths**, so the controller's `seats` verb answers who owns a path on a
|
||||
machine: the seat that names it, and that seat's holder there.
|
||||
@@ -339,7 +343,7 @@ checked as their tables say:
|
||||
| A replicated seat has every holder on record and composes on each; a seat held once still refuses a second holder, on record or not; `--add` is refused for it | 0223: resolution and composition tests with two holders on record and a third machine, with two claimants and nothing on record, and on `mesh-store`; a unit test that only `mesh-dns-resolver` is replicated, surviving the store's rows; store tests keeping several holders once each, a handover leaving one, and unassigning one taking only its row. |
|
||||
| A retired seat leaves the set once nothing claims it, from the compiled set and the store's table both | 0220: the closed-set test's count, and the store migration that deletes the row. |
|
||||
| A node seat names only literal absolute paths; every path has one seat naming it outright, and stepping back does not cycle | 0287: a unit test over the compiled set; registration tests refusing a module's seat naming a path at mesh scope, with `${`, or already named by another seat. |
|
||||
| A holder declares every path its seat names, and only a claimant declares one | 0287: `CanHold` tests at registration and handover (declared as a resource, as a rendered file, not at all); a registration test refusing `/etc/hosts` from a module not claiming `node-hostname`; a composition test refusing a generated resource on a seat's path. |
|
||||
| A holder declares every path its seat names, and only a claimant declares one | 0287: `CanHold` tests at registration and handover (declared as a resource, as a rendered file, not at all); a registration test refusing `/etc/hosts` from a module not claiming `node-hostname`, and one accepting the uplink and the resolver both declaring `/etc/resolv.conf`; a composition test refusing a generated resource on a seat's path. |
|
||||
| The uplink's step-back comes from the seat | 0287: the composition tests for the uplink and the resolver on one machine pass with the case in the collision check removed. |
|
||||
| Holdings are derived, and the overview lists every seat | 0118: the `seats` command test, including an unheld seat. |
|
||||
| A build source on the seat records no address; an unheld seat refuses only self-hosted builds | 0111's tests. |
|
||||
|
||||
Reference in New Issue
Block a user