plugin-migrate
| Version | 2026.186.0100 |
| Repo | superproject |
| Plugin | yes — see the plugin reference |
COMPILED-IN charly plugin owning the config-schema MIGRATION ENGINE (M15 — migrate OUT of core). It serves ONE capability:
- command:migrate — the operator
charly migratecommand AND the in-proc engine charly’s remote-cache auto-migration (refs.go EnsureRepoDownloaded) invokes with OpRun –project-only. The CUE-anchored declarative migration table + the generic op-walker (rename_key / delete_key / remap_scalar / move_key) + the file-walk drivers (engine.go) — the ~600 LOC formerly in charly/migrate_engine.go + migrate.go + migrate_cmd.go — live HERE now. The migration DATA (migrations.cue) is embedded here; #Migration is read from the SDK schema (sdk/schema — migration.cue + version.cue, since #Migration.version pins to the SDK’s single-source #CanonCalVer, which never leaves sdk/schema). The below-floor/behind-head load-gate HINTS (the “run charly migrate” messages) stay core — they only point at this command.
PLACEMENT — COMPILED-IN (listed in the embedded charly/charly.yml compiled_plugins:). Migrate is whole-project file-based and must run when the config is EXACTLY what cannot load, so it can never be discovered out-of-process nor run on root bytes inside LoadUnified. Compiled-in command placement gives command:migrate a registry word at init() independent of any config, so the refs.go auto-migration resolves it in-proc deep in config loading. The cmd/serve binary backs the out-of-process placement (a consumer that does not compile migrate in).
R10: the disposable check-migrate-local bed (a kind:local deploy composing this candy) proves the compiled-in command:migrate resolves + Invoke(OpRun) runs the engine end-to-end: (a) at-HEAD no-op, (b) –dry-run flag plumbing, (c) below-floor refusal. The declarative transform ops are covered by the plugin’s engine_test.go unit tests.
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 migration-engine plugin ships a buildable Go module the host compiles in; the full charly migrate dispatch is exercised by the live R10 (check-migrate-local) |