Skip to main content

Core DSL reference

Import only the release-matched public entrypoint:

let tickr = import "lib.ncl" in

Workflow and graph

ExportResult
mkWorkflowWorkflow definition document
mkTaskTask value
mkTaskGroupTask-group graph value
mkEdgeEdge between one or more typed Task endpoints
chainDefinition-time graph fragment with derived control edges
mkLoopLoop document

Signals, triggers, routing, and gates

ExportResult
mkSignalTyped named Signal reference
mkSignalEmitSuccess-side Signal emission from a routing variable
mkSignalEmitOnFailureFailure-side Signal emission with Task lineage
mkRoutingVarTyped routing-variable declaration
mkSignalGateGate satisfied by a matching Signal
mkTimerGateDuration gate
mkPredicateGateRouting-variable predicate gate
mkTriggerOnWorkflow trigger configuration
mkTriggerCaptureTrigger payload capture declaration

Routing-variable types:

string · int · bool · bytes · array

Predicate operators:

Eq · NotEq · Lt · Le · Gt · Ge

Runtime Patch constructors

ExportOperation
mkInsertInsert one Task
mkChainInsert an ordered Task scope-tree
mkForkInsert parallel arms and barrier join
mkBranchInsert branch structure
mkExpandExpand addressed structure
mkSwapReplace addressed structure
mkCutCut addressed structure
mkPrunePrune selected structure
mkTrimTrim at a boundary
mkTruncateTruncate beyond a boundary

chain and mkChain are intentionally different:

  • chain composes a Workflow definition and returns a graph fragment.
  • mkChain creates a runtime Patch document against a live Run.

Primary Task fields

FieldContract
nameIdentifier
nix_expression_pathString
argsArray of strings
outputsArray of strings; defaults empty
inputsBare names or structured input bindings; defaults empty
secretsArray of strings; defaults empty
routing_varsOptional array of mkRoutingVar values
emitsOptional array of Signal emit values
max_attemptsInteger 1..100; defaults 3
timeoutOptional duration

The contracts are closed. Unknown fields fail validation rather than passing through silently.