Files
mesh-catalog/modules/mesh-provisioner/README.md
T
mesh-tools 652b00b25b
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
Say on every directory how it treats files it does not know, and check it (issue 1024, ADR 0422)
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.
2026-10-17 16:23:03 +00:00

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).