AGPL-3.0-or-later · forever.

the error register

NIKA-PARSE-024

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.

  • 82codesregistered
  • 19namespacesNIKA-*
  • 10categoriestyped
  • 0transientretry-able
NIKA-AGENT4 codes
  1. NIKA-AGENT-001budget_error

    max_turns exhausted before completion

    named bymax_turns

  2. NIKA-AGENT-002budget_error

    max_tokens_total exhausted before completion

    named bymax_tokens_total

  3. NIKA-AGENT-003validation_error

    a skills: path does not resolve (file missing/unreadable at compose time)

    named byskills

  4. NIKA-AGENT-004validation_error

    a skills: file is not a valid Agent Skill (frontmatter shape · missing/empty name/description)

    named byagentdescriptionskills

NIKA-ASSERT1 code
  1. NIKA-ASSERT-001validation_error

    an assert: claims a level the evidence does not support (a StaticProof the IR cannot decide · a mis-leveled obligation · spec 15)

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

    named byworkflow

NIKA-COMP4 codes
  1. NIKA-COMP-001validation_error

    invoke.workflow: target is not statically resolvable (templated · malformed · unpinned registry ref) — a call graph you cannot draw before the run cannot be bounded (spec 14)

    named byinvokeworkflow

  2. NIKA-COMP-002security_error

    the child workflow's effect boundary exceeds the parent capped by the call-site declaration (Authority(child) subset of Authority(parent) intersect declared · spec 14 laws 3/4)

    named byworkflow

  3. NIKA-COMP-003validation_error

    the static call graph is not acyclic (self-launch · cycle · spec 14 law 7 · NIKA-SEC-003 is the runtime depth backstop)

  4. NIKA-COMP-004validation_error

    the typed call does not compose — parent args do not fit child inputs, or child outputs do not fit parent returns (spec 14 law 2)

    named byinputsoutputsreturns

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

    cycle in the precedence graph G_p = E_d ∪ E_c (incl. self-dependency · via with:/after:)

    named byafterwith

  2. NIKA-DAG-002validation_error

    with:/after: references an undeclared task

    named byafterwith

  3. NIKA-DAG-004validation_error

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

    named byon_errorrecover

  4. NIKA-DAG-005validation_error

    after: predicate outside the closed set (success · failure · skipped · terminal)

    named byafter

  5. NIKA-DAG-006validation_error

    statically dead task — an incoming edge's pass-set excludes every reachable producer state, or the when: gate is false under every reachable upstream combination (gate algebra v2)

    named bywhen

  6. NIKA-DAG-007validation_error

    status compared against a literal outside the vocabulary (success · failure · skipped · cancelled) — == never matches, != always holds

NIKA-DECIDE2 codes
  1. NIKA-DECIDE-001validation_error

    the decision bundle is malformed or violates its own laws (float weight · undeclared evidence key in rules · identity key feeding a technical dimension · missing contradictory fixture · monotonicity violated by the bundle's own fixtures) (spec 11)

  2. NIKA-DECIDE-002validation_error

    the evidence snapshot does not satisfy the bundle's evidence schema (type misfit · unauthorized source · integrity below the declared floor · undeclared key) (spec 11)

    named byschema

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

    non-zero exit code (default capture modes)

    named bycapture

  2. NIKA-EXEC-002process_error

    spawn failure (command not found · permission)

    named bycommand

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

    provider call failed (HTTP error · provider refusal)

    written aboutThe agent workflow spectrum

  2. NIKA-INFER-002validation_error

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

    named byafteroutputschema

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

    unknown tool (unresolvable nika:/mcp: id)

    named bynika

  2. NIKA-INVOKE-002validation_error

    tool args failed the tool's schema

    named byschema

NIKA-LOCK1 code
  1. NIKA-LOCK-001validation_error

    a dependency resolved that nika.lock does not pin, or a hand-edited lock digest does not match (pin-by-default · the lock's own hash catches the edit · spec 15)

    named bynika

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-PARSE24 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:)

    named bynikatasksworkflow

  3. NIKA-PARSE-003parse_error

    nika: version marker is not exactly v1

    named bynika

  4. NIKA-PARSE-004validation_error

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

    named byworkflow

  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

    named byworkflow

  8. NIKA-PARSE-008validation_error

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

    named byagentinferinvoke

  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)

    named bytimeout

  11. NIKA-PARSE-011validation_error

    retry: block violates the spec shape

    named byretry

  12. NIKA-PARSE-012validation_error

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

    named byon_error

  13. NIKA-PARSE-013validation_error

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

    named byoutputwith

  14. NIKA-PARSE-014validation_error

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

    named bysecrets

  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)

    named bycommandexecinferinvokeprompt

  18. NIKA-PARSE-019validation_error

    generic structural validation — wrong YAML shape for a field

  19. NIKA-PARSE-020validation_error

    workflow: is a scalar — the envelope became an object (workflow: then id: <value>)

    named byidworkflow

  20. NIKA-PARSE-021validation_error

    top-level description: — it moved into workflow.description

    named bydescriptionworkflow

  21. NIKA-PARSE-022validation_error

    tasks: is a sequence — it became a map keyed by task id (drop `- id:`, the key IS the identity)

    named byidtasks

  22. NIKA-PARSE-023validation_error

    a task carries an id: field — the map key is the identity, the field is gone

    named byid

  23. NIKA-PARSE-024validation_error

    a task carries depends_on: — dead since W2 (data → with: bindings · control → after: predicates · check --fix migrates)

    named byafterwith

  24. NIKA-PARSE-025validation_error

    decode: with capture: structured — that capture already IS an object · type it with returns:

    named bycapturedecodereturns

