AGPL-3.0-or-later · forever.

the language

timeout

Go-duration string · quoted · e.g. "30s" "5m" "1h30m" "2.5s". Max 24h. One of 59 words the served contract declares, projected from workflow.schema.json, the same file your editor validates against.

  • 2surfacestask · on_finally
  • optionaleverywherea choice, never a miss
  • stringtypethe declared shape
  • 1skeletonscarry this key

the contract

2 declarations

Descriptions are the schema's own; the deeper invariants (value languages and regexes) ride the same projection. A miss is a nika check finding before anything runs.

task
stringGo-duration string · quoted · e.g. "30s" "5m" "1h30m" "2.5s". Max 24h.one step of the plan^[0-9]+(\.[0-9]+)?(ns|us|µs|ms|s|m|h)([0-9]+(\.[0-9]+)?(ns|us|µs|ms|s|m|h))*$
on_finally
stringinside an on_finally step

in a real file

from the fanout skeleton
fanout.nika.yaml
  process:    with:      discover: ${{ tasks.discover.output }}    for_each: ${{ with.discover }}    max_parallel: 4                 # SLOT: the polite ceiling    fail_fast: false    timeout: "60s"                  # SLOT: per-iteration bound    retry:      max_attempts: 3      backoff_strategy: exponential      jitter: true    on_error:      recover: null                 # a failed item yields null at its index · the batch lives    infer:                          # SLOT: the per-item job (any verb)      prompt: |        Process this item · ${{ item }}

a verbatim slice, real line numbers from fanout.nika.yaml, conformance-gated upstream on every spec push. open the full skeleton →

cross-references

the block it lives in

on_finally: inside an on_finally step

The whole grammar in one place: the four verbs · the standard library · the spec. Try it in the playground. Read the reference →