Markdown for LLMs
State a transitional exception explicitly
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# 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.