AGPL-3.0-or-later · forever.

the error register

NIKA-PARSE-008

Every error Nika emits is a typed structure: a stable code, a category, and a transient flag the retry machinery reads. nika check findings link here per code. Machines read the same registry at /errors/catalog.json; the taxonomy lives in spec 05 · errors.

  • 50codesregistered
  • 12namespacesNIKA-*
  • 10categoriestyped
  • 0transientretry-able
NIKA-AGENT2 codes
  1. NIKA-AGENT-001budget_error

    max_turns exhausted before completion

  2. NIKA-AGENT-002budget_error

    max_tokens_total exhausted before completion

NIKA-BUILTIN2 codes
  1. NIKA-BUILTIN-001validation_error

    builtin invoke violates its statically-checkable arg contract (e.g. nika:fetch without url: · nika:jq arg shape)

  2. NIKA-BUILTIN-DONE-001validation_error

    nika:done invoked outside an agent: loop

NIKA-CANCEL1 code
  1. task cancelled (workflow failure gate · user cancellation)

NIKA-DAG4 codes
  1. NIKA-DAG-001validation_error

    cycle in depends_on (incl. self-dependency)

  2. NIKA-DAG-002validation_error

    depends_on references an undeclared task

  3. NIKA-DAG-003validation_error

    a tasks.X reference with no declared edge

  4. NIKA-DAG-004validation_error

    on_error.recover references a task downstream of the declaring task (await would deadlock)

NIKA-EXEC2 codes
  1. NIKA-EXEC-001process_error

    non-zero exit code (default capture modes)

  2. NIKA-EXEC-002process_error

    spawn failure (command not found · permission)

NIKA-INFER2 codes
  1. NIKA-INFER-001provider_error

    provider call failed (HTTP error · provider refusal)

  2. NIKA-INFER-002validation_error

    structured output failed schema validation (after any engine-internal retries)

NIKA-INVOKE2 codes
  1. NIKA-INVOKE-001validation_error

    unknown tool (unresolvable nika:/mcp: id)

  2. NIKA-INVOKE-002validation_error

    tool args failed the tool's schema

NIKA-MCP2 codes
  1. NIKA-MCP-001tool_error

    MCP server not configured / not reachable at call time

  2. NIKA-MCP-002tool_error

    MCP tool call failed (transport · tool-side error)

NIKA-PARSE18 codes
  1. NIKA-PARSE-001parse_error

    the YAML itself does not parse (syntax error)

  2. NIKA-PARSE-002validation_error

    missing envelope field (nika: / workflow: / non-empty tasks:)

  3. NIKA-PARSE-003parse_error

    nika: version marker is not exactly v1

  4. NIKA-PARSE-004validation_error

    workflow: id violates ^[a-z][a-z0-9-]*$

  5. NIKA-PARSE-005validation_error

    unknown field — strict mode rejects anything outside the closed v1 set

  6. NIKA-PARSE-006validation_error

    task id violates ^[a-z][a-z0-9_]*$ (snake_case · CEL-safe · no hyphens)

  7. NIKA-PARSE-007validation_error

    duplicate task id within the workflow

  8. NIKA-PARSE-008validation_error

    task declares no verb — exactly one of infer/exec/invoke/agent required

  9. NIKA-PARSE-009validation_error

    task declares multiple verbs — exactly one required

  10. NIKA-PARSE-010validation_error

    timeout: violates the quoted Go-duration contract (positive · max 24h · descending units)

  11. NIKA-PARSE-011validation_error

    retry: block violates the spec shape

  12. NIKA-PARSE-012validation_error

    on_error: block violates the spec shape (fields mutually exclusive)

  13. NIKA-PARSE-013validation_error

    with:/output: binding uses a reserved name (output · status · error · started_at · ended_at · duration_ms)

  14. NIKA-PARSE-014validation_error

    secrets: entry is not a store reference — inline literals forbidden

  15. NIKA-PARSE-015validation_error

    typed vars: declaration malformed (type in string/number/integer/boolean/array/object)

  16. NIKA-PARSE-017validation_error

    duplicate mapping key — no silent last-wins

  17. NIKA-PARSE-018validation_error

    missing required field in a verb body (infer.prompt · exec.command · invoke.tool)

  18. NIKA-PARSE-019validation_error

    generic structural validation — wrong YAML shape for a field

NIKA-SEC5 codes
  1. NIKA-SEC-001security_error

    exec: blocklist hit

  2. NIKA-SEC-002security_error

    agent tool call outside the tools: whitelist

  3. NIKA-SEC-003security_error

    run-recursion bound — nested-run depth exceeded OR self-launching workflow

  4. NIKA-SEC-004security_error

    effect outside the declared permits: capability boundary (fs/net/exec/tool)

  5. NIKA-SEC-005security_error

    SSRF block — a nika:fetch/nika:notify URL resolves to a loopback/private/link-local/metadata target (always-on engine floor · independent of permits:)

NIKA-TIMEOUT1 code
  1. NIKA-TIMEOUT-001timeout_error

    task (or for_each iteration) exceeded timeout:

NIKA-VAR9 codes
  1. NIKA-VAR-001variable_error

    unresolved reference (unknown namespace entry · undeclared env/vars key)

  2. NIKA-VAR-002variable_error

    binding cardinality — a jq binding emitted zero or multiple values

  3. NIKA-VAR-003validation_error

    provably-invalid path into a declared schema (static walk)

  4. NIKA-VAR-004variable_error

    jq runtime error while evaluating a binding

  5. NIKA-VAR-005validation_error

    static expression violation — outside cel-subset/0.1 · chained relation · unknown function · non-boolean when: root · jq compile error

  6. NIKA-VAR-006variable_error

    expression type error at evaluation — cross-type compare · non-boolean when: value · for_each over a non-array

  7. NIKA-VAR-007variable_error

    bytes value substituted into a string position

  8. NIKA-VAR-008validation_error

    unclosed ${{ opener

  9. NIKA-VAR-009validation_error

    typed outputs value did not match its declared type: at run end (the output half of the callable contract)

Codes are stable identifiers — never renamed, never repurposed. Route on them (retry.on_codes · on_error.on_codes) and they keep meaning the same failure forever. Read the spec →