AGPL-3.0-or-later · forever.

the language

on_finally

Cleanup mini-tasks · ALWAYS run (success/fail/timeout/cancel) · sequential · best-effort. One of 59 words the served contract declares, projected from workflow.schema.json, the same file your editor validates against.

  • 1surfacetask
  • optionaleverywherea choice, never a miss
  • arraytypethe declared shape
  • schemathe sourcenever prose

the contract

1 declaration

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
arrayCleanup mini-tasks · ALWAYS run (success/fail/timeout/cancel) · sequential · best-effort.one step of the plan

in a real file

a crafted check-green file
tts_generate.nika.yaml
  speak:    with:      line: ${{ tasks.line.output }}    invoke:      tool: "nika:tts_generate"      args:        provider: mock        text: "${{ with.line }}"        output_dir: "./audio"    on_finally:      - invoke:          tool: "nika:log"          args: { message: "audio pass done — anything staged is under ./audio" }

a verbatim slice, real line numbers from tts_generate.nika.yaml, nika check green; the drift gate re-proves this copy on every test run.

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