docs← Back to article

Markdown for LLMs

Present an event with a time

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

Download this articlePlain text ↗
# Present an event with a time

## Intention

I want to present an event that actually moves the case into the next stage.

The carrier is the event, not merely its name.

## Incorrect form and why it stays silent

A constructor without a time is rejected with `LDC-E1343`; a place in history is not taken from the decision time.

```law title="Incorrect form"
const filed: Filed = Filed {
    id: "urn:recipe:n-package:01:filed",
    application: entity_ref("urn:recipe:n-package:01:app")
};
```

## Correct form

An `event` has built-in `id` and `time` fields; the declaration below keeps the subject-matter field.

```law
language "law.core" version "0.2";
package recipes.n.r01 version "0.1.0";
namespace "urn:recipe:n-package:01";

entity Application;
event Filed { application: Application; }
procedure Registration(app: Application) {
    state Draft initial;
    state Submitted terminal;
    transition Submit { from Draft; to Submitted; on Filed; }
}
const filed: Filed = Filed {
    id: "urn:recipe:n-package:01:filed",
    time: @2026-09-12T10:00:00+05:00,
    application: entity_ref("urn:recipe:n-package:01:app")
};
```

## Frozen execution scene

| Facts | Question | Answer |
|---|---|---|
| Instance and attempt with a complete `filed` | Case in Submitted? | TRUE_ONLY, COMPUTED |

```law
test "full bearer carries case" {
    given {
        context {
            legal_time @2026-09-13;
            decision_time @2026-09-13T09:00:00+05:00;
            knowledge_time @2026-09-13T09:00:00+05:00;
            timezone "Asia/Almaty";
        }
        assert procedure_instance(entity_ref("urn:recipe:n-package:01:app"));
        assert attempted_transition(entity_ref("urn:recipe:n-package:01:app"), Submit, filed);
    }
    evaluate truth(current_state(entity_ref("urn:recipe:n-package:01:app"), Submitted));
    expect truth_status == TRUE_ONLY;
    expect evaluation_status == COMPUTED;
}
```

## Counterfactual

Deleting the `time` line from the constructor in part 3 is a `teaches` mutation: `check` must yield `LDC-E1343`. This is a static counterfactual; it is not presented as an executable history.

## Boundary

`entity_ref` is valid as a reference, but it does not itself present fields for folding. Deadlines and the policy that turns a date into an instant belong to book E; here an exact instant is given.

## Pitfall

Two procedures with different `on E` once produced identical output because the instance had no executable form. After the constructor was introduced, a missing `time` is a static rejection.