docs← Back to article

Markdown for LLMs

LDC-E1343 — Event constructor misses required fields

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

Download this articlePlain text ↗
# LDC-E1343 — Event constructor misses required fields

## What it means

An event value is a complete record: the identifier and the timestamp
are mandatory on every constructor, and every non-optional field the
event type declares must be given. A constructor that omits a required
field, sets one twice, or carries a field the type never declared
describes no event, so the compiler stops at the constructor.

The repair is to complete the record: set the identifier and the
timestamp, give every required field, and drop what the type does not
declare. A complete constructor denotes exactly one event.

## Example

```law
language "law.core" version "0.2";
package demo.diagnostics version "0.1.0";
namespace "urn:law:demo:diagnostics";

entity Tenant;
const Joe: Tenant = entity_ref("urn:law:demo:diagnostics#Joe");
event Filed {
    tenant: Tenant;
}
const Ev1: Filed = Filed { tenant: Joe };
```

## Fix

```law
language "law.core" version "0.2";
package demo.diagnostics version "0.1.0";
namespace "urn:law:demo:diagnostics";

entity Tenant;
const Joe: Tenant = entity_ref("urn:law:demo:diagnostics#Joe");
event Filed {
    tenant: Tenant;
}
const Ev1: Filed = Filed { id: "ev-1", time: @2026-01-01T00:00:00Z, tenant: Joe };
```

## Engine message

The engine reports this in its own wording:

```text
example.law:10:20: error LDC-E1343: event constructor `urn:law:demo:diagnostics#Filed`: required field `id` is not set (§79.1)
```

## Related

- [Procedures](/constructs/procedure/) — events as the carriers transitions fire on.
- [LDC-E1344](/diagnostics/LDC-E1344/) — a transition must name a declared event.