docs← Back to article

Markdown for LLMs

Distinguish overdue from waiting for the deadline

The source Markdown for this article. Copy it into your assistant or download it as a text file.

Download this articlePlain text ↗
# Distinguish overdue from waiting for the deadline

## Intention

I want to check the status at the deadline boundary when non-performance is known.

## Incorrect form and why it stays silent

```text title="Incorrect form"
// Явное not done(p) уже до срока означает VIOLATED.
```

Non-performance before due time is not yet overdue. The closed end is included in the window; the status change comes after it.

## Correct form

```law
language "law.core" version "0.2";
package recipes.zh.r02 version "0.1.0";
namespace "urn:recipe:zh-violation:02";

entity Person;
relation enrolled(p: Person);
relation done(p: Person);
rule Primary defeasible { for p: Person; when enrolled(p);
    then duty Main { bearer p; achieve done(p) during [@2026-09-01, @2026-09-10]; };
}
```

## Frozen execution scene

| Facts and snapshot | Question | Answer |
|---|---|---|
| before the window; 2026-08-31 | `positions()` | `position(Main, PENDING);` |
| before the deadline; 2026-09-05 | `positions()` | `position(Main, ACTIVE);` |
| last day; 2026-09-10 | `positions()` | `position(Main, ACTIVE);` |
| after the deadline; 2026-09-11 | `positions()` | `position(Main, VIOLATED);` |
| after the deadline without a failure; 2026-09-11 | `positions()` | `position(Main, UNDETERMINED);` |

```law
test "pending before window" {
    given {
        context {
            legal_time @2026-08-31;
            decision_time @2026-08-31T09:00:00+05:00;
            knowledge_time @2026-09-30T09:00:00+05:00;
            timezone "Asia/Almaty";
        }
        assert enrolled(entity_ref("urn:recipe:zh-violation:02:p")); assert not done(entity_ref("urn:recipe:zh-violation:02:p"));
    }
    evaluate positions();
    expect position(Main, PENDING);
    expect evaluation_status == COMPUTED;
}
```

```law
test "active before deadline" {
    given {
        context {
            legal_time @2026-09-05;
            decision_time @2026-09-05T09:00:00+05:00;
            knowledge_time @2026-09-30T09:00:00+05:00;
            timezone "Asia/Almaty";
        }
        assert enrolled(entity_ref("urn:recipe:zh-violation:02:p")); assert not done(entity_ref("urn:recipe:zh-violation:02:p"));
    }
    evaluate positions();
    expect position(Main, ACTIVE);
    expect evaluation_status == COMPUTED;
}
```

```law
test "active on closing day" {
    given {
        context {
            legal_time @2026-09-10;
            decision_time @2026-09-10T12:00:00+05:00;
            knowledge_time @2026-09-30T09:00:00+05:00;
            timezone "Asia/Almaty";
        }
        assert enrolled(entity_ref("urn:recipe:zh-violation:02:p")); assert not done(entity_ref("urn:recipe:zh-violation:02:p"));
    }
    evaluate positions();
    expect position(Main, ACTIVE);
    expect evaluation_status == COMPUTED;
}
```

```law
test "violated after deadline" {
    given {
        context {
            legal_time @2026-09-11;
            decision_time @2026-09-11T09:00:00+05:00;
            knowledge_time @2026-09-30T09:00:00+05:00;
            timezone "Asia/Almaty";
        }
        assert enrolled(entity_ref("urn:recipe:zh-violation:02:p")); assert not done(entity_ref("urn:recipe:zh-violation:02:p"));
    }
    evaluate positions();
    expect position(Main, VIOLATED);
    expect evaluation_status == COMPUTED;
}
```

```law
test "undetermined after deadline without failure" {
    given {
        context {
            legal_time @2026-09-11;
            decision_time @2026-09-11T09:00:00+05:00;
            knowledge_time @2026-09-30T09:00:00+05:00;
            timezone "Asia/Almaty";
        }
        assert enrolled(entity_ref("urn:recipe:zh-violation:02:p"));
    }
    evaluate positions();
    expect position(Main, UNDETERMINED);
    expect evaluation_status == COMPUTED;
}
```

## Counterfactual

Diagnostic mutation `achieve done(p) during [@2026-09-01, @2026-09-10];` → `achieve done(p);`: LDC-E0201. Semantic differences are pinned as separate scenes.

## Boundary

Anticipatory breach is a separate rule of the legal order. It does not arise from negative support before the deadline. Postponements and working days are covered by the time recipes.