A capability may carry a value, and adding one is not free
Recorded while building the seat detector. A capability is a named fact about a machine: its presence gates an assignment and its detail can carry a value, so "can this run here" and "what should it be configured as" are the same fact read two ways. A verdict has always had a detail beside its yes or no, so panel: oled needs no new concept. Two things that keep the set honest, both worth writing down before anyone adds the fiftieth capability. It must be detected and the detector must say how it knows -- so nobody can add one they cannot check, which is the whole of issue 007. And detectors ship inside the host, which is one static binary, so adding a capability means shipping a new host everywhere. That argues for a small general vocabulary rather than a specific one.
This commit is contained in:
@@ -151,6 +151,26 @@ differ and the message should say which:
|
||||
- *i3 needs xorg, which is not assigned here* — assign it.
|
||||
- *this machine has no seat* — wrong machine; nothing can be installed to fix it.
|
||||
|
||||
### A capability may carry a value, and that is not a new idea
|
||||
|
||||
A capability is a named fact about a machine, **detected and never assumed**. Its presence gates
|
||||
an assignment; its detail can also carry a value — `seat: card1-DP-1`, `panel: oled`, an
|
||||
architecture, an amount of memory. Nothing new is needed for that: a verdict has always had a
|
||||
detail beside its yes or no.
|
||||
|
||||
So *can this run here* and *what should it be configured as* are answered by the same fact, read
|
||||
two ways. A module that must not be assigned without an OLED panel and one that dims itself
|
||||
differently on one are reading the same line.
|
||||
|
||||
**What keeps the set from sprawling is the cost of adding one.** A capability must be detected,
|
||||
and the detector must say how it knows — so nobody can add one they cannot check, which is the
|
||||
whole of [04-ISSUES/007](../04-ISSUES/007-an-installed-package-is-not-a-capability/00-report.md):
|
||||
an installed package was treated as a capability and a node was assigned work it could not do.
|
||||
|
||||
**And detectors ship inside the host**, which is one statically linked binary. Adding a capability
|
||||
means shipping a new host to every node that needs it. That is a real cost and it argues for
|
||||
keeping the vocabulary small and general — `seat`, not `has-nvidia-with-two-outputs`.
|
||||
|
||||
## "Flavor" is retired
|
||||
|
||||
It was carrying three unrelated meanings — variants of a thing, a subset of one module a node
|
||||
|
||||
Reference in New Issue
Block a user