Inline transform and sketch placeholders
Most graph steps are either a built-in transformation (pure reshape, no code) or a published component (reusable, released, containerized). Two special transformations cover the ground between them.
transform — code in the graph
transform takes worker source as configuration: source (the code), language (py or cpp), build_system (the same build templates published components use), and requirements (exact-pinned pip lines, Python only). At deploy time the platform compiles the source into a container image on the deployment node and runs it as a normal vertex.
There is no publish step, no registry push, no release lifecycle — the code is part of the backend graph itself. The built image is cached by the exact content of the source, language, template, and dependencies: unchanged steps redeploy instantly, edits rebuild.
Its input and output ports are generic; the surrounding wiring and explicit type constraints fix them, so the graph stays fully type-checked around authored code — and not inside it. That makes the code the one place where a wrong assumption survives: the values on the wire are typed records with fixed field names, and reading a field that does not exist is silent at runtime rather than an error. Look up the record layout of every type on the step's ports before writing the body. The one behavioural rule: every input tick emits exactly one value on every output port.
Use it for glue logic that would be embarrassing as a published component: format massaging, a custom score, small math between two real components. It is also the hardening path for the interpreted evaluate_expression / visualize_expression catalog components — prototype the logic as an expression vertex, then collapse it into a compiled transform step in the same graph position once it stabilizes.
sketch — the honest placeholder
sketch marks a step that is not built yet. It carries only a readme note describing the intent, its ports constrain nothing, and the surrounding graph wires and type-checks normally. The safety property: any backend still containing a sketch is refused at deploy. Sketches let you design ahead without ever shipping a graph that silently does nothing.
When the real step arrives — a published component or a transform with pasted code — the sketch is deleted, the replacement is wired in, and deploy unblocks.
Related
- Transformations — the full catalog and the model.
- Build systems — what each build template provides.