Skip to Content
This documentation is provided with the HEAT environment and is relevant for this HEAT instance only.
RunnersCore Utilsconverge-outputs

converge-outputs

Transform node that converges all node outputs from multiple upstream parents onto this node. For each output on each parent, it registers a new node output on the converge node that reuses the same blob configuration (path, data source, JSON configuration) as the parent output. It does not download or copy blob bytes.

When to use it

  • Upstream nodes are multi-output (they produce more than one node output over time, or several outputs per run).
  • You want a single downstream consumer that should see every output from those parents as its own node outputs (e.g. session templates that expect multiple named outputs).
  • You need an idempotent step: the DAG can change and the node can re-run; it only creates new node-output rows for parent outputs that are not already mapped.

Behaviour

  1. Reads the session DAG from nodeInstance.parents and, for each parent, lists outputs via the runtime API (GET .../output/all) — no blob reads.
  2. For each parent output, builds a deterministic outputIdentifier on this node:
    {outputIdentifierPrefix}-{parentNodeInstanceId}-{parentNodeOutputId}
    (truncated to 100 characters if needed).
  3. Compares with outputs already registered on this node. Only missing identifiers are registered by posting metadata to Core API (same pattern as other runners’ upload_resultno new blob upload).
  4. Logging includes parent count, how many outputs already existed on this node, how many new mappings were needed, and an approximate total size when parent output configuration includes fields such as sizeBytes, combinedLength, or length.

When there are no items to map

If no parent has any node outputs and this node has no outputs yet (first run, or nothing to converge), the node must not always be treated as a hard failure: downstream nodes may still be allowed to run.

Configure this with whenNoOutputs:

ValueMeaning
complete (default)Node completes successfully with no outputs.
suspendNode is set to suspended (not failed); task is completed. Use when you want a distinct state from failure.
failTreated as a normal runner failure (empty process result with no outputs), so dependent nodes that require this node may not proceed.

Configuration

PropertyTypeDefaultDescription
whenNoOutputscomplete | suspend | failcompleteBehaviour when there is nothing to map and this node has no outputs yet.
outputIdentifierPrefixstringconvergePrefix for deterministic outputIdentifier values (see above).