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 declarationthe 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 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 →
cross-references
skeletons that carry it
the check gates that name it
defined by
the block it lives in
The whole grammar in one place: the four verbs · the standard library · the spec. Try it in the playground. Read the reference →