Skip to content
docs
Arxo ↗

Build a bridge between acts

For LLMs7 sections

I want to use a public result of a neighbouring package.

If pub is removed from the owner’s approved, that package still compiles, but the consumer’s lower rejects the reference: LDC-E1105. With the interface alone, without the owner’s rules in the world, the result remains NEITHER. The adapter checks both cases. An extra static mutation below reminds that an import alias is reserved.

Incorrect form
import recipe.dependency version "1.0.0" as dep;
pub entity Person;
Arxo Law
language "law.core" version "0.2";
package recipe.i09 version "1.0.0";
namespace "urn:recipe:i-sources:09";
pub entity Person;
pub relation filed(p: Person);
pub relation approved(p: Person);
pub rule Approve strict { for p: Person; when filed(p); then approved(p); }

Below is a minimal reproducible scene.

World and factsAnswer accepted
interface, filedNEITHER
merged world, filedTRUE_ONLY
merged world without filedNEITHER
owner removed pub from approvedE1105 on consumer lower
Python
>>> import runpy
>>> checks = runpy.run_path("docs/recipes/i-sources/resources/check.py")
>>> checks["imports"](https://github.com/arxohq/law/blob/master/docs/recipes/i-sources/9)
True

Consumer (a separate package; the adapter compiles it with an export context):

Arxo Law
language "law.core" version "0.2";
package recipe.consumer9 version "1.0.0";
namespace "urn:recipe:i-sources:09:consumer";
import recipe.i09 version "1.0.0";
relation accepted(p: recipe.i09::Person);
rule Bridge strict { for p: recipe.i09::Person; when recipe.i09::approved(p); then accepted(p); }

Interface world:

interface without rules answers neither
lawtest
language "law.core" version "0.2";
package recipe.consumer9 version "1.0.0";
namespace "urn:recipe:i-sources:09:consumer";
test "interface without rules answers neither" {
given {
context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
assert recipe.i09::filed(entity_ref("urn:recipe:i-sources:person"));
}
evaluate truth(accepted(entity_ref("urn:recipe:i-sources:person")));
expect truth_status == NEITHER;
expect evaluation_status == COMPUTED;
}

World world:

merged world establishes
lawtest
language "law.core" version "0.2";
package recipe.consumer9 version "1.0.0";
namespace "urn:recipe:i-sources:09:consumer";
test "merged world establishes" {
given {
context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
assert recipe.i09::filed(entity_ref("urn:recipe:i-sources:person"));
}
evaluate truth(accepted(entity_ref("urn:recipe:i-sources:person")));
expect truth_status == TRUE_ONLY;
expect evaluation_status == COMPUTED;
}
test "merged world without fact answers neither" {
given {
context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
}
evaluate truth(accepted(entity_ref("urn:recipe:i-sources:person")));
expect truth_status == NEITHER;
expect evaluation_status == COMPUTED;
}

The teaches mutation reproduces LDC-E0206. Additionally the adapter removes pub → E1105, changes the bytes of the pinned owner → E1104, and drops the resolve context → E1104. These are three different refusals, not one “import does not work”.

The page shows the owner of the exports. The consumer and its context are synthetic resources of this same book. An import supplies an interface; participation of rules requires presenting a world.

Here a minimal checkable witness is left.

An empty dependency world stays silent; pub is added at the owner.

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

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