Markdown for LLMs
NON_EXECUTABLE — The question calls something with no executable meaning
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# NON_EXECUTABLE — The question calls something with no executable meaning
## What it means
Packages can declare boundaries: functions or relations whose signature
is fixed but whose computation belongs to a system outside the package.
Calls into such a boundary have a type but no runnable body here. When a
question depends on one of those calls, the engine cannot execute it and
says so, instead of inventing a value.
This status is about executability, not truth. The question may be
perfectly well-formed; there is simply no computation behind one of its
steps in this setup.
## When you see it
```law
language "law.core" version "0.2";
package demo.diagnostics version "0.1.0";
namespace "urn:law:demo:diagnostics";
entity Applicant;
relation resident(a: Applicant) kind empirical;
relation high_risk(a: Applicant) kind institutional;
external opaque function risk_score(a: Applicant) -> Decimal {
capability "demo-risk";
}
rule RiskFlag strict {
for a: Applicant;
when resident(a) and risk_score(a) >= 2;
then high_risk(a);
}
```
```lawtest
language "law.core" version "0.2";
package demo.diagnostics version "0.1.0";
namespace "urn:law:demo:diagnostics";
test "opaque call is not executable" {
given {
context { legal_time @2026-03-01; decision_time @2026-03-01T09:00:00Z; knowledge_time @2026-03-01T09:00:00Z; timezone "UTC"; }
assert resident(entity_ref("urn:demo:diagnostics:ann")) { origin case_input; }
}
evaluate truth(high_risk(entity_ref("urn:demo:diagnostics:ann")));
expect evaluation_status == NON_EXECUTABLE;
}
```
The scoring function is declared but computed elsewhere. The flag that
depends on its value cannot be derived here.
## What to do
Either connect the boundary to the system that computes it, so the call
has a value, or reframe the question to avoid the unexecutable step. Do
not work around it by asserting the call's value by hand unless that value
genuinely comes from the owning system.
## Related
- [Testing a package](/language/testing-a-package/) — how scenarios pin outcomes.
- [EXTERNAL_UNAVAILABLE](/diagnostics/EXTERNAL_UNAVAILABLE/) — when the outside dataset is missing.