plugin-example-stepkind
| Placement | runtime (out-of-process over gRPC) |
| Source | github.com/opencharly/charly/candy/plugin-example-stepkind |
| Version | 2026.182.0900 |
| Candy | plugin-example-stepkind |
This plugin is not listed in charly/charly.yml’s compiled_plugins:. It is not part of the shipped binary: charly builds and loads it out-of-process over gRPC when a plan references one of its words (the coexist path).
Providers
Section titled “Providers”The reserved words this plugin serves:
examplestepkind— step class
What it does
Section titled “What it does”Reference OUT-OF-TREE charly class:step plugin (F3) — a standalone Go module
(go.mod + main.go) serving the examplestepkind install-step KIND over go-plugin
gRPC via the charly plugin SDK. It proves the EXTERNAL-STEP-KIND contract in BOTH
legs: the plugin DECLARES its install-step Scope/Venue/Gate (+ Emits) in its Describe
StepContract, the host carries it OPAQUELY (“external:examplestepkind” + Payload)
through the InstallPlan IR. DEPLOY leg (OpExecute): the host’s OPEN DEFAULT ARM
dispatches the step’s OpExecute over the E3b reverse channel — where it writes a venue
marker and returns a teardown ReverseOp the host records + replays (record-and-replay).
BUILD leg (OpEmit, F-STEP-EMIT): the plugin declares Emits=true and answers OpEmit with
a Containerfile RUN fragment; composed into a pod overlay (add_candy), the candy’s
deploykit.OCITarget open external-step arm (dispatched host-side via the step-emit
host-builder) splices it — baking /etc/examplestepkind-build-baked into the overlay
image. The step-class companion of the verb-class
candy/plugin-example-external and the deploy-class candy/plugin-example-deploy.
Parameter schema
Section titled “Parameter schema”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.
schema/examplestepkind.cue
Section titled “schema/examplestepkind.cue”// schema/examplestepkind.cue — the SELF-CONTAINED CUE def validating the example external// step kind's opaque plugin_input (the Payload carried as "external:examplestepkind"). Ships// over Describe (schema_cue) + drives the generated Go params; references no base def so it// compiles standalone (BuildCapabilities compiles it alone, failing loudly if broken).#ExamplestepkindInput: { // marker is the string the step writes to its marker file — at DEPLOY (OpExecute) the venue // marker /tmp/charly-examplestepkind/marker, at BUILD (OpEmit, F-STEP-EMIT) the baked image // marker /etc/examplestepkind-build-baked — proving the OPAQUE payload round-trips through the // IR (InstallStepView.Payload) to BOTH the plugin's OpExecute and its OpEmit. marker?: string}See also the candy reference for this candy’s install surface.