Markdown for LLMs
Build a bridge between acts
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# Build a bridge between acts
## Intent
I want to use a public result of a neighbouring package.
## Wrong form and why it stays silent
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.
```law title="Incorrect form"
import recipe.dependency version "1.0.0" as dep;
pub entity Person;
```
## Correct form
```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); }
```
## Frozen execution scene
Below is a minimal reproducible scene.
| World and facts | Answer accepted |
|---|---|
| interface, filed | NEITHER |
| merged world, filed | TRUE_ONLY |
| merged world without filed | NEITHER |
| owner removed pub from approved | E1105 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):
```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:
```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:
```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;
}
```
## Counterfactual
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”.
## Boundary
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.
## Pitfall
An empty dependency world stays silent; pub is added at the owner.