the language
on_codes
Optional catch-side filter (mirror of retry.on_codes · same regex) · the action applies ONLY when the final error code is listed · unlisted codes fall through to the default fail (spec/05-errors.md §Fields). One of 59 words the served contract declares, projected from workflow.schema.json, the same file your editor validates against.
- 2surfacesretry · on_error
- optionaleverywherea choice, never a miss
- arraytypethe declared shape
- 1skeletonscarry this key
the contract
2 declarationsDescriptions 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.
- retry
arrayinside retry:^NIKA-[A-Z]{2,9}(-[A-Z][A-Z0-9_]{1,15})?-[0-9]{3}$- on_error
arrayOptional catch-side filter (mirror of retry.on_codes · same regex) · the action applies ONLY when the final error code is listed · unlisted codes fall through to the default fail (spec/05-errors.md §Fields).inside on_error:^NIKA-[A-Z]{2,9}(-[A-Z][A-Z0-9_]{1,15})?-[0-9]{3}$
in a real file
from the etl-state skeleton previous: invoke: tool: "nika:read" args: { path: "${{ const.state_path }}" } on_error: on_codes: [NIKA-BUILTIN-READ-001] # not-found ONLY · a permission error still fails loudly recover: ${{ tasks.empty.output }}a verbatim slice, real line numbers from etl-state.nika.yaml, conformance-gated upstream on every spec push. open the full skeleton →
cross-references
skeletons that carry it
defined by
the block it lives in
retry: inside retry:
on_error: inside on_error:
The whole grammar in one place: the four verbs · the standard library · the spec. Try it in the playground. Read the reference →