a73x

eab8df07

docs: the agent aspires to kubelet

a73x   2026-08-11 12:17

Commit message
docs: the agent aspires to kubelet

The direction was already half-taken — the reconcile engine took kubelet's
shape deliberately, and the Provisioner seam came out CRI-shaped because the
same forces shaped it. Naming the aspiration makes the remaining moves
cheaper: capabilities a backend states about itself, allocatable as the quota
vocabulary, static pods as the serverless design, and a standing answer to
every future 'should this be a plugin protocol' conversation: not until a
foreign backend exists.

docs/decisions.md
Old New
@@ -120,3 +120,21 @@ Agents trust the server's self-signed QUIC cert by fingerprint from the join
120 blob—not by CA path, not by expiry. Instead of a CA hierarchy or expiring 120 blob—not by CA path, not by expiry. Instead of a CA hierarchy or expiring
121 trust. An expired cert can never brick a fleet; rotation is deliberate hygiene, 121 trust. An expired cert can never brick a fleet; rotation is deliberate hygiene,
122 not an emergency. Details in [cert-rotation.md](cert-rotation.md). 122 not an emergency. Details in [cert-rotation.md](cert-rotation.md).
123
124 ### The agent aspires to kubelet
125
126 The eitri agent is deliberately kubelet-shaped and stays that way on purpose:
127 level-triggered reconcile with admission and per-VM workers; a small
128 runtime-agnostic Provisioner seam in the CRI mold, where cloud-hypervisor and
129 Virtualization.framework are two runtimes behind one set of verbs; capacity
130 reported against a user-declared quota the way a node reports capacity against
131 allocatable; and, when a host runs with no control plane, VMs from local
132 manifests that a later join adopts — kubelet's static pods. Instead of
133 inventing a new node-agent shape: a decade of prior art already made these
134 decisions, in public, under load.
135
136 Two disciplines ride the aspiration. The Provisioner seam stays in-process
137 until a genuinely foreign backend wants in — a versioned plugin wire is a
138 binding point, and this repo has already paid once for building a binding
139 point before its parties existed. And the deploy smoke is the seam's
140 conformance suite: a Provisioner is whatever passes it.