# Move a rule onto the edition in force ## Intent I want to execute a norm from the edition in force. ## Wrong form and why it stays silent A fragment with current text cannot be placed in a non-existent edition; the date is determined by its real owner. ```text title="Incorrect form" fragment CurrentF in Missing ``` ## Correct form ```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); } ``` ## Frozen execution scene 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. ```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. ```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. ```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. ```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; } ``` ## Counterfactual The `teaches` mutation reproduces `LDC-E5102`. Additional variants are checked by the shown adapter call. ## Boundary Moving an anchor is allowed after checking the ground of the norm in the new edition; mechanical removal of an anchor hides the date. ## Pitfall A normative node is excluded if all of its dating editions are inapplicable. This is not disappearance of a case fact.