Skip to content

plugin-candy-kind

Placement compiled-in (in-process)
Source github.com/opencharly/charly/candy/plugin-candy-kind
Version 2026.182.1600
Candy plugin-candy-kind

This plugin is listed in charly/charly.yml’s compiled_plugins:, so its providers are compiled into the charly binary and register in-process.

The reserved words this plugin serves:

  • candy — kind class

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.


See also the candy reference for this candy’s install surface.