CEM-ML CLI Transform Config Schema (https://cem.dev/ns/cli/transform-config/1)

Status: reserved runtime surface with active parser/lowering validation.

This is the source-of-truth schema artifact for the CEM-native CLI transform graph config. It is separate from the CEM core document schema and separate from CEM-native template schemas. The graph config describes import, typed conversion, transformation, and export wiring; it does not define template execution semantics. The CEM-native template declaration schema is https://cem.dev/ns/template/cem-native/1 and lives at packages/cem_ml/schema-packages/cem-native-template/v1/.

Schema URI: https://cem.dev/ns/cli/transform-config/1 Namespace URI: https://cem.dev/ns/cli/transform-config/1

Element Vocabulary

ElementRequired attributesOptional attributesChild elements
runnonenoneimport
importsrcid, content-type, contentType, schema, opaque, rootjoin, convert, transform, rewrite-importmap, export
joinmodeid, input, by, with:*convert, transform, rewrite-importmap, export
convertnoneid, input, content-type, contentType, schema, converterjoin, convert, transform, rewrite-importmap, export
transformsrcid, input, with:*, content-type, contentType, schema, entrypoint, template-content-type, templateContentType, template-schema, templateSchemaparam, join, convert, transform, rewrite-importmap, export
rewrite-importmaptarget-mapid, input, source-map, sourceMap, authored-map, targetMap, mode, missingexport
paramname, valuenonenone
exportoutid, content-type, contentType, schema, style-policy, stylePolicynone

Graph Semantics

Template Identity

Transform nodes must declare or imply a supported template identity through @template-content-type, @template-schema, or a recognized @src extension. The current parser classifies XSLT and CEM-native templates; the runtime executes supported CEM-native templates and bounded XSLT 1.0 parity templates through registered transform-template adapters.

Template Entrypoints And Params

transform @entrypoint selects a template entrypoint for adapters that expose named execution. Child param @name @value records provide caller params for that transform stage. @value is a string-first CLI/config value: source bindings such as {stem} are expanded by the CLI host before the engine request is built. CEM-native module execution then coerces the string according to the selected entrypoint's param declaration. XSLT parity passes the expanded string as an xsl:with-param value for named template entrypoints. Plain cem-ql-fragment execution still uses the implicit entrypoint with no params.

Example

For site metadata, opt into native YAML front matter on the import with front-matter=yaml in its Markdown content type. The recovered DOM provides input.metadata as common CEM data nodes and input.sourceUri alongside input.children. Add site-wide data/navigation as a separate import and bind it with transform @with:site=site; reusable partials remain declared CEMT module imports. Metadata does not trigger resource discovery, select templates or rewrite destinations. The full contract and bounds are in the Markdown package.

The layout in this example receives the native DOM projection as its implicit input value. A complete layout can recursively emit input.children with the CEM transform vocabulary while adding shared navigation and page structure.