Markdown for LLMs
LDC-E1347 — Transition carrier of a non-event type
The source Markdown for this article. Copy it into your assistant or download it as a text file.
# LDC-E1347 — Transition carrier of a non-event type
## What it means
A transition carries an event: the record in the carrier slot must be
built from an event type or a subtype of the event family, with the
identifier and timestamp the history is ordered by. A constructor from
any other type — a plain record, a memo, anything without that shape —
yields a fact no history can read, so the compiler stops at the
constructor.
The repair is to carry an event: build the constructor from a declared
event with its required fields. A well-carried transition reads under
every history.
## 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");
record Memo {
subject: Text;
}
procedure Review(t: Tenant) {
state Open initial;
state Closed terminal;
transition Decide {
from Open;
to Closed;
}
}
assert attempted_transition(Joe, Decide,
Memo { subject: "note" });
```
## 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;
}
procedure Review(t: Tenant) {
state Open initial;
state Closed terminal;
transition Decide {
from Open;
to Closed;
}
}
assert attempted_transition(Joe, Decide,
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:19:30: error LDC-E1347: transition carrier: type constructor "Memo" is not a §79 event and not an `Event` subtype — it has neither the `id` the §79.1 value table is collected by, nor `time` whose start orders the §161.1 history
```
## Related
- [Procedures](/constructs/procedure/) — transitions and the carriers they fire on.
- [LDC-E1343](/diagnostics/LDC-E1343/) — the fields an event constructor must set.