# LDC-E1344 — Transition on a non-event name ## What it means A transition fires on a carrier: the `on` clause must name an event or an action declaration, the only types that occur in a history. A name that resolves to a relation, a constant, or anything else names no carrier — the transition could never occur — so the compiler stops at the name. The repair is to declare the event or action, or to point the clause at one that exists. A transition over a real carrier fires exactly when its history says so. ## Example ```law language "law.core" version "0.2"; package demo.diagnostics version "0.1.0"; namespace "urn:law:demo:diagnostics"; entity Tenant; relation paid(t: Tenant) kind institutional; procedure Review(t: Tenant) { state Open initial; state Closed terminal; transition Decide { from Open; to Closed; on paid; } } ``` ## Fix ```law language "law.core" version "0.2"; package demo.diagnostics version "0.1.0"; namespace "urn:law:demo:diagnostics"; entity Tenant; relation paid(t: Tenant) kind institutional; event Filed { tenant: Tenant; } procedure Review(t: Tenant) { state Open initial; state Closed terminal; transition Decide { from Open; to Closed; on Filed; } } ``` ## Engine message The engine reports this in its own wording: ```text example.law:13:12: error LDC-E1344: transition: name `paid` in the `on` clause does not resolve to a §79 event declaration or a §80 action — no carrier of such a type exists, and the transition would not occur under any history (§160.1) ``` ## Related - [Procedures](/constructs/procedure/) — states, transitions, and what fires them. - [LDC-E1343](/diagnostics/LDC-E1343/) — the fields an event constructor must set.