AGPL-3.0-or-later · forever.

the language

on_error

the catch side: recover with a value, skip, or fail loudly, per error code. One of 62 words the served contract declares, projected from workflow.schema.json, the same file your editor validates against.

  • 1surfacetask
  • optionaleverywherea choice, never a miss
  • anytypethe declared shape
  • 8skeletonscarry this key

the contract

1 declaration

the failure grammar · this word only ever speaks inside the recovery block, so meeting it means you are reading what happens when something breaks

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
the catch side: recover with a value, skip, or fail loudly, per error codeone step of the plan

in a real file

from the chain skeleton
chain.nika.yaml
  gather:    invoke:                         # SLOT: the fact source · nika:read / nika:fetch / exec      tool: "nika:read"      args: { path: "${{ const.source }}" }    on_error:      # Offline rehearsal. A freshly scaffolded directory has no README, and a      # skeleton that dies on its first run teaches nothing — so a not-found      # recovers into a literal standing in for the real document. `on_codes:`      # keeps that narrow: ONLY not-found is forgiven, a permission error      # still fails loudly. Delete this block once the source really exists.      # In an EMPTY directory check prints one [inputs] hint that this read      # would fail — the run does not: this recover carries it (measured ·      # rc=0 · « 1 recovered »). The hint retires once your source exists.      on_codes: [NIKA-BUILTIN-READ-001]      recover: "REHEARSAL · no source document here yet."

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

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