mesh/merge-gate checking again: the gate refused `unknown` because the controller judged with a node-engine validator pinned before mesh-host #117; mesh-co…
mesh/repo-check checking again: the gate refused `unknown` because the controller judged with a node-engine validator pinned before mesh-host #117; mesh-co…
mesh/delivery-group group feat/owned-paths checking: 0 of 2 member(s) ready
mesh/delivery superseded: a newer head of the same pull request
Every directory and archive resource carries `unknown`: move-out for a home folder whose program writes nothing there (the node-engine, delivered in mesh-host #117, moves the rest to ~/.local/state/mesh-moved/<module>/ with a list), module for ~/.ssh and ~/.claude, program elsewhere; `knows` keeps what a program or the operator relies on (powerlevel10k's compiled files, i3's scripts and the asus/g14 drop-ins, dunst's slack rule, betterbird's records, node-env's forge credential, issue 1033). Two shared folders are no longer declared. Each module's README says it. checks/owned holds every manifest to it; checks/sshdir stays while main's merge check runs it (issue 1035). Tests that pin a manifest follow the new key only. Reviewed in three rounds.
40 lines
2.7 KiB
Markdown
40 lines
2.7 KiB
Markdown
# mesh-provisioner
|
|
|
|
Holds the `mesh-provisioner` seat once for the mesh: the provisioner's server (novox/hq ADR 0349 clause 3, design 57
|
|
P4). Go, one binary (`cmd/mesh-provisioner`), served by a runtime of its own on its own bus account (`runs-as`), so
|
|
that its account alone writes the registry. The provisioner client on each node (`node-provisioner`, design 57 P5)
|
|
is the module `mesh-provisioner-client`.
|
|
|
|
## What it keeps
|
|
|
|
- `mesh-provisioner_registry`: which domain answers which kind of placeholder, keyed by the kind (`config`,
|
|
`secret`, `bound` — the provider's own bucket, `<provider-module>_bound`, keyed
|
|
`<node>.<module>.<provision>[.<local>]` (mesh-sdk `go/provider`) — `consumers` — a provider's consumers'
|
|
credentials, asked of the vault by the provider machine's client (novox/hq ADR 0373) — `collected` — and `shell`, `environment` and `contribution`, read as collections of the same
|
|
name (design 57 L1) — and the placement namespaces `dir`, `access`, `port`, `seat`, `machine`). Each
|
|
answer names the owning module and where a client finds the values: a domain's bucket and its key shape
|
|
(placement's is the controller's assignments mirror, whose value carries the provisioner's plan of a module handed
|
|
to it), or a seat's verb asked on request and reply (a secret is never in a bucket). Compiled in
|
|
`registry.go`, written at start and every hour, only where it differs; a kind no domain answers is deleted.
|
|
- `mesh-provisioner_needs`: what each module on each node needs, `<node>.<module>.<kind>.<name>`.
|
|
- `mesh-provisioner_applied`: what is applied where, `<node>.<module>`.
|
|
- `mesh-provisioner_collect`: the items of every collection, `<node>.<collection>.<contributor>`, the collection
|
|
with a character a key's token cannot hold written `=<hex>` (`shell=3Azsh=3Anormal` is `shell:zsh:normal`), and
|
|
read back by its name.
|
|
|
|
The last three are written by each node's provisioner client for its own node's keys alone: the controller grants
|
|
the client `<node>.>` of each and nothing wider (mesh-controller `internal/broker/provisioner.go`), and a provider
|
|
reads the needs without writing them. This module writes only the registry.
|
|
|
|
## The verb
|
|
|
|
`mesh-provisioner.provisioning` with `what` `registry` (the default), `needs`, `applied` or `collect`, narrowed by
|
|
`node` and `module` (for `collect`, the contributor) and, for `collect`, `collection`. Reads only. A key out of its
|
|
bucket's shape is said in the answer, never dropped quietly.
|
|
|
|
## Files it does not know
|
|
|
|
Each directory or archive this module declares says how it treats a file it did not write (ADR 0422, ADR 0416).
|
|
|
|
- `${dir:state}`: everything in it is the program's; the mesh moves nothing out (ADR 0422 §2).
|