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.
# 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.