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