Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

You are reading the development version (master). For the latest release (v3.6.0) see the stable docs.

Canonical error_kind taxonomy

This is the single source of truth for the stable error_kind strings emitted by the Boruna binary and the MCP server.

Stability contract

  • These strings are stable per docs/lts.md §B.6 (“Error taxonomy”). Once shipped in a tag, an error_kind is never renamed or removed within a major release line (see lts.md §B.6).
  • New error_kind values MAY be added in minor releases; integrators MUST tolerate values they don’t recognize.
  • Integrators MAY switch on these strings programmatically — the strings are part of the LTS-protected contract, not human-readable log copy.

How this list is maintained

Every entry below is verified against a literal-string grep of the crates/ and orchestrator/ trees. When a new error_kind is added to the source, it MUST be added here in the same change. CI may grow a gate for this in a future sprint; today the discipline is reviewer- enforced.


evidence.* — evidence bundle reader

Emitted by boruna evidence verify and boruna evidence inspect. See orchestrator/src/audit/encryption.rs::EncryptionError for the source strings.

error_kindPhaseWhere it firesSprintCaller-facing meaning
evidence.encryption_key_requiredN/Aorchestrator/src/audit/verify.rs::verify_bundleW6-BBundle is encrypted (manifest carries an encryption block) but no KEK has been supplied via --bundle-encryption-key or BORUNA_BUNDLE_KEK.
evidence.encryption_key_mismatchN/Aorchestrator/src/audit/verify.rs::verify_bundleW6-BSupplied KEK does not unwrap the bundle’s wrapped_dek (wrong key, or the DEK ciphertext was tampered).
evidence.cipher_tag_invalidN/Aorchestrator/src/audit/verify.rs::verify_bundleW6-BAES-GCM authentication tag failed for at least one encrypted file — the bundle has been tampered after recording. Plaintext bytes are not returned to the caller.
evidence.unsupported_algorithmN/A(reserved)W6-Bencryption.algorithm is set to a value other than "aes-256-gcm". Reserved string for forward-compat per docs/spec/evidence-bundle-1.0.md §8.1.

Note on the W1-C reader gate. Bundles missing bundle.json or carrying an incompatible major format_version are rejected by verify_bundle with the diagnostic unsupported evidence bundle format_version: found '<x>', expected major '<y>'. This message is emitted as a VerifyError, not as a JSON error_kind field; tools wrapping the reader translate it to their own taxonomy. See orchestrator/src/audit/verify.rs::VerifyError.

workflow.* — workflow JSON definition reader

Emitted by boruna_orchestrator::WorkflowDef::from_json and surfaces in boruna workflow validate / boruna workflow run / the coord POST /api/runs path.

error_kindPhaseWhere it firesSprintCaller-facing meaning
workflow.missing_schema_versionserializationorchestrator/src/workflow/definition.rs::DefinitionError::error_kindW4workflow.json has no schema_version field. Required since v1.0; legacy workflows must be migrated.
workflow.unsupported_schema_versionserializationorchestrator/src/workflow/definition.rs::DefinitionError::error_kindW4workflow.json carries a schema_version value this binary doesn’t accept (e.g. 2 on a binary that only reads schema 1).
workflow.invalid_jsonserializationorchestrator/src/workflow/definition.rs::DefinitionError::error_kindW4workflow.json is not valid JSON or fails the workflow schema after the version gate.

policy.* — policy schema validator

Emitted by boruna policy validate and boruna_run (object-form policy input). See docs/reference/policy-schema.md for full context.

error_kindPhaseSprintCaller-facing meaning
policy.io_errorserialization0.4-S15Policy file missing or unreadable.
policy.parse_errorserialization0.4-S15JSON syntax error or value-type mismatch.
policy.unknown_schema_versionserialization0.4-S15schema_version set to an unsupported value.
policy.unknown_fieldserialization0.4-S15Unknown field at any level (top-level, net_policy, or inside a rule).
policy.invalid_capabilityserialization0.4-S15Rule key is not a recognized canonical capability name (aliases like net are rejected).
policy.invalid_net_policyserialization0.4-S15net_policy value out of range or unknown HTTP method.

MCP-layer top-level kinds

Emitted by the boruna-mcp server’s tool layer. These predate the namespaced evidence.* / workflow.* schemes and are kept for back-compat per the LTS contract.

error_kindToolPhaseSprintCaller-facing meaning
invalid_policyboruna_runserialization0.2.0Non-object policy input (string typo, array, number) was supplied. Object-form input that fails strict validation surfaces as a policy.* kind instead.
invalid_output_schemaboruna_runserialization0.4-S16The supplied output JSON-schema is malformed or the run’s output does not validate against it.
unsupported_limitboruna_runserialization0.4-S15A limits.* field is set to a value this binary cannot enforce yet.
parse_errorboruna_workflow_validate, boruna_compileserialization0.2.0Input JSON / source could not be parsed at the lexer or serde stage.
serialization_errorboruna_compileserialization0.2.0AST or compile output could not be serialized for return; internal-encoding failure.
validation_errorboruna_workflow_validateoutput_validation0.2.0Workflow JSON parsed but failed structural validation (cycle, missing field, unknown step reference).
validation_failedboruna_runoutput_validation0.4-S16Run output failed JSON-schema validation. Response body carries per-path errors.
runtime_errorboruna_runexecution0.2.0VM error during execution — capability denied, type mismatch, etc. The error field carries the message.
limit_exceededboruna_runexecution / serialization0.4-S15A configured limit was hit. limit_kind discriminates: step_limit, wall_ms (execution), output_bytes (serialization).
framework_errorboruna_validate_app, boruna_framework_testexecution0.2.0Framework App protocol validation or test-harness error (init/update/view shape mismatch, message dispatch failure).
template_errorboruna_template_applyexecution0.2.0Template substitution failed (missing variable, unknown template, manifest-validation failure at apply time).
invalid_argsboruna_template_applyserialization0.2.0Template --args payload could not be parsed as key=value pairs.

Conventions

  • All error_kind strings are dotted, lower-snake-case, and hierarchical (<namespace>.<short_kind>). The namespace identifies the surface (evidence reader, workflow loader, policy validator, MCP top-level).
  • “Phase” follows the project convention of distinguishing serialization (parse-time / shape rejection) from output_validation (post-execution shape rejection) from execution (runtime failures). N/A means the kind is a control-flow / policy-gate decision rather than a shape error.

Cross-references