Inputs
- Data in — value to pass through.
- Entity ID — optional Twine-internal UUID of the entity the
anomaly is about. Populates the row’s
entity_idcolumn for the auto-resolve sweep and rich entity rendering in the UI. - External ID — optional source-system identifier for the entity.
Always populate this in
convert_from_systemflows: at that pipeline stage, the only id available is the remote one. - Params — one input per configured param (or, for a catalog code
with structured fields, one per field). Wire anything: the value is
captured under the param’s name and can be referenced in the message
as
{name}.
Outputs
- Result — the input value, unchanged.
Schema
- Code — picked from the anomaly catalog, or a custom identifier.
generic_erroris the everyday choice: your own message and params. A catalog code with structured fields (for examplemissing_or_malformed_field_on_employee) takes its fields as params and persists as that anomaly type, with its own title. - Severity —
info/warning/critical. Influences how consumers triage and surface the anomaly. - Domain — what kind of entity the anomaly is about (employee by default). Free-form codes only; a catalog code knows its domain.
- Message — human-readable description shown to the customer, for
free-form codes.
{name}is replaced by the param of that name;{entity_id}and{external_id}by the id ports; in a flow,{assign}/{assign.nested.path}by the run’s assigns (same syntax as Flow Log). A placeholder nothing resolves stays visible as written, so a missing value is never silently blank. - Params — the named values to capture. Each is an input port; in a flow a param can instead name an assign path to read when its port is unwired. Discriminates (on by default) makes the value part of the anomaly’s identity: the same node firing with a different value is a different anomaly. Turn it off for values that vary run to run (a total, a date) so they don’t split one problem into many rows.
- System integration — flow mode only: the tenant integration the persisted anomaly row is scoped to. Required when the node runs in a flow; ignored in data (property-mapping) mode.