# LDC-E1336 — Expansion reference resolves nothing ## What it means Every instance names the template it instantiates: either a definition from the same file, or a pinned definition from the accompanying context. A reference that matches neither — a typo, or a template that was never declared — leaves the instance with no shape to expand, so the compiler stops at the reference. The repair is a spelling check: point the instance at the defined template, declare the missing definition, or present the pin the manifest promises. A resolved reference expands exactly as written. ## Example ```law language "law.core" version "0.2"; package demo.diagnostics version "0.1.0"; namespace "urn:law:demo:diagnostics"; entity Person; entity Choice; entity SpecialChoice : Choice; entity Other; const Selected: SpecialChoice = entity_ref("urn:choice:selected"); const Wrong: Other = entity_ref("urn:choice:wrong"); relation eligible(p: Person, choice: Choice) kind empirical; relation applicable(p: Person, choice: Choice) kind institutional; expansion fixed { params { subject: binder; choice: value; ground: relation(subject, choice); result: relation(subject, choice); } emit rule self/result defeasible { for subject; when ground(subject, choice); then result(subject, choice); scope from self; effective from self; labels from self; source from self; } } expand ghost Result { label en official "Fixed option"; bind subject = person: Person; choice = Selected; ground = eligible; result = applicable; effective [@2026-01-01, @2027-01-01); } ``` ## Fix ```law language "law.core" version "0.2"; package demo.diagnostics version "0.1.0"; namespace "urn:law:demo:diagnostics"; entity Person; entity Choice; entity SpecialChoice : Choice; entity Other; const Selected: SpecialChoice = entity_ref("urn:choice:selected"); const Wrong: Other = entity_ref("urn:choice:wrong"); relation eligible(p: Person, choice: Choice) kind empirical; relation applicable(p: Person, choice: Choice) kind institutional; expansion fixed { params { subject: binder; choice: value; ground: relation(subject, choice); result: relation(subject, choice); } emit rule self/result defeasible { for subject; when ground(subject, choice); then result(subject, choice); scope from self; effective from self; labels from self; source from self; } } expand fixed Result { label en official "Fixed option"; bind subject = person: Person; choice = Selected; ground = eligible; result = applicable; effective [@2026-01-01, @2027-01-01); } ``` ## Engine message The engine reports this in its own wording: ```text example.law:22:8: error LDC-E1336: expand Result: definition "ghost" does not resolve (§279.1.3) ``` ## Related - [LDC-E1335](/diagnostics/LDC-E1335/) — a template name must be defined exactly once. - [LDC-E1337](/diagnostics/LDC-E1337/) — the instance must honor the definition contract.