# Establish a violation ## Intention I want to distinguish proven non-performance from missing information. ## Incorrect form and why it stays silent ```text title="Incorrect form" // Срок истёк, done(p) в деле нет: expect position(Main, VIOLATED). ``` A violation requires established absence of achievement. Missing a record does not give negative support; the counterfactual removes exactly the explicit negation. ## Correct form ```law language "law.core" version "0.2"; package recipes.zh.r01 version "0.1.0"; namespace "urn:recipe:zh-violation:01"; 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 | |---|---|---| | failure established; 2026-09-13 | `positions()` | `position(Main, VIOLATED);` | | non-performance not presented; 2026-09-13 | `positions()` | `position(Main, UNDETERMINED);` | | performance established; 2026-09-13 | `positions()` | `position(Main, SATISFIED);` | | mistaken expectation of a violation; 2026-09-13 | `positions()` | `position(Main, VIOLATED);`; expected FAIL | ```law test "established failure violates" { given { context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00+05:00; knowledge_time @2026-09-30T09:00:00+05:00; timezone "Asia/Almaty"; } assert enrolled(entity_ref("urn:recipe:zh-violation:01:p")); assert not done(entity_ref("urn:recipe:zh-violation:01:p")); } evaluate positions(); expect position(Main, VIOLATED); expect evaluation_status == COMPUTED; } ``` ```law test "unclaimed non-performance stays undetermined" { given { context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00+05:00; knowledge_time @2026-09-30T09:00:00+05:00; timezone "Asia/Almaty"; } assert enrolled(entity_ref("urn:recipe:zh-violation:01:p")); } evaluate positions(); expect position(Main, UNDETERMINED); expect evaluation_status == COMPUTED; } ``` ```law test "established performance satisfies" { given { context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00+05:00; knowledge_time @2026-09-30T09:00:00+05:00; timezone "Asia/Almaty"; } assert enrolled(entity_ref("urn:recipe:zh-violation:01:p")); assert done(entity_ref("urn:recipe:zh-violation:01:p")); } evaluate positions(); expect position(Main, SATISFIED); expect evaluation_status == COMPUTED; } ``` ```law test "mistaken violation expectation" { given { context { legal_time @2026-09-13; decision_time @2026-09-13T09:00:00+05:00; knowledge_time @2026-09-30T09:00:00+05:00; timezone "Asia/Almaty"; } assert enrolled(entity_ref("urn:recipe:zh-violation:01:p")); } evaluate positions(); expect position(Main, VIOLATED); expect evaluation_status == COMPUTED; } ``` ## Counterfactual Diagnostic mutation deleting the duty-holder line: LDC-E1305. Semantic differences are pinned as separate scenes. ## Boundary Here the explicit non-performance fact applies to the whole achievement window. Raw action records are first bound to time; absence of an event in an incomplete journal is not such a fact.