# State a transitional exception explicitly ## Intention I want to keep the former permission for old relations during a transitional year. ## Incorrect form and why it stays silent Two opposite norms without a declared advantage are not chosen by age: ```text title="Incorrect form" // Transition и NewOrder есть, TransitionWins отсутствует. ``` ## Correct form ```law language "law.core" version "0.2"; package recipes.e.r05 version "0.1.0"; namespace "urn:recipe:e-time:05"; entity Person; relation registered(p: Person); relation began(p: Person, on: Date); relation permitted(p: Person); rule NewOrder defeasible { effective [@2026-01-01, infinity); for p: Person; when registered(p); then not permitted(p); } rule Transition defeasible { effective [@2026-01-01, @2027-01-01); for p: Person; for on: Date; when registered(p) and began(p, on) and on < @2026-01-01; then permitted(p); } priority TransitionWins { prefer Transition over NewOrder; reason explicit_exception; } ``` ## Frozen execution scene | Facts / cut | Question | Answer | |---|---|---| | old relation, 2026 | permitted | TRUE_ONLY | | new relation, 2026 | permitted | FALSE_ONLY | | old relation, 2027 | permitted | FALSE_ONLY | | old relation, no priority | permitted | BOTH | ```law test "old relation keeps transition" { given { context { legal_time @2026-06-01; decision_time @2027-12-31T09:00:00+05:00; knowledge_time @2027-12-31T09:00:00+05:00; timezone "Asia/Almaty"; } assert registered(entity_ref("urn:recipe:e-time:05:a")); assert began(entity_ref("urn:recipe:e-time:05:a"), @2025-12-01); } evaluate truth(permitted(entity_ref("urn:recipe:e-time:05:a"))); expect truth_status == TRUE_ONLY; } ``` ```law test "new relation follows new order" { given { context { legal_time @2026-06-01; decision_time @2027-12-31T09:00:00+05:00; knowledge_time @2027-12-31T09:00:00+05:00; timezone "Asia/Almaty"; } assert registered(entity_ref("urn:recipe:e-time:05:a")); assert began(entity_ref("urn:recipe:e-time:05:a"), @2026-02-01); } evaluate truth(permitted(entity_ref("urn:recipe:e-time:05:a"))); expect truth_status == FALSE_ONLY; } ``` ```law test "expired transition stops applying" { given { context { legal_time @2027-01-01; decision_time @2027-12-31T09:00:00+05:00; knowledge_time @2027-12-31T09:00:00+05:00; timezone "Asia/Almaty"; } assert registered(entity_ref("urn:recipe:e-time:05:a")); assert began(entity_ref("urn:recipe:e-time:05:a"), @2025-12-01); } evaluate truth(permitted(entity_ref("urn:recipe:e-time:05:a"))); expect truth_status == FALSE_ONLY; } ``` ```law test "missing priority yields both" { given { context { legal_time @2026-06-01; decision_time @2027-12-31T09:00:00+05:00; knowledge_time @2027-12-31T09:00:00+05:00; timezone "Asia/Almaty"; } assert registered(entity_ref("urn:recipe:e-time:05:a")); assert began(entity_ref("urn:recipe:e-time:05:a"), @2025-12-01); } evaluate truth(permitted(entity_ref("urn:recipe:e-time:05:a"))); expect truth_status == BOTH; } ``` ## Counterfactual runs.without removes TransitionWins and gets BOTH. teaches separately pins rejection of a double effective, so the transition window is not replaced by a second line. ## Boundary Transitional law is set by the act. It is not chosen automatically by an earlier edition and does not mean lex mitior; the edition axis of analysis is a different question. ## Pitfall Continuation of the former regulation is expressed as a separate norm; the year boundary and the advantage must be explicit.