Every Aura diagnostic carries a stable code, which makes it easy to grep for in CI
logs and to refer to in discussion. E is an error, W a warning — and under
--strict warnings block too.
Raised at the boundary between a manifest and the application that embeds it.
E0001-E0006 carry no source position, because nothing was parsed yet;
E0007-E0009 point at the call in the script (D35).
Code Meaning How to fix it
E0001 the host could not open a file, or aura.lock is unreadable the message carries the underlying I/O error
E0002 the script exports nothing by that name check the name; only : properties and pub def are exports
E0003 the export is not a function bind it with get, not function or call
E0004 the function takes a different number of arguments checked when the function is bound, before any call
E0005 an argument has no exact Aura value an integer past i64, a NaN or an infinity, a byte string; refused rather than coerced
E0006 the result does not match the host’s type the message names the path inside the value where it did not
E0007 the script imports or calls a host function the host did not provide a host: module is provided by the application at run time, so aura eval stops here; aura check lists what the script needs
E0008 a host function returned an error the message is the application’s; the script cannot recover from it
E0009 a host function was called with the wrong number of arguments (at load) or the wrong types (at the call), or returned a value Aura cannot hold the message names the function
E0010 a script was called from inside one of its own host functions not allowed (D35): return a value to the script instead
E0011 a reload would change what the script exports: an export removed, or its kind or number of arguments changed the host may have bound it, so the old version keeps serving (D36); restart to change the exports
Code Meaning How to fix it
E0101 no digit after the decimal point (12.) write 12.0 or 12
E0102 a string left unclosed at end of line Aura strings are single-line; close the "
E0103 an integer literal does not fit in i64
E0104 a registry import without a version import a/b@v1 as x — the version is mandatory (D8)
E0105 unexpected character
E0106 an unclosed #{ interpolation
E0107 an unterminated block string close it with end at the opener’s indentation (D16)
E0108 a digit separator is misplaced _ groups by threes away from the point: 10_000_000, 0.000_001 — never 100_, 1__0 or 2_3_7_1_9_3_3
Code Meaning How to fix it
E0200 a specific token was expected the message names which
E0201 a v1.1 inline block (metrics port: 9090) use an object block: metrics: … end (D3)
E0203 a missing end or ]
E0204 an expression was expected
E0205 statements are separated by line breaks
E0206 pub not immediately before def, type or enumproperties export themselves; = is always private
E0207 a cond with no else arm add else -> ...: every branch must produce a value (D14)
E0208 nesting too deep the recursion limit that makes deeply-nested input an error rather than a stack overflow; a chain like a + b + c counts its length (D42)
E0211 an enum member is not a quoted string members are listed as strings, one per line (D18)
E0212 a duplicate enum member list each member once
E0213 an enum with no members an empty set cannot be satisfied
E0214 a value is computed and thrown away a bare expression outside the end of a function goes nowhere; write key:, name = or assert (D40)
E0215 a body has properties and also ends in a value a function returns one or the other; make the value a property, or drop the properties (D40)
Code Meaning How to fix it
E0301 assigned twice — values are immutable use a new name, or a nested scope
E0302 shadowing an outer variable without the marker shadow x = ... (D7)
W0303 shadow shadows nothingdrop the shadow
E0304 integer arithmetic overflowed use Float, or reconsider the magnitudes
E0305 division by zero
E0306 an operand of the wrong type conditions must be Bool; there is no truthiness
E0307 a non-scalar in interpolation or join serialise it explicitly with .to_json()
E0308 unknown object field a typo? use .get(key, default) for optional ones
E0309 unknown method see the method reference; a package’s function fields are called the same way
E0310 missing capability the error names the flag you need (D1)
E0311 a path outside the directories allowed by --allow-read
E0312 fewer arguments passed than the function has parameters
E0313 a file read failed (I/O)
E0314 malformed TOML, JSON or YAML while parsing
E0315 a method that needs a lambda (map, filter) did not get one
E0316 a malformed expression inside #{...}
E0317 a list index out of range, or first() / last() on an empty list use .get(i, default)
E0318 obj["key"] — brackets are not allowed on objectsuse the dotted form: obj."key" (D11)
E0319 a malformed duration the format is "1h30m", units d/h/m/s
E0320 a malformed date RFC 3339: "2026-07-18T12:00:00Z"
E0321 malformed base64 base64_decode() on input that is not base64
E0322 a concatenated list or string exceeds its size limit + doubles: 1M elements / 16 MiB is the ceiling
E0323 to_object() got the same key twicea silent overwrite would depend on element order; deduplicate first
E0324 null rendered as textinterpolation and to_str() must agree; say what the empty case prints (D31)
E0325 an evaluation ran out of its step budget --max-steps raises it, --stats shows what is spent (D34); in Script, the budget is per call (D33)
E0326 an evaluation ran out of its memory budget --max-memory raises it; every value and frame created counts (D34)
E0327 zip() got lists of different lengthsa dropped tail would drop configuration silently; cut the longer one with slice first (D39)
E0328 a value nested more than 256 lists and objects deep almost always a loop that wraps its result each turn; build the levels side by side instead (D43)
E0398 internal: a closure’s environment was dropped a bug in Aura — please report it with the manifest
E0399 evaluation nested more than 256 levels almost always a recursive function without the case that stops it; map, filter and reduce walk a list without nesting (D42)
E0533 now() and timestamp() do not existthe host passes time in: env("BUILD_TIME", ...) (D13)
Code Meaning How to fix it
E0401 a cyclic import (the chain is in the message) break the cycle: move shared code into a third module
E0402 a package’s integrity hash does not match aura.lock the package’s contents changed — find out why
E0403 --frozen: no entry in aura.lockrun aura add locally and commit the lock
E0404 module not found, or does not resolve check the path, the version, --registry-dir
E0410 an import the interpreter was handed without the module loader only reachable when embedding the evaluator directly; use facade::eval_file/eval_source, which load modules
Code Meaning How to fix it
W0501 an unused variable dead code — delete it
W0502 an unused import
W0503 an unused function or type if it is a package’s API, mark it pub
E0504 an undeclared variable a declaration must precede its use
E0505 env() or read_file() under --hermeticpass the value in from the host, or drop the flag and grant the capability
E0511 a field the schema requires is missing
E0512 a field’s type does not match the schema Int and Float are different types
E0513 an extra field (--strict only) remove the field, or add it to the schema
E0514 a value outside the enum the hint suggests the nearest member and lists the set (D18)
E0515 a schema invariant does not hold for this instance the schema’s own assert; the message shown is the one it carries
E0516 a default its own field can never accept checked where the schema is declared, not where it is used
W0512 an effectful call in an imported module imports have no I/O rights; reconsider the package’s design
W0513 a nullable field is filled from get(key) or env(name) with no fallback absence becomes null silently; name the fallback, or drop the ?
E0530 an assert failed the message is your own
E0531 fail(...) was called
Code Meaning How to fix it
E0601 a function or schema inside the exported tree the key path is in the message; at the top level pub items are excluded automatically
E0602 a non-finite Float (NaN or Inf)
E0603 a format limitation (TOML has no null; its root must be an object)
E0604 two keys flatten to the same json-flat key a key containing a dot is indistinguishable from a nested path; use --format json, or rename the key