Diagnostics catalog

Stable

Every E, W, and D code, what it means, and whether the affected card still renders.

Every problem CardGoblin reports carries a code. The prefix tells you when it was found and what happens next:

PrefixWhen it is raisedWhat you see
ECompiling code, before row data is evaluatedRed squiggle; preview and grid keep their last good result
WCompiling code; suspicious but not fatalWarning squiggle; rendering continues
DGenerating actual cards from rowsRed cell, diagnostic, placeholder, or truncation as listed below

Internal fallback codes E000 and D000 may appear if CardGoblin itself cannot classify an unexpected compiler or generation failure. They are not mistakes users are expected to target directly; preserve the project and report the message.

Compile errors#

CodeMeaningUsual fix
E001Syntax error, including malformed interpolationFix the highlighted spelling, delimiter, indentation, or expression
E002Unknown sheet, Template, enum, column, variable, or other referenceCorrect the name or declare it in the reachable scope
E003Type mismatch, including a value that cannot be interpolatedSupply the type required by that property or expression
E004Bare enum case cannot be resolved from contextQualify it, for example Suit.Rock
E005Duplicate declaration, column, enum case, argument, or propertyKeep one unique declaration/value
E007Contextual keyword used where it is not legalUse the keyword only in its supported property or axis
E008Required property is missing or invalid, or a preset is unknownAdd/fix the named Card or shape property
E009Cyclic let dependency or Template-call dependencyBreak the dependency path printed in the message
E010Template composition exceeds 64 active calls or 10,000 call-reached nodes per Card faceRemove recursion or flatten/reduce the composition graph

E006 is intentionally retired. Unknown literal icon codes were downgraded to W004 because Dicier's curated code list is not exhaustive.

Compile warnings#

CodeMeaningUsual fix
W001A binding shadows another bindingRename one when the overlap is accidental
W002A declaration is unusedRemove it or reference it; top-level lets that validly resolve to Text as alias targets, and their global dependencies, are exempt
W003Explicit y_units makes units non-squarePrefer y_units: auto unless stretching is deliberate
W004Literal Icon code or inline Dicier marker is not in the known listCheck the spelling; it may still be a valid uncatalogued glyph
W005Literal asset: image or inline asset marker is not in the current Assets libraryUpload it or correct the asset name

Warnings never replace a card with a placeholder.

Data diagnostics#

D001D003 identify a source cell, flag it red, and replace every affected card with a labelled placeholder. The other codes have no single source cell and use the posture stated in the table.

CodeMeaningResult
D001Cell value is not a case of its enum columnAffected cards become placeholders
D002Cell is not numeric in a Number columnAffected cards become placeholders
D003An edited row has an empty Number or enum cell that generated content needsAffected cards become placeholders
D004Repeat count is negative/non-integer, or the cumulative budget exceeds 500 expansionsAffected card becomes a placeholder; no partial face is kept
D005A computed Icon code or inline marker is unknownDiagnostic only; the failed ligature/raw marker remains visible
D006count: is negative, non-integer, or cannot be evaluatedOne placeholder for that row × loop-case combination
D007One Card: block exceeds 2,000 physical instancesThat block is truncated and generation continues
D008Numeric evaluation is non-finite, such as division by zeroAffected card becomes a placeholder
D009QR data exceeds the selected error-correction level's maximum capacityAffected card becomes a placeholder
D010Runtime Template composition exceeds 64 active calls or 10,000 call-reached nodes for one face/copyAffected card becomes a placeholder
D011A resolved-text alias has no top-level target, has a statically non-Text target, or could not be prepared as a valid targetDiagnostic only; the raw {alias:name} marker stays visible and the card renders

See Errors & diagnostics for how these states look in the editor and how last-good preview behavior protects the rest of the deck. Data errors raised while evaluating an otherwise valid Text alias keep their own code and result (for example, D003 still makes a placeholder); they are not remapped to D011.