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

2.7 KiB

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