plugin-example-stepkind
| Version | 2026.182.0900 |
| Repo | superproject |
| Plugin | yes — see the plugin reference |
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.
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 out-of-tree class:step plugin ships a buildable Go module the host can build + serve out-of-process (both legs — OpExecute at deploy, OpEmit at build) |