Skip to content

plugin-candy-kind

Version 2026.182.1600
Repo superproject
Plugin yes — see the plugin reference

The candy box⊻layer factory KIND — the LAST structural kind — relocated into a candy (C2-candy; formerly the built-in candyKind in charly/plugin_candy.go). A candy: node is EITHER a full IMAGE (base:/from: → uf.Box, the former box:) OR a LAYER fragment (→ uf.Candy). Its value is RICH + core-referencing (#Candy/#Box), so — like substrate — 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 BOOTSTRAP-CRITICAL core candyIsImage + buildCandy (the single decode source that STAYS core — the discovered-candy pre-check calls it directly), validates its value against the KEPT #CandyValue core def, and threads the result in op.Env; this plugin’s OpLoad ECHOES it and the host folds the echo into uf.Box / uf.Candy, byte-equivalent to the former in-proc candyKind decode. COMPILED-IN (in the embedded compiled_plugins:) — which DISSOLVES the historical bootstrap-cycle blocker: a compiled-in plugin registers at init, before any load, so it has NO fetch/build cycle. It is the candy-KIND plugin; the sibling candy/plugin-candy is the DISTINCT command:candy CLI authoring plugin. Also serves out-of-process via cmd/serve.

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 candy box⊻layer factory kind plugin ships a buildable Go module the host compiles in (default) or serves out-of-process; its box⊻layer decode (candyIsImage + buildCandy → uf.Box / uf.Candy) is exercised by EVERY box and layer decode across the whole ecosystem (check-candy-kind / box-fedora / box-arch / box-cachyos / box-debian / box-ubuntu — every image and composed layer)