NIKA-POLICY1 code
  1. NIKA-POLICY-001security_error

    a hard policy: rule is violated (require.human_gate_before · forbid.exec_after · allow.providers · limits.max_tasks) — the diagnostic names rule + task + witness (order rules: the path) · check-time, before any token (spec 10)

    named bypolicy

NIKA-PORT2 codes
  1. NIKA-PORT-001validation_error

    a gateway artifact (deployment bundle · capabilities report · lowering report · fidelity report · authority delta) is malformed or violates its laws (unknown promoted · permissive_unsafe without refusal · disclosure subset-chain violated · child authority exceeding parent) (spec 12)

  2. NIKA-PORT-002security_error

    policy lowering is permissive_unsafe — the backend would allow what the policy forbids · refused with the divergence witness (spec 12)

    named bypolicy

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

    exec: blocklist hit

    named byexec

  2. NIKA-SEC-002security_error

    agent tool call outside the tools: whitelist

    named byagenttools

  3. NIKA-SEC-003security_error

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

    named byworkflow

  4. NIKA-SEC-004security_error

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

    named bypermits

    written aboutThe blast radius is part of the file

  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:)

    named bynikapermits

  6. NIKA-SEC-006security_error

    secret flow — a secrets.<name> value reaches an unsanctioned sink (exec argument · invoke payload · infer/agent prompt) · the diagnostic carries the taint path + the egress clause that would sanction it (spec 10 · flow rules in 01 §egress)

    named byagentinferinvokepromptsecrets

  7. NIKA-SEC-007security_error

    secret egress — a tainted value reaches the workflow boundary (outputs:) · the diagnostic carries the taint path (spec 10 · the to: outputs sanction in 01 §egress)

    named byoutputsworkflow

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

    task (or for_each iteration) exceeded timeout:

    named byfor_eachtimeout

NIKA-TYPE7 codes
  1. NIKA-TYPE-001validation_error

    unknown type name (in types: · returns: · an outputs: type) — did-you-mean when close

    named byoutputsreturnstypes

  2. NIKA-TYPE-002validation_error

    recursive type reference — the types: graph must be acyclic

    named bytypes

  3. NIKA-TYPE-003validation_error

    returns: and schema: on the same task — one contract, one spelling

    named byreturnsschema

  4. NIKA-TYPE-004validation_error

    returns: type unreachable from the declared decode: (an object contract over decode: text · …)

    named bydecodereturns

  5. NIKA-TYPE-005security_error

    a secret-carrying type in a lowered position (reserved with secret<T> · W4)

  6. NIKA-TYPE-006validation_error

    regex pattern outside the locked dialect (backreference · lookaround · named group · inline flags · lazy/possessive · word-boundary · unicode-class — spec 09 §the regex dialect)

  7. NIKA-TYPE-101validation_error

    run-time contract violation — the decoded value does not fit returns: (exec:/invoke: lane)

    named byexecinvokereturns

NIKA-VAR11 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)

    named byschema

  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

    named bywhen

  6. NIKA-VAR-006variable_error

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

    named byfor_eachwhen

  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)

    named byoutputoutputs

  10. NIKA-VAR-020validation_error

    bare tasks.X is the envelope, not a value — the projection set (.output/.status/.error/.duration_ms) is closed and required (04 §namespaces · 0.103 · #75 D2)

    named byoutputtasks

  11. NIKA-VAR-021validation_error

    a tasks.* reference outside the boundary (with: · after: · on_error.recover · on_finally parent-only · workflow outputs) — hoist it into with: (check --fix applies it)

    named byafteron_erroron_finallyoutputsrecovertaskswithworkflow

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 →