plugin-substrate
| Version | 2026.196.0600 |
| Repo | box/github.com/opencharly/plugin-substrate:v2026.270.1740 |
| Plugin | yes — see the plugin reference |
The SUBSTRATE structural deploy KINDS — pod / vm / kubernetes / local / android / kubevirt / kindcluster — 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.Deploy). 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 (buildDeployNode / decodeNodeValue — the single decode source of truth), validates its
value against the KEPT #charly status fan-out; the deploy-cone-coupled enrichment + the vm/kubernetes/kubevirt/android collectors
live here too (relocated from core in K5). kubevirt is the 6th deploy substrate (a KubeVirt VM on a
cluster), declaring the ssh venue WITHOUT exclusive_venue + a deep OpValidate (the source-arm XOR + GPU resource XOR).
Acceptance plan
Section titled “Acceptance plan”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/kubernetes/local/android/kubevirt/kindcluster structural decode (both the deploy fold to uf.Deploy and the standalone-template fold to uf.Pod/uf.VM/…) is exercised by every check bed / box composing a substrate node (check-substrate-* / check-kindcluster-* / box-fedora / box-cachyos / box-arch / box-debian). P14a’s OpStatusCollect (pod live + local + kubernetes + kindcluster 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, TestKindclusterDeployEntries/TestKindclusterSpecFor_ResolvesContext/TestKindclusterClusterName_Sanitized). |