Skip to content
docs
Arxo ↗

Move a rule onto the edition in force

For LLMs7 sections

I want to execute a norm from the edition in force.

A fragment with current text cannot be placed in a non-existent edition; the date is determined by its real owner.

Incorrect form
fragment CurrentF in Missing
Arxo Law
language "law.core" version "0.2";
package recipe.i07 version "1.0.0";
namespace "urn:recipe:i-sources:07";
source Act { kind policy; }
edition Old of Act { language ru; officiality unofficial; materialization_status ABSTRACT_ONLY; in_force [@2026-01-01, @2026-07-01); }
edition Current of Act { language ru; officiality unofficial; materialization_status ABSTRACT_ONLY; in_force [@2026-07-01, infinity); }
fragment OldF in Old { kind article; locator "article/1"; text ru unofficial """Заявление принимается."""; }
fragment CurrentF in Current { kind article; locator "article/1"; text ru unofficial """Заявление принимается."""; }
entity Person;
relation filed(p: Person);
relation accepted(p: Person);
@source(OldF)
@source(CurrentF)
rule Accept strict { for p: Person; when filed(p); then accepted(p); }

The scenes below compare CurrentF and OldF on 13 September; removing the current anchor from a node with two dating anchors leaves only the closed one.

Python
>>> import runpy
>>> checks = runpy.run_path("docs/recipes/i-sources/resources/check.py")
>>> checks["lifecycle"](https://github.com/arxohq/law/blob/master/docs/recipes/i-sources/7)
True

Scene 1; full program.

two anchors establish on current date
lawtest
language "law.core" version "0.2";
package recipe.i07 version "1.0.0";
namespace "urn:recipe:i-sources:07";
test "two anchors establish on current date" {
given {
context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
assert 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;
}

Scene 2; @source(CurrentF) is removed.

removed current anchor leaves neither
lawtest
language "law.core" version "0.2";
package recipe.i07 version "1.0.0";
namespace "urn:recipe:i-sources:07";
test "removed current anchor leaves 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 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;
}

Scene 3; @source(OldF) is removed.

removed old anchor keeps truth
lawtest
language "law.core" version "0.2";
package recipe.i07 version "1.0.0";
namespace "urn:recipe:i-sources:07";
test "removed old anchor keeps truth" {
given {
context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
assert 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;
}

Scene 4; full program.

old law date still establishes
lawtest
language "law.core" version "0.2";
package recipe.i07 version "1.0.0";
namespace "urn:recipe:i-sources:07";
test "old law date still establishes" {
given {
context { legal_time @2026-06-30; decision_time @2026-09-13T09:00:00Z; knowledge_time @2026-09-13T09:00:00Z; timezone "UTC"; }
assert 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;
}

The teaches mutation reproduces LDC-E5102. Additional variants are checked by the shown adapter call.

Moving an anchor is allowed after checking the ground of the norm in the new edition; mechanical removal of an anchor hides the date.

A normative node is excluded if all of its dating editions are inapplicable. This is not disappearance of a case fact.

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

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