Skip to content
docs
Arxo ↗

Distinguish overdue from waiting for the deadline

For LLMs6 sections

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

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.

Arxo 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]; };
}
Facts and snapshotQuestionAnswer
before the window; 2026-08-31positions()position(Main, PENDING);
before the deadline; 2026-09-05positions()position(Main, ACTIVE);
last day; 2026-09-10positions()position(Main, ACTIVE);
after the deadline; 2026-09-11positions()position(Main, VIOLATED);
after the deadline without a failure; 2026-09-11positions()position(Main, UNDETERMINED);
pending before window
Arxo 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;
}
active before deadline
Arxo 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;
}
active on closing day
Arxo 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;
}
violated after deadline
Arxo 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;
}
undetermined after deadline without failure
Arxo 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;
}

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

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.

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

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