Skip to content

plugin-substrate

Version 2026.196.0600
Repo superproject
Plugin yes — see the plugin reference

The 5 SUBSTRATE structural deploy KINDS — pod / vm / k8s / local / android — relocated into ONE candy (C2-substrate; formerly the shared built-in standaloneKind). Each substrate kind is BOTH a standalone TEMPLATE (a bare vm:/pod: block → the typed template map uf.Pod/uf.VM/…, the PRIMARY VM authoring form) AND a DEPLOY (from:/image: cross-ref or resource members → uf.Bundle). Its value is RICH + core-referencing (#Vm/#Deploy/#LibvirtDomain/…), so — unlike group’s small self-contained #GroupInput — it cannot be re-decoded from op.Params nor validated by a self-contained plugin schema. So the HOST pre-decodes the CANONICAL node via the core loader (buildBundleNode / decodeNodeValue — the single decode source of truth), validates its value against the KEPT #Value core def, and threads it in op.Env; this plugin’s OpLoad ECHOES it and the host folds the echo into uf.Bundle (deploy) or the typed template map (template — the C2-substrate TEMPLATE fold arm extending F5’s deploy-only fold), byte-equivalent to the former in-proc standaloneKind decode. COMPILED-IN (in the embedded compiled_plugins:), like the tier-1 kinds and group, because these 5 are core deploy primitives every box/submodule must always resolve; also serves out-of-process via cmd/serve. P14a added the COLLECTOR OpStatusCollect on the same kind-provider Invoke (dispatched by word pod/vm/k8s/local/android): the cleanly-movable status collectors — pod live (snapshot + live mounts + tool probes) + local (install-ledger) + the 7 probes — relocated here from charly core, reached by the host’s charly status fan-out; the deploy-cone-coupled enrichment + the vm/k8s/android collectors stay host-side until K5.

This candy’s plan: — the runnable spec charly check executes against a live deployment. check: steps are idempotent probes; run: steps change state.

Intent Step
check the substrate structural kind plugin ships a buildable Go module the host compiles in (default) or serves out-of-process; its pod/vm/k8s/local/android structural decode (both the deploy fold to uf.Bundle and the standalone-template fold to uf.Pod/uf.VM/…) is exercised by every check bed / box composing a substrate node (check-substrate-* / box-fedora / box-cachyos / box-arch / box-debian). P14a’s OpStatusCollect (pod live + local collectors + the probes) is exercised by the charly status parity beds (check-sidecar-pod status –json) + the relocated unit tests (collectPodLive golden, local ledger, probes).