# LDC-E1342 — Priority role the definition never exports ## What it means A priority may order generated rules through the roles their template exports: `Instance.role` names the rule the definition assigned to that role. A role the definition never exported resolves to no rule, and an edge into the void would read as law as written — so the compiler stops at the side instead. The repair is to export the role from the definition, or to point the priority at a role that is exported. Every side then lands on a rule that exists. ## 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); } exports { outcome = self/result; } 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); } priority P1 { prefer Result.outcome over Result.ghost; reason explicit_exception; } ``` ## 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:32:32: error LDC-E1342: priority P1: role Result.ghost is not exported by the definition (§279.1.6) ``` ## Related - [Priority](/constructs/priority/) — edges and the rules they may order. - [LDC-E1336](/diagnostics/LDC-E1336/) — an instance must resolve to exactly one definition.