docs← Back to article

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.

Download this articlePlain text ↗
# 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.