Skip to content

Error Codes

When the CLI fails, it returns a structured error code you can search for in docs or share with the team.

Errors are reported as:

  • code (e.g., E201)
  • message (human explanation)
  • sometimes a path (where it failed in the spec)
CodeMeaning
E100YAML Syntax Error
E101Missing Required Section
E102Unknown Section
E103Type Mismatch During Deserialization
E200Missing Required Field
E201Invalid Field Type
E202Invalid Enum Value
E203Missing Probability (Manual Distribution)
E401Unknown Package Reference
E402Unknown Module Reference
E403Circular Import Detected
E404Equipment Item Without Equipment Block
E405Duplicate Package Path
E409Conflicting Inline Block and Explicit Link
E410Missing Required Name in Inline String Block
E414Relative Import Escapes Package
E501Unknown Definition Reference
E502Circular Definition Inheritance
E503Definition Depth Exceeds Limit
E504Ambiguous Definition Reference
E505Non-Scalar Mapping Key
E506Unsupported YAML Feature
E507Unknown Directive
E508Invalid Definition Type
E509Duplicate Definition
E510Invalid Definition Name
E511Invalid $remove Directive
E512Exported Definition Not Found
E520Unknown Variable Reference
E523Type Error in Variable Access
E524Index Out of Range
E525Missing Object Property
E532Invalid Variable Name
E533Duplicate Variable Declaration
E534Invalid Variable Type
E535Exported Variable Not Found
E536Imported Variable Not Exported
E540$with Without $extends
E541Invalid $with Value
E542Invalid $with Binding Name
E543Invalid $with Binding Value
E544Missing Required Parameter
E545Invalid $params Declaration
  • E1xx Parse errors
  • E2xx Schema / validation errors
  • E4xx Import / module / inline expansion errors (including E405 workspace validation, E409/E410 inline block validation, E414 boundary validation)
  • E5xx Definition, expansion, variable, parameter binding, and filter errors
Section titled “E409: Conflicting Inline Block and Explicit Link”

An enchantPassivityCategories create or upsert operation specifies both passivityLink and a passivities inline block. Only one is allowed — the inline block auto-assembles the link.

enchantPassivityCategories:
create:
- enchantPassivityCategoryId: 120314
passivityLink: "99000001" # E409 - cannot combine with passivities
passivities:
create:
- id: 99000001
category: Equipment
name: "passive"
kind: 1
value: 100.0

Remove either passivityLink or passivities. When using the inline block, the link is computed automatically.

E410: Missing Required Name in Inline String Block

Section titled “E410: Missing Required Name in Inline String Block”

A passivityStrings inline block on a create or upsert passivity operation is missing the required name field.

passivities:
create:
- category: Equipment
id: 100001
name: "passive"
kind: 1
value: 100.0
passivityStrings:
tooltip: "Some tooltip" # E410 - missing 'name'

Add name to the passivityStrings block. The name field is required for create and upsert; updates do not require it.

Indexed variable access requires the variable to be the correct type:

variables:
HP: 100
items:
create:
- id: 1
value: $HP[$idx] # E523: HP is not an array

Variants: expected array, expected integer (for index), expected mapping (for property access).

Array index exceeds the variable’s array length:

variables:
STEPS: [10, 20, 30]
IDX: 5
items:
create:
- id: 1
step: $STEPS[$IDX] # E524: index 5, but array has 3 elements

Property access on an array element references a property that doesn’t exist on the mapping:

# E525: property 'missing' not found on object

The variable name does not match [A-Za-z_][A-Za-z0-9_]* or uses a reserved name:

variables:
extends: foo # E532: 'extends' is reserved

Reserved names: extends, remove, with, params.

The same variable name appears twice in one module’s variables: section:

variables:
HP: 100
HP: 200 # E533

Note: YamlDotNet may reject duplicate YAML keys at the parser level before this validation runs.

Variable value is a mapping or a list containing non-scalar elements:

variables:
STATS:
hp: 100
mp: 50 # E534: Mappings not allowed

Variables must be scalars or flat scalar lists. For complex data reuse, use definitions with $extends.

A variable listed in exports.variables does not exist in the module’s variables: section and is not in its effective imported scope (variables explicitly imported via use.variables):

variables:
BASE_HP: 1000
exports:
variables:
- BASE_HP
- NONEXISTENT # E535: not declared locally or imported

Re-export without import also triggers E535:

imports:
- from: package-a # No use.variables — no variables imported
exports:
variables:
- INTERNAL_VALUE # E535: not in local variables or effective imported scope

See Variables for valid re-export syntax.

A variable requested via use.variables is not listed in the source module’s exports.variables:

imports:
- from: shared/constants.yaml
use:
variables:
- SECRET # E536: Not in source module's exports.variables

See Variables for full variable documentation.

$with requires $extends as a sibling directive:

result:
create:
- id: 1
$with: { X: 2 } # E540: No $extends sibling

$with must be a YAML mapping:

result:
create:
- $extends: Template
$with: not_a_mapping # E541: Expected mapping, found scalar

Binding names must match [A-Za-z_][A-Za-z0-9_]*:

result:
create:
- $extends: Template
$with: { "123bad": 1 } # E542: Invalid binding name

Binding values must be scalars or scalar lists. Mappings and sequences containing non-scalar elements are not allowed:

result:
create:
- $extends: Template
$with:
X:
nested: value # E543: Mappings not allowed

A definition with $params is extended without providing all required parameters:

definitions:
Item:
$params: [SOURCE, TARGET]
source: $SOURCE
target: $TARGET
result:
create:
- $extends: Item
$with: { SOURCE: 1 } # E544: Missing 'TARGET'

Required parameters can be satisfied by $with bindings or file-scoped variables.

$params must be a sequence of valid identifier strings with no duplicates:

definitions:
Item:
$params: not_a_list # E545: Expected sequence of strings
id: 1
definitions:
Item:
$params: [ID, ID] # E545: Duplicate parameter name 'ID'
id: $ID

See Definitions for full $with and $params documentation.