Skip to content

plugin-build

Version 2026.206.1217
Repo superproject
Plugin yes — see the plugin reference

The BUILD-DRIVE plugin: it OWNS the podman build drive (the build-order loop, the per-image build lock, the push, and the merge gate) for build:box (the charly box build engine) and build:generate (the charly box generate engine), AND the ensure-image ORCHESTRATION for build:ensure (core-min wave 3, build-engine cluster relocation — the former core ensure-image + cross-engine-transfer helpers): pull an image, falling back to a local (or remote-cached) build reached via the SAME in-process build:box drive this candy already owns — no new build seam. The heavy loader/render RESOLVE runs PLUGIN-SIDE ITSELF (resolveBuildEngine, K3 U6 — the former host-side NewGenerator this candy used to call over HostBuild is DELETED, #55 step3 3-II), reaching the host only for what a sdk-only candy structurally cannot do (the bootstrap-delicate local scan, the git fetch, the build-time plugin connect, the host-fs prep) over a small buildengine-* HostBuild leg family; the layer MERGE crosses to verb:oci via InvokeProvider (no HostBuild(“merge”) seam). The candy then runs podman directly — building each image (Containerfile piped over stdin), gating the inline merge on the box’s MergeAuto, and pushing (podman) after merge; build:generate renders the .build/ Containerfile tree in its own code (via sdk/deploykit, #67) and returns the written paths (no podman, no merge); build:ensure resolves a project-authored image identifier against charly.yml PLUGIN-SIDE (loaderkit.LoadUnified via the K1 loader reverse legs — no “box-ref-resolve” HostBuild seam, shed #55 coneK1 #8) and a remote @github.com/… identifier via HostBuild(“remote-image-resolve”, …) (git clone/cache ONLY, then plugin-side resolve), then execs podman pull/podman tag directly (no seam needed for that — same host, same privilege as the build drive’s own podman exec). Only the wire envelopes cross the seam; the podman exec happens IN the candy. COMPILED-IN (in the embedded compiled_plugins:) — charly box build / charly box generate / every dispatchBuildEnsure caller dispatch it IN-PROCESS, the host threading the reverse channel onto the Invoke context so HostBuild is reachable without a go-plugin broker. Also serves out-of-process via cmd/serve for module-shape parity (one provider, two placements).

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 build-drive plugin ships a buildable Go module the host compiles in (default) or serves out-of-process; its build:box / build:generate / build:ensure words own the podman build drive + the ensure-image orchestration and resolve/merge over the F10 HostBuild seam, exercised by EVERY box build and every image-ensure fallback across the whole ecosystem (every charly box build / charly box generate / charly box pull / deploy image-preflight invocation)