docs← Back to article

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.

Download this articlePlain text ↗
# 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.