Skip to content
docs
Arxo ↗

LDC-E1342 — Priority role the definition never exports

For LLMs5 sections

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.

Arxo 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;
}
Arxo 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);
}

The engine reports this in its own wording:

Output
example.law:32:32: error LDC-E1342: priority P1: role Result.ghost is not exported by the definition (§279.1.6)

Documentation for Arxo. Writings — blog.arxo.io.

Anonymous visit counts on stats.arxo.io, no cookies.