Skip to content

plugin-example-bootstrap

Placement compiled-in (in-process)
Source github.com/opencharly/plugin-example-bootstrap/candy/plugin-example-bootstrap
Version 2026.181.0001
Candy plugin-example-bootstrap

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:

  • examplebootstrap — verb class

Reference BOOTSTRAP-PHASE plugin (F9) — a compiled-in plugin declaring Phase=bootstrap, so the kernel invokes its OpBootstrap on the RAW project config bytes BEFORE config validation/migration (runBootstrapPhase, in LoadUnified before the schema gate). This no-op returns the bytes UNCHANGED, proving the bootstrap hook fires at the right time; a real bootstrap-phase plugin would transform a stale config’s bytes here. Bootstrap plugins are compiled-in only (no validated config exists yet to discover an out-of-process source). This candy is the phase machinery’s only consumer today: neither migrate nor egress became a bootstrap plugin (both are verb plugins).

The CUE schema below is the authoritative grammar for this plugin’s input. It is the same single source that generates the plugin’s Go parameter types and answers the runtime Describe RPC, so this page cannot disagree with either.

// plugin-example-bootstrap's OWN self-contained CUE schema — the SINGLE SOURCE for this plugin's
// served declaration surface (there is no schema-less plugin: every plugin ships a
// non-empty schema over Describe).
//
// SELF-CONTAINED and PACKAGE-LESS: it references no base def and carries no package
// clause, so it compiles STANDALONE — the property the SDK's serve-side compile needs
// and the property that lets the host splice `base ++ plugin` at the load gate
// (registerPluginUnitSchema); a self-contained schema that will not splice is a LOUD
// load failure.
//
// NO GO CONSUMER: the plugin declares no typed `plugin_input` (its authored input is
// its pass-through CLI grammar), so this schema generates NO `params` package and has
// NO `cue exp gengotypes` artifact — it is the SERVED documentation/config surface,
// not a code-generation source.
//
// It DOCUMENTS the bootstrap-phase contract (a provider invoked with the raw project config bytes via the `OpBootstrap {config: string}` envelope).
#ExampleBootstrapPlugin: {
// The verb word the plugin serves.
verb: "examplebootstrap"
// The lifecycle phase the provider is invoked in.
phase: "bootstrap"
// What the plugin does, in one line (the public-docs surface).
contract: string & !=""
}

